人體檢測
開發者將本Application部署至Atlas 200 DK或者AI加速雲服務器上實現對本地mp4文件或者RTSP視頻流進行解碼,對視頻幀中的行人和人臉進行檢測並對其屬性進行預測,生成結構化信息發送至Server端進行保存、展示的功能。
前提條件
部署此Sample前,需要準備好以下環境:
- 已完成Mind Studio的安裝。
- 已完成Atlas 200 DK開發者板與Mind Studio的連接,交叉編譯器的安裝,SD卡的製作及基本信息的配置等。
軟件準備
運行此Sample前,需要按照此章節獲取源碼包,並進行相關的環境配置。
-
將https://gitee.com/Atlas200DK/sample-videoanalysisperson倉中的代碼以Mind Studio安裝用戶下載至Mind Studio所在Ubuntu服務器的任意目錄,例如代碼存放路徑爲:/home/ascend/sample-videoanalysisperson。
-
參考表1獲取此應用中所用到的原始網絡模型及其對應的權重文件,並將其存放到Mind Studio所在Ubuntu服務器的任意目錄,例如$HOME/ascend/models/videoanalysispersion。
表 1 人體檢測應用中使用模型
請參考https://gitee.com/HuaweiAscend/models/tree/master/computer_vision/object_detect/face_detection目錄中README.md下載原始網絡模型文件及其對應的權重文件。
請參考https://gitee.com/HuaweiAscend/models/tree/master/computer_vision/classification/pedestrian目錄中README.md下載原始網絡模型文件及其對應的權重文件。
請參考https://gitee.com/HuaweiAscend/models/tree/master/computer_vision/classification/inception_age目錄中README.md下載原始網絡PB模型文件。
請參考https://gitee.com/HuaweiAscend/models/tree/master/computer_vision/classification/inception_gender目錄中README.md下載原始網絡PB模型文件。
請參考https://gitee.com/HuaweiAscend/models/tree/master/computer_vision/object_detect/vgg_ssd目錄中README.md下載原始網絡模型文件及其對應的權重文件。
-
將原始網絡模型轉換爲Davinci模型。
-
在Mind Studio操作界面的頂部菜單欄中選擇“Tool > Convert Model”,進入模型轉換界面。
-
在彈出的Convert Model操作界面中,Model File與Weight File分別選擇2中下載的模型文件和權重文件。
-
Model Name填寫爲表1中對應的模型名稱。
-
Tensorflow模型轉換時,需要手動增加一欄input shape並進行填寫。W、H、C的值和輸入節點名可以在netron(https://lutzroeder.github.io/netron/)中通過查看pb模型結構圖獲取。
-
inception_age模型中age_inference一次處理10張圖片,所以轉換時需要將Input Shape的N填寫爲10。
-
inception_gender模型中gender_inference一次處理10張圖片,所以轉換時需要將Input Shape的N填寫爲10。
-
-
單擊OK開始轉換模型。
face_detection、vgg_ssd模型在轉換的時候,會有報錯,報錯信息如下圖所示。
此時在DetectionOutput層的Suggestion中選擇SSDDetectionOutput,並點擊Retry。
模型轉換成功後,後綴爲.om的Davinci模型存放地址爲$HOME/tools/che/model-zoo/my-model/xxx。
-
-
將轉換好的模型文件(.om文件)上傳到1中源碼所在路徑的“sample-videoanalysisperson/script”目錄下。
-
以Mind Studio安裝用戶登錄Mind Studio所在Ubuntu服務器,並設置環境變量DDK_HOME。
vim ~/.bashrc
執行如下命令在最後一行添加DDK_HOME及LD_LIBRARY_PATH的環境變量。
export DDK_HOME=/home/XXX/tools/che/ddk/ddk
export LD_LIBRARY_PATH=$DDK_HOME/uihost/lib
說明:
- XXX爲Mind Studio安裝用戶,/home/XXX/tools爲DDK默認安裝路徑。
- 如果此環境變量已經添加,則此步驟可跳過。
輸入:wq!保存退出。
執行如下命令使環境變量生效。
source ~/.bashrc
部署
-
以Mind Studio安裝用戶進入人體檢測應用代碼所在根目錄,如_/home/ascend/sample-videoanalysisperson_。
-
執行部署腳本,進行工程環境準備,包括ascenddk公共庫的編譯與部署、Presenter Server服務器的配置等操作,其中Presenter Server用於接收Application發送過來的數據並通過瀏覽器進行結果展示。
**bash deploy.sh **host_ip model_mode
-
host_ip:對於Atlas 200 DK開發者板,即爲開發者板的IP地址。對於AI加速雲服務器,即爲Host側的IP地址。
-
model_mode代表模型文件的部署方式,默認爲internet。
- local:若Mind Studio所在Ubuntu系統未連接網絡,請使用local模式,執行此命令前,需要參考依賴代碼庫下載將依賴代碼庫的下載到“sample-videoanalysisperson/script“目錄下。
- internet:在線部署,若Mind Studio所在Ubuntu系統已連接網絡,請使用internet模式,在線下載依賴軟件庫。
命令示例:
bash deploy.sh 192.168.1.2 internet
- 當提示“Please choose one to show the presenter in browser(default: 127.0.0.1):“時,請輸入在瀏覽器中訪問Presenter Server服務所使用的IP地址(一般爲訪問Mind Studio的IP地址)。
- 當提示“Please input a absolute path to storage video analysis data:“時,請輸入Mind Studio中的絕對路徑用於存儲視頻解析數據,此路徑Mind Studio用戶需要有讀寫權限,若此路徑不存在,腳本會自動創建。
如圖4所示,請在“Current environment valid ip list“中選擇通過瀏覽器訪問Presenter Server服務使用的IP地址,並輸入存儲視頻解析數據的路徑。
-
-
執行如下命令在後臺啓動Video Analysis應用的Presenter Server主程序。
python3 presenterserver/presenter_server.py --app video_analysis_person &
說明:
“presenter_server.py“在當前目錄的“presenterserver“目錄下,可以在此目錄下執行python3 presenter_server.py -h或者python3 presenter_server.py --help查看“presenter_server.py“的使用方法。如圖5所示,表示presenter_server的服務啓動成功。
使用上圖提示的URL登錄Presenter Server(僅支持Chrome瀏覽器),IP地址爲2中輸入的IP地址,端口號默爲7011,如下圖所示,表示Presenter Server啓動成功。
Presenter Server、Mind Studio與Atlas 200 DK之間通信使用的IP地址示例如下圖所示:
- Atlas 200 DK開發者板使用的IP地址爲192.168.1.2(USB方式連接)。
- Presenter Server與Atlas 200 DK通信的IP地址爲UI Host服務器中與Atlas 200 DK在同一網段的IP地址,例如:192.168.1.223。
- 通過瀏覽器訪問Presenter Server的IP地址本示例爲:10.10.0.1,由於Presenter Server與Mind Studio部署在同一服務器,此IP地址也爲通過瀏覽器訪問Mind Studio的IP。
-
視頻結構化應用支持解析本地視頻和RTSP視頻流。
-
如果需要解析本地視頻,需要將視頻文件傳到Host側。
例如將視頻文件person.mp4上傳到Host側的“/home/HwHiAiUser/sample“目錄下。
說明:
支持H264與H265格式的MP4文件,如果MP4文件需要剪輯,建議使用開源工具ffmpeg,使用其他工具剪輯的視頻文件ffmpeg工具可能不支持解析。 -
如果僅解析RTSP視頻流,本步驟可跳過。
-
運行
-
運行Video Analysis程序。
在“/home/ascend/sample-videoanalysisperson“目錄下執行如下命令運行Video Analysis應用程序。
bash run_videoanalysispersonapp.sh host_ip presenter_view_appname channel1 [channel2] &
- host_ip:對於Atlas 200 DK開發者板,即爲開發者板的IP地址。對於AI加速雲服務器,即爲Host側的IP地址。
- presenter_view_app_name:用戶自定義的在PresenterServer界面展示的View Name,此View Name需要在Presenter Server展示界面唯一,,只能是大小寫字母、數字、“_”的組合,位數3-20。
- channel1:爲Host側的視頻文件的絕對路徑,需要加上雙引號,當只存在視頻文件時。Channel2可以省略。
- channel2:爲RTSP視頻流的URL,需要加上雙引號,當只存在RTSP視頻流時需要使用” ”對channel1進行佔位。
視頻文件運行的命令示例如下所示:
bash run_videoanalysispersonapp.sh 192.168.1.2 video "/home/HwHiAiUser/sample/person.mp4" &
RTSP視頻流的命令示例如下所示:
bash run_videoanalysispersonapp.sh 192.168.1.2 video " " "rtsp://192.168.2.37:554/cam/realmonitor?channel=1&subtype=0" &
說明:
當前RTSP視頻流只支持rtsp://ip:port/path格式,如果需要使用其它格式的url,需要把video_decode.cpp中的IsValidRtsp函數去除,或者直接返回true,跳過正則表達式匹配。 -
使用啓動Presenter Server服務時提示的URL登錄 Presenter Server 網站(僅支持Chrome瀏覽器),詳細可參考3。
說明:
Video Analysis的Presenter Server最多支持2個 presenter_view_app_name 同時顯示。頁面左側樹結構列出了視頻所屬app name以及通道名,中間列出了抽取的視頻幀大圖以及檢測出的目標小圖,點擊下方小圖後會在右側列出詳細的推理結果、評分。
本應用支持人體屬性檢測和人臉屬性檢測。
-
人體屬性包括:
Age:共分Age16-30,Age31-45,Age46-60,AgeAbove61四個年齡段; Backpack; CarryingOther; Casual lower; Casual upper; Formal lower; Hat; Jacket; Jeans; Leather Shoes; Logo; Short hair/Long hair; Male/Female; Messenger Bag; Muffler; No accessory; No carrying; Plaid; PlasticBags; Sandals; Shoes; Shorts; Short Sleeve; Skirt; Sneaker; Stripes; Sunglasses; Trousers; Tshirt; UpperOther; V-Neck。
其中在視頻分析界面的詳細推理結果展示區域,Age、Male/Female、Short hair/Long hair是必展示屬性,其他屬性當置信度>0.5時則展示,否則不展示。
-
人臉屬性檢測支持年齡和性別的的識別。
-
後續處理
-
停止視頻結構化應用
若要停止人體檢測應用程序,可執行如下操作。
以Mind Studio安裝用戶在sample-videoanalysisperson目錄下執行如下命令:
bash stop_videoanalysispersonapp.sh host_ip
host_ip:對於Atlas 200 DK開發者板,即爲開發者板的IP地址。對於AI加速雲服務器,即爲Host的IP地址。。
命令示例:
bash stop_videoanalysispersonapp.sh 192.168.1.2
-
停止Presenter Server服務
Presenter Server服務啓動後會一直處於運行狀態,若想停止視頻結構化應用對應的Presenter Server服務,可執行如下操作。
以Mind Studio安裝用戶在Mind Studio所在服務器中執行如下命令查看視頻結構化應用對應的Presenter Server服務的進程。
ps -ef | grep presenter | grep video_analysis_person
ascend@ascend-HP-ProDesk-600-G4-PCI-MT:~/sample-videoanalysisperson$ ps -ef | grep presenter | grep video_analysis_car ascend 3656 20313 0 15:10 pts/24?? 00:00:00 python3 presenterserver/presenter_server.py --app video_analysis_person
如上所示,3656即爲車輛檢測應用對應的Presenter Server服務的進程ID。
若想停止此服務,執行如下命令:
kill -9 3656
依賴代碼庫下載
將依賴的軟件庫下載到“sample-videoanalysisperson/script“目錄下。
表 2 依賴代碼庫下載
ffmpeg 4.0代碼下載地址:https://gitee.com/mirrors/ffmpeg/tree/release%2F4.0/。 |
||
可以在python官網https://pypi.org/上搜索相關包進行安裝。 若使用pip3 install命令在線下載,可以使用如下命令指定相關版本進行下載,例如 pip3 install tornado==5.1.0 -i 指定庫的安裝源 --trusted-host 安裝源的主機名 |