天天看點

智慧城市交通系列之行人、車輛屬性識别方案設計

序言

不知道大家是否還記得前幾年網上流傳着一個視訊非常的火爆(如下),網友稱之為“中國天網”,在它的面前,行人的特征直接暴露無遺,當時看到覺得非常的吃驚,驚訝于目前的監控技術達到了如此高的技術,正也應了那句非常經典的話:天網恢恢,疏而不漏。無奈當時隻是學生身份,看完後隻剩下震撼;而如今從事深度學習算法工作後,再回頭看,發現原來這個是用的神經網絡去實作的,實作起來也不是那麼難嘛。既然不難,那有時間自己整一個?整!!說幹就幹。

智慧城市交通系列之行人、車輛屬性識别方案設計

一、模型設計

在開始之前,要具體分析我們的需求,首先看上面那張圖,簡單的思考一下,你能想到應用了哪些技術嘛?如果看過我之前的車輛屬性識别的文章,一眼就能看出實作的關鍵技術:

  • 目标檢測;
  • 多屬性識别。

在這兩個技術的基礎之上又能夠細分為:

  1. 行人、車輛的目标檢測;
  2. 行人的屬性識别;
  3. 車輛的屬性識别;

那好,把過程梳理一下,首先使用目标檢測算法,将視訊中的行人、車輛檢測出來,得到人和車在視訊中具體的坐标位置後将其裁剪,分别送入車輛屬性識别、行人屬性識别的網絡中,經過推理後得到人、車的多種屬性,然後将得到的資訊在原視訊中展示。是不是非常的esaily呢?那麼接下來将逐一實作每個子產品。

二、技術實作

2.1 目标檢測

首先是最簡單的目标檢測子產品,用于檢測行人和車輛,目标檢測算法相信大家都比較熟悉了,我這裡直接選用了yolov5目标檢測算法,并且開源的coco資料集上訓練的權重是可以直接使用的,不需要我們單獨去訓練行人和車輛檢測的模型,隻需要在檢測時,将其他類别注釋掉,隻保留人和車的類别即可。

在coco 80類中,人的類别為person,車的類别有car、 bus、 truck、bicycle,是以我們隻需要管這五類的目标即可,其他的類别檢測到了可以将其注釋掉不予理會。

當然也可以用其他的檢測算法,隻要時實性能夠滿足即可,那麼在這一步需要做的是,使用yolov5将行人、車輛檢測并按照坐标将其裁剪出來,得到如下形式的圖檔,用于後面的屬性識别:

智慧城市交通系列之行人、車輛屬性識别方案設計

—————

智慧城市交通系列之行人、車輛屬性識别方案設計

2.2 車輛屬性識别

就如同前一篇車輛屬性識别文章講的,原理這裡就不再重複了,直接看上一篇文章即可,但是因為我的權重是白嫖人家倉庫的權重,沒有自己去訓練,是以隻能使用resnet50去推理,相對來說,模型是大了一些,不過萬幸速度還是挺快的,可能有同學會問:為什麼自己不訓練一個精度、速度更好的模型?問題的關鍵在于…沒資料啊,上哪去找這麼多标注好的車輛資料!!跑模型是不可能跑的,這輩子都不可能跑,隻能靠白嫖人家的權重才能維持得了科研的樣子。

智慧城市交通系列之行人、車輛屬性識别方案設計

光說沒用,先來看下這步的效果圖:

智慧城市交通系列之行人、車輛屬性識别方案設計

可以看到其實精度還是有優化空間的,當然如果你有資料的話。不過沒關系,畢竟我們隻是簡單實作一下整個過程,不投入商用,精度看得過去就行了。

2.3 行人屬性識别

其實行人屬性識别和車輛屬性識别原理差不多,同樣是多标簽分類,隻不過在這裡行人的屬性标簽要多一些,網上有相關的資料集:Market-1501以及DukeMTMC-reID,這兩個資料集是可以用于訓練的。這裡呢又讓我找到了一個可以白嫖的行人屬性識别的倉庫Person-Attribute-Recognition-MarketDuke,hub中提供了相關的訓練代碼以及基于上面兩個資料集訓練好的模型權重,很幸運,又可以直接拿來用,舒服:

智慧城市交通系列之行人、車輛屬性識别方案設計

如果你要重新訓練的話,按照教程訓練即可,我這裡訓練了發現效果和作者給出的差不多,是以還是直接用好了,需要說明的是hub中的精度倒是很容易複現,隻需要按照流程跑即可,但是因為資料集的原因,如果你仔細觀察這兩個資料集裡的資料的話,行人基本上都是基于夏天短袖的照片,并且也基本上都是成年人,如果用于實際環境中的話精度是遠遠不夠的,如果你想去優化精度的話就需要自己去采集收集相關的資料,并且标注,這個工作量是巨大的,不是真正的項目的話,建議不要去折騰,我們跑個demo版本的就可以了。

我重新封裝了代碼,預設輸出的是英文,在解碼部分的時候我換成了中文,并且隻選擇了其中五個屬性作為最終視訊上的展出,好了現在找張圖檔來測試一下:

智慧城市交通系列之行人、車輛屬性識别方案設計

至于代碼下載下傳下來後如何封裝成的接口,供檢測模型調用,就自己去實作了,因為這兩個屬性識别倉庫的權重都是基于resnet50的,是以在一般的平台上速度可能達不到實時(我在3070上勉強達到實時),如果想優化建議上輕量型的網絡訓練,并且在網絡輸出後的解碼部分需要自己花點功夫研究一下,代碼沒整理,就不開源了,後續看有時間再說吧,思路已經講的很明确,感興趣的話自己去實作吧。你隻需要做的是把這三個倉庫的推理部分代碼整理串聯起來運作,并且根據你想要的效果将其可視化出來即可。

四、最終效果

最後還是要看下效果,不然你們說我吹牛皮。雖然精度稍微差了一點,但是效果相比于前面說的那段網上視訊,是不是完全一緻?超贊有木有?有内味了沒?

智慧城市交通系列之行人、車輛屬性識别方案設計
智慧城市交通系列之行人、車輛屬性識别方案設計

繼續閱讀