競賽選題 交通目標檢測-行人車輛檢測流量計數 - 競賽選題

文章目錄

  • 0 前言
  • 1\. 目標檢測概況
    • 1.1 什么是目標檢測?
    • 1.2 發展階段
  • 2\. 行人檢測
    • 2.1 行人檢測簡介
    • 2.2 行人檢測技術難點
    • 2.3 行人檢測實現效果
    • 2.4 關鍵代碼-訓練過程
  • 最后

0 前言

🔥 優質競賽項目系列,今天要分享的是

🚩 畢業設計 交通目標檢測-行人車輛檢測流量計數

該項目較為新穎,適合作為競賽課題方向,學長非常推薦!

🥇學長這里給一個題目綜合評分(每項滿分5分)

  • 難度系數:3分
  • 工作量:3分
  • 創新點:4分

🧿 更多資料, 項目分享:

https://gitee.com/dancheng-senior/postgraduate

1. 目標檢測概況

1.1 什么是目標檢測?

目標檢測,粗略來說就是:輸入圖片/視頻,經過處理,得到:目標的位置信息(比如左上角和右下角的坐標)、目標的預測類別、目標的預測置信度(confidence)。

1.2 發展階段

  1. 手工特征提取算法,如VJ、HOG、DPM

  2. R-CNN算法(2014),最早的基于深度學習的目標檢測器之一,其結構是兩級網絡:

  • 1)首先需要諸如選擇性搜索之類的算法來提出可能包含對象的候選邊界框;
  • 2)然后將這些區域傳遞到CNN算法進行分類;
  1. R-CNN算法存在的問題是其仿真很慢,并且不是完整的端到端的目標檢測器。

  2. Fast R-CNN算法(2014末),對原始R-CNN進行了相當大的改進:提高準確度,并減少執行正向傳遞所花費的時間。
    是,該模型仍然依賴于外部區域搜索算法。

  3. faster R-CNN算法(2015),真正的端到端深度學習目標檢測器。刪除了選擇性搜索的要求,而是依賴于

  • (1)完全卷積的區域提議網絡(RPN, Region Purpose Network),可以預測對象邊界框和“對象”分數(量化它是一個區域的可能性的分數)。
  • (2)然后將RPN的輸出傳遞到R-CNN組件以進行最終分類和標記。
  1. R-CNN系列算法,都采取了two-stage策略。特點是:雖然檢測結果一般都非常準確,但仿真速度非常慢,即使是在GPU上也僅獲得5 FPS。

  2. one-stage方法有:yolo(2015)、SSD(2015末),以及在這兩個算法基礎上改進的各論文提出的算法。這些算法的基本思路是:均勻地在圖片的不同位置進行密集抽樣,抽樣時可以采用不同尺度和長寬比,然后利用CNN提取特征后直接進行分類與回歸。
    整個過程只需要一步,所以其優勢是速度快,但是訓練比較困難。

  3. yolov3(2018)是yolo作者提出的第三個版本(之前還提過yolov2和它們的tinny版本,tinny版本經過壓縮更快但是也降低了準確率)。

2. 行人檢測

這里學長以行人檢測作為例子來講解目標檢測。

2.1 行人檢測簡介

行人檢測( Pedestrian
Detection)一直是計算機視覺研究中的熱點和難點。行人檢測要解決的問題是:找出圖像或視頻幀中所有的行人,包括位置和大小,一般用矩形框表示,和人臉檢測類似,這也是典型的目標檢測問題。

行人檢測技術有很強的使用價值,它可以與行人跟蹤,行人重識別等技術結合,應用于汽車無人駕駛系統(ADAS),智能機器人,智能視頻監控,人體行為分析,客流統計系統,智能交通等領域。

2.2 行人檢測技術難點

由于人體具有相當的柔性,因此會有各種姿態和形狀,其外觀受穿著,姿態,視角等影響非常大,另外還面臨著遮擋
、光照等因素的影響,這使得行人檢測成為計算機視覺領域中一個極具挑戰性的課題。行人檢測要解決的主要難題是:

  • 外觀差異大:包括視角,姿態,服飾和附著物,光照,成像距離等。從不同的角度看過去,行人的外觀是很不一樣的。處于不同姿態的行人,外觀差異也很大。由于人穿的衣服不同,以及打傘、戴帽子、戴圍巾、提行李等附著物的影響,外觀差異也非常大。光照的差異也導致了一些困難。遠距離的人體和近距離的人體,在外觀上差別也非常大。

  • 遮擋問題: 在很多應用場景中,行人非常密集,存在嚴重的遮擋,我們只能看到人體的一部分,這對檢測算法帶來了嚴重的挑戰。

  • 背景復雜:無論是室內還是室外,行人檢測一般面臨的背景都非常復雜,有些物體的外觀和形狀、顏色、紋理很像人體,導致算法無法準確的區分。

  • 檢測速度:行人檢測一般采用了復雜的模型,運算量相當大,要達到實時非常困難,一般需要大量的優化。

