當前位置: 華文問答 > 科學

人體檢測+人體追蹤的人流統計AI計畫在android端部署落地的實戰心得

2022-10-29科學

1 訓練營課程

(1)本節課主要學習智慧安防實戰訓練營的課程:

訓練課程主要包括:

a. 第⼀節課,即本節課,主要講解AI⾏業智慧城市⾏業的⽬前狀況,並從邊緣設 備、越界辨識應⽤等為案例,進⾏講解。

b. 第⼆節課,主要從邊緣裝置的⽅式,Aidlux進⾏講解,了解 在邊緣端的各⽅⾯內容。

c. 第三節課,主要從⽬標檢測演算法的訓練,Aidlux上的移植、 測試等⽅⾯進⾏講解。

d. 第四節課,學習了⽬標檢測後,會將⽬標檢測和⽬標追蹤結 合,嘗試完整的⼈體檢測追蹤,為後⾯的各類業務功能做準備。

e. 第五節課,會將越界辨識的業務功能也添加進來,當有⼈越 界的時候,會透過喵提醒的⽅式,通知開發者及時檢視⼿機⾥⾯的越界圖⽚。

2)學習目的

本次課程是由江大白老師全程教學,第一次接觸江大白老師是在知乎上看到他的一篇高贊文章【ref="https:// zhuanlan.zhihu.com/p/39 7993315 ">深入淺出Yolo系列之Yolox核心基礎完整講解】,關註後發現,大白老師的文章都是對新手非常友好的,深入淺出,講的非常細致,看了之後獲益匪淺。後來長期關註並進了討論群,有興趣的朋友也可以關註,也許會有所收獲。

兩周前,大白老師分享訓練營計劃,我考慮了一下,便選擇參加,因為我從事AI行業以來,一直做的是CPU部署。想透過這個機會,學習一下android端的部署流程。因為經過這一年多的學習,我對自己的定位就是做AI落地方面的工作,至於研究新的trick,對非科班的我來說是難度較大的。並且該課程與我現在做的一些計畫也很類似,能夠借此機會學習一下大佬的程式碼也是很不錯的。

經過兩周的學習,我們基本已經掌握了從PC端到android端的開發與部署測試流程。所以江大白老師給我們留了一個大作業。

2 作業題目

(1)題目:

在學習了越界辨識的功能後,采用人體檢測+人體追蹤+業務功能的方式實作 人流統計。

(2)實作效果:

上傳視訊,有Vscode內碼表面露出,有AidLux界面露出。

比如Vscode界面+Aidlux端的PC端顯示的視訊。視訊連結: https:// b23.tv/hg2bp6m

人體檢測+人體追蹤效果 https://www.zhihu.com/video/1569021867226284032

3)程式碼實作:

相關流程和程式碼以及原理可以找大白老師分享,程式碼檔主要包括推理程式碼yolov5_overstep.py,工具函式utils.py,跟蹤演算法track資料夾,以及模型檔yolov5n_best-fp16.tflite和測試視訊video.mp4.

推理檔

其中推理程式碼yolov5_overstep.py主要程式碼如下:

先載入一些必要的包

1.用Aidlux的api載入模型:

2.初始化一些參數:

3.讀取視訊對視訊幀預處理並進行人體檢測:

這裏檢測模型用的是YOLOv5n,輸入640x640

4.對檢測到的人體框利用track中的跟蹤模型算出每個人體框的id

5.確定檢測線以及每個id在當前幀相對檢測線的位置,並記錄在track_id_status字典中:

狀態-1到1表示向上透過,反之向下

這裏字典每個名稱對應每個id,內容是當前幀中所有id號相對檢測線的位置,包括歷史位置:

當為-1,表示人體位於下方,1表示位於檢測線上方

6.判斷id行走方向,統計向上人流數,以及向下人流數:

-1到1,表示人向上透過,1到-1,表示人向下透過

7.在待輸出的frame上顯示人流統計:

8.視訊結束後,利用喵提醒公眾號下發人流統計資訊:

公眾號搜尋喵提醒即可使用
喵提醒與程式碼執行結果一致
程式碼最終執行結果

可以看到最終喵提醒功能把測試視訊中上下兩個方向以及總人流數下發到了微信中。

3 學習心得

當然這只是其中一部份程式碼,整個過程中還有其他程式碼,都很值得學習,以及偵錯部署測試過程都還有一些內容,感興趣的可以問大白老師領取資料。整個學習過程沒有什麽壓力,因為真的是手把手教學,不得不佩服大佬們的思路。

4 AidLux使用心得

最後我想發表一下我對Aidlux的看法,我是在自己手機上高通驍龍778上測試的,我發現Aidlux後台偵錯程式碼超過半小時後手機會很燙,待機沒事。但是整個測試的過程中跳幀不多,速度還是可以的,可以和一些CPU差不多了。後續希望Aidlux官方能出一些前後端的教程,因為一個計畫並不只是我們演算法工程師完成的,還需要團隊的合作。總體而言,我覺得這個終端裝置操作簡便,便攜,效果好,可塑性高,值得探索一番。期待後續我能有計畫使用到該產品。