2.3 行人檢測實現效果

在這里插入圖片描述

檢測到行人后還可以做流量分析:

在這里插入圖片描述

2.4 關鍵代碼-訓練過程

?

import cv2import numpy as npimport randomdef load_images(dirname, amout = 9999):img_list = []file = open(dirname)img_name = file.readline()while img_name != '':  # 文件尾img_name = dirname.rsplit(r'/', 1)[0] + r'/' + img_name.split('/', 1)[1].strip('\n')img_list.append(cv2.imread(img_name))img_name = file.readline()amout -= 1if amout <= 0: # 控制讀取圖片的數量breakreturn img_list# 從每一張沒有人的原始圖片中隨機裁出10張64*128的圖片作為負樣本def sample_neg(full_neg_lst, neg_list, size):random.seed(1)width, height = size[1], size[0]for i in range(len(full_neg_lst)):for j in range(10):y = int(random.random() * (len(full_neg_lst[i]) - height))x = int(random.random() * (len(full_neg_lst[i][0]) - width))neg_list.append(full_neg_lst[i][y:y + height, x:x + width])return neg_list# wsize: 處理圖片大小,通常64*128; 輸入圖片尺寸>= wsizedef computeHOGs(img_lst, gradient_lst, wsize=(128, 64)):hog = cv2.HOGDescriptor()# hog.winSize = wsizefor i in range(len(img_lst)):if img_lst[i].shape[1] >= wsize[1] and img_lst[i].shape[0] >= wsize[0]:roi = img_lst[i][(img_lst[i].shape[0] - wsize[0]) // 2: (img_lst[i].shape[0] - wsize[0]) // 2 + wsize[0], \(img_lst[i].shape[1] - wsize[1]) // 2: (img_lst[i].shape[1] - wsize[1]) // 2 + wsize[1]]gray = cv2.cvtColor(roi, cv2.COLOR_BGR2GRAY)gradient_lst.append(hog.compute(gray))# return gradient_lstdef get_svm_detector(svm):sv = svm.getSupportVectors()rho, _, _ = svm.getDecisionFunction(0)sv = np.transpose(sv)return np.append(sv, [[-rho]], 0)# 主程序# 第一步:計算HOG特征neg_list = []pos_list = []gradient_lst = []labels = []hard_neg_list = []svm = cv2.ml.SVM_create()pos_list = load_images(r'G:/python_project/INRIAPerson/96X160H96/Train/pos.lst')full_neg_lst = load_images(r'G:/python_project/INRIAPerson/train_64x128_H96/neg.lst')sample_neg(full_neg_lst, neg_list, [128, 64])print(len(neg_list))computeHOGs(pos_list, gradient_lst)[labels.append(+1) for _ in range(len(pos_list))]computeHOGs(neg_list, gradient_lst)[labels.append(-1) for _ in range(len(neg_list))]# 第二步:訓練SVMsvm.setCoef0(0)svm.setCoef0(0.0)svm.setDegree(3)criteria = (cv2.TERM_CRITERIA_MAX_ITER + cv2.TERM_CRITERIA_EPS, 1000, 1e-3)svm.setTermCriteria(criteria)svm.setGamma(0)svm.setKernel(cv2.ml.SVM_LINEAR)svm.setNu(0.5)svm.setP(0.1)  # for EPSILON_SVR, epsilon in loss function?svm.setC(0.01)  # From paper, soft classifiersvm.setType(cv2.ml.SVM_EPS_SVR)  # C_SVC # EPSILON_SVR # may be also NU_SVR # do regression tasksvm.train(np.array(gradient_lst), cv2.ml.ROW_SAMPLE, np.array(labels))# 第三步:加入識別錯誤的樣本,進行第二輪訓練# 參考 http://masikkk.com/article/SVM-HOG-HardExample/hog = cv2.HOGDescriptor()hard_neg_list.clear()hog.setSVMDetector(get_svm_detector(svm))for i in range(len(full_neg_lst)):rects, wei = hog.detectMultiScale(full_neg_lst[i], winStride=(4, 4),padding=(8, 8), scale=1.05)for (x,y,w,h) in rects:hardExample = full_neg_lst[i][y:y+h, x:x+w]hard_neg_list.append(cv2.resize(hardExample,(64,128)))computeHOGs(hard_neg_list, gradient_lst)[labels.append(-1) for _ in range(len(hard_neg_list))]svm.train(np.array(gradient_lst), cv2.ml.ROW_SAMPLE, np.array(labels))# 第四步:保存訓練結果hog.setSVMDetector(get_svm_detector(svm))hog.save('myHogDector.bin')

最后

🧿 更多資料, 項目分享:

https://gitee.com/dancheng-senior/postgraduate

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/38618.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/38618.shtml
英文地址,請注明出處:http://en.pswp.cn/web/38618.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

OtterTune dead,參數調優還有DBdoctor

前言 數據庫性能調優這塊必不可少的環節是進行參數調優&#xff0c;數據庫的參數很多&#xff0c;比如Oracle甚至有上千個參數&#xff0c;如何進行參數設置非常關鍵。參數調優需要基于業務的負載模型、硬件配置等多種因素&#xff0c;好的參數調優可以讓數據庫性能整體吞吐提…

Symfony配置管理深度解析:構建可維護項目的秘訣

Symfony是一個高度靈活且功能豐富的PHP框架&#xff0c;它提供了一套強大的配置管理系統&#xff0c;使得開發者能夠輕松定制和優化應用程序的行為。本文將深入探討Symfony中的配置管理機制&#xff0c;包括配置的結構、來源、加載過程以及最佳實踐。 一、配置管理的重要性 在…

Scala類型類(Type Classes):靈活而強大的類型增強術

&#x1f31f; Scala類型類(Type Classes)&#xff1a;靈活而強大的類型增強術 在Scala編程語言中&#xff0c;類型類是一種強大的特性&#xff0c;它允許開發者以類型安全的方式擴展語言。類型類提供了一種機制&#xff0c;可以將行為與類型關聯起來&#xff0c;類似于Java中…

【筆記】Android Settings 應用設置菜單的界面代碼介紹

簡介 Settings應用中&#xff0c;提供多類設置菜單入口&#xff0c;每個菜單內又有各模塊功能的實現。 那么各個模塊基于Settings 基礎的界面Fragment去實現UI&#xff0c;層層按不同業務進行封裝繼承實現子類&#xff1a; DashboardFragmentSettingsPreferenceFragment 功…

植物大戰僵尸雜交版,最新安裝包(PC+手機+蘋果)+ 修改器+高清工具

植物大戰僵尸雜交版&#xff1a;全新游戲體驗與創意碰撞 游戲簡介 《植物大戰僵尸雜交版》是由B站知名UP主潛艇偉偉迷基于經典游戲《植物大戰僵尸》進行的一次大膽且富有創意的二次創作。這款游戲不僅保留了原版游戲的經典玩法&#xff0c;還融入了植物雜交的全新概念&#x…

Qt掃盲-QRect矩形描述類

QRect矩形描述總結 一、概述二、常用函數1. 移動類2. 屬性函數3. 判斷4. 比較計算 三、渲染三、坐標 一、概述 QRect類使用整數精度在平面中定義一個矩形。在繪圖的時候經常使用&#xff0c;作為一個二維的參數描述類。 一個矩形主要有兩個重要屬性&#xff0c;一個是坐標&am…

同步互斥與通信

目錄 一、同步與互斥的概念 二、同步與互斥并不簡單 三、各類方法的對比 一、同步與互斥的概念 一句話理解同步與互斥&#xff1a;我等你用完廁所&#xff0c;我再用廁所。 什么叫同步&#xff1f;就是&#xff1a;哎哎哎&#xff0c;我正在用廁所&#xff0c;你等會。 什…

【實戰場景】記一次UAT jvm故障排查經歷

【實戰場景】記一次UAT jvm故障排查經歷 開篇詞&#xff1a;干貨篇&#xff1a;1.查看系統資源使用情況2.將十進制進程號轉成十六進制3.使用jstack工具監視進程的垃圾回收情況4.輸出指定線程的堆內存信息5.觀察日志6.本地環境復現 總結篇&#xff1a;我是杰叔叔&#xff0c;一名…

線下促銷折扣視頻介紹

千呼新零售2.0系統是零售行業連鎖店一體化收銀系統&#xff0c;包括線下收銀線上商城連鎖店管理ERP管理商品管理供應商管理會員營銷等功能為一體&#xff0c;線上線下數據全部打通。 適用于商超、便利店、水果、生鮮、母嬰、服裝、零食、百貨、寵物等連鎖店使用。 詳細介紹請…

Linux上systemctl 和 service 兩個命令的區別和聯系

systemctl 和 service 兩個命令都是 Linux 系統中用于管理服務的工具&#xff0c;但它們分別關聯著不同的初始化系統&#xff08;init system&#xff09;&#xff0c;并且在功能和使用場景上有所差異。 service 命令 關聯的初始化系統&#xff1a;service 命令通常與 SysV i…

Python從零學習筆記(1)

1pip無法調用 剛入python&#xff0c;需要用到第三方模塊&#xff0c;但是按照教程使用>>>pip install 總是出現錯誤提示 網上查詢許久&#xff1a;語句沒錯&#xff1b;安裝沒錯&#xff1b;環境配置也正常 最后才知道是不能先進入python模式&#xff0c;而是使用p…

2024年道路運輸安全員考試題庫及答案

一、多選題 11.《放射性物品安全管理條例》規定&#xff0c;運輸放射性物品時&#xff0c;應當使用專用的放射性物品運輸包裝容器。在運輸過程中正確的做法有&#xff08; &#xff09;。 A.托運人和承運人應當按照國家放射性物品運輸安全標準和國家有關規定&#xff0c;在…

什么是定時器?

前言&#x1f440;~ 上一章我們介紹了阻塞隊列以及生產者消息模式&#xff0c;今天我們來講講定時器 定時器 標準庫中的定時器 schedule()方法 掃描線程 手動實現定時器 任務類 存儲任務的數據結構 定時器類 如果各位對文章的內容感興趣的話&#xff0c;請點點小贊&am…

【Python】列表

目錄 一、列表的概念 二、列表的創建 1.變量名 [ ] ..... 2.通過Python內置 的I ist類的構造函數來創建列表 三、操作列表元素的方法 1. 修改 2. 增加元素 3. 刪除 4. 其他操作 四、遍歷列表 五、列表排序 六、列表切片&#xff08;list slicing&#xff09; 七、…

淺談什么是計算機科學與技術(Computer Science,CS)

計算機科學的核心內容 計算機科學&#xff08;Computer Science, CS&#xff09;涵蓋了以下主要領域&#xff1a; 硬件&#xff1a;涉及數字電路、集成電路、存儲器和硬件設計與驗證方法等。 例子&#xff1a;學習如何設計和實現一個簡單的CPU&#xff0c;包括理解指令集、時鐘…

值得細讀的8個視覺大模型生成式預訓練方法

作者&#xff1a;vasgaowei&#xff08;已授權原創&#xff09; 編輯: AI生成未來 鏈接&#xff1a;https://zhuanlan.zhihu.com/p/677794719 大語言模型的進展催生出了ChatGPT這樣的應用&#xff0c;讓大家對“第四次工業革命”和“AGI”的來臨有了一些期待&#xff0c;也作為…

Linux基礎指令介紹與詳解——原理學習

前言&#xff1a;本節內容標題雖然為指令&#xff0c;但是并不只是講指令&#xff0c; 更多的是和指令相關的一些原理性的東西。 如果友友只想要查一查某個指令的用法&#xff0c; 很抱歉&#xff0c; 本節不是那種帶有字典性質的文章。但是如果友友是想要來學習的&#xff0c;…

[ALSA]從零開始,使用ALSA驅動播放一個音頻

前言 最近學了不少有關音頻相關的&#xff0c;最近搞一下ALSA驅動 安裝 參考Linux應用開發【第八章】ALSA應用開發 中提到的ALSA庫及工具章節&#xff0c;本文中有比較詳細的有關ALSA驅動引用程序怎么安裝的&#xff0c;這里不再贅述。 關于ALSA&#xff0c;就當成一個音頻…

深入淺出:npm常用命令詳解與實踐【保姆級教程】

大家好,我是CodeQi! 在我剛開始學習前端開發的時候,有一件事情讓我特別頭疼:管理和安裝各種各樣的依賴包。 那時候,我還不知道 npm 的存在,手動下載和管理這些庫簡直是噩夢。 后來,我終于接觸到了 npm(Node Package Manager),它不僅幫我解決了依賴管理問題,還讓我…

Python深度理解系列之【排序算法——冒泡排序】

讀者大大們好呀&#xff01;&#xff01;!?????? &#x1f440;期待大大的關注哦?????? &#x1f680;歡迎收看我的主頁文章??木道尋的主頁 文章目錄 &#x1f525;前言&#x1f680;冒泡排序python實現算法實現圖形化算法展示 ??????總結 &#x1f525;前…