開發(fā)者將本Application部署至Atlas 200 DK或者AI加速云服務器上實現(xiàn)對本地mp4文件或者RTSP視頻流進行解碼,對視頻幀中的行人和人臉進行檢測并對其屬性進行預測,生成結構化信息發(fā)送至Server端進行保存、展示的功能。
部署此Sample前,需要準備好以下環(huán)境:
運行此Sample前,需要按照此章節(jié)獲取源碼包,并進行相關的環(huán)境配置。
獲取源碼包。
將https://gitee.com/Atlas200DK/sample-videoanalysisperson倉中的代碼以Mind Studio安裝用戶下載至Mind Studio所在Ubuntu服務器的任意目錄,例如代碼存放路徑為:/home/ascend/sample-videoanalysisperson。
獲取此應用中所需要的原始網(wǎng)絡模型。
參考表1獲取此應用中所用到的原始網(wǎng)絡模型及其對應的權重文件,并將其存放到Mind Studio所在Ubuntu服務器的任意目錄,例如$HOME/ascend/models/videoanalysispersion。
表 1 人體檢測應用中使用模型
模型名稱 | 模型說明 | 模型下載路徑 |
---|---|---|
face_detection | 人臉檢測網(wǎng)絡模型。 此模型是基于Caffe的Resnet10-SSD300模型轉(zhuǎn)換后的網(wǎng)絡模型。 | 請參考https://gitee.com/HuaweiAscend/models/tree/master/computer_vision/object_detect/face_detection目錄中README.md下載原始網(wǎng)絡模型文件及其對應的權重文件。 |
pedestrian | 人體特征推理模型。 基于Caffe的VeSPA模型。 | 請參考https://gitee.com/HuaweiAscend/models/tree/master/computer_vision/classification/pedestrian目錄中README.md下載原始網(wǎng)絡模型文件及其對應的權重文件。 |
inception_age | 年齡識別網(wǎng)絡模型。 基于Tensorflow的Inception V3模型。 | 請參考https://gitee.com/HuaweiAscend/models/tree/master/computer_vision/classification/inception_age目錄中README.md下載原始網(wǎng)絡PB模型文件。 |
inception_gender | 性別識別網(wǎng)絡模型。 基于Tensorflow的Inception V3模型。 | 請參考https://gitee.com/HuaweiAscend/models/tree/master/computer_vision/classification/inception_gender目錄中README.md下載原始網(wǎng)絡PB模型文件。 |
vgg_ssd | 目標檢測網(wǎng)絡模型。 基于Caffe的SSD512模型。 | 請參考https://gitee.com/HuaweiAscend/models/tree/master/computer_vision/object_detect/vgg_ssd目錄中README.md下載原始網(wǎng)絡模型文件及其對應的權重文件。 |
將原始網(wǎng)絡模型轉(zhuǎn)換為Davinci模型。
在Mind Studio操作界面的頂部菜單欄中選擇“Tool > Convert Model”,進入模型轉(zhuǎn)換界面。
在彈出的Convert Model操作界面中,Model File與Weight File分別選擇2中下載的模型文件和權重文件。
Model Name填寫為表1中對應的模型名稱。
Tensorflow模型轉(zhuǎn)換時,需要手動增加一欄input shape并進行填寫。W、H、C的值和輸入節(jié)點名可以在netron(https://lutzroeder.github.io/netron/)中通過查看pb模型結構圖獲取。
inception_age模型中age_inference一次處理10張圖片,所以轉(zhuǎn)換時需要將Input Shape的N填寫為10。
圖 1 inception_age模型轉(zhuǎn)換配置
inception_gender模型中gender_inference一次處理10張圖片,所以轉(zhuǎn)換時需要將Input Shape的N填寫為10。
圖 2 inception_gender模型轉(zhuǎn)換配置
單擊OK開始轉(zhuǎn)換模型。
face_detection、vgg_ssd模型在轉(zhuǎn)換的時候,會有報錯,報錯信息如下圖所示。
圖 3 模型轉(zhuǎn)換錯誤信息
此時在DetectionOutput層的Suggestion中選擇SSDDetectionOutput,并點擊Retry。
模型轉(zhuǎn)換成功后,后綴為.om的Davinci模型存放地址為$HOME/tools/che/model-zoo/my-model/xxx。
將轉(zhuǎn)換好的模型文件(.om文件)上傳到1中源碼所在路徑的“sample-videoanalysisperson/script”目錄下。
以Mind Studio安裝用戶登錄Mind Studio所在Ubuntu服務器,并設置環(huán)境變量DDK_HOME。
vim ~/.bashrc
執(zhí)行如下命令在最后一行添加DDK_HOME及LD_LIBRARY_PATH的環(huán)境變量。
export DDK_HOME=/home/XXX/tools/che/ddk/ddk
export LD_LIBRARY_PATH=$DDK_HOME/uihost/lib
說明:
- XXX為Mind Studio安裝用戶,/home/XXX/tools為DDK默認安裝路徑。
- 如果此環(huán)境變量已經(jīng)添加,則此步驟可跳過。
輸入:wq!保存退出。
執(zhí)行如下命令使環(huán)境變量生效。
source ~/.bashrc
以Mind Studio安裝用戶進入人體檢測應用代碼所在根目錄,如_/home/ascend/sample-videoanalysisperson_。
執(zhí)行部署腳本,進行工程環(huán)境準備,包括ascenddk公共庫的編譯與部署、Presenter Server服務器的配置等操作,其中Presenter Server用于接收Application發(fā)送過來的數(shù)據(jù)并通過瀏覽器進行結果展示。
**bash deploy.sh **host_ip model_mode
host_ip:對于Atlas 200 DK開發(fā)者板,即為開發(fā)者板的IP地址。對于AI加速云服務器,即為Host側(cè)的IP地址。
model_mode代表模型文件的部署方式,默認為internet。
命令示例:
bash deploy.sh 192.168.1.2 internet
如圖4所示,請在“Current environment valid ip list“中選擇通過瀏覽器訪問Presenter Server服務使用的IP地址,并輸入存儲視頻解析數(shù)據(jù)的路徑。
圖 4 工程部署示意圖
啟動Presenter Server。
執(zhí)行如下命令在后臺啟動Video Analysis應用的Presenter Server主程序。
python3 presenterserver/presenter_server.py --app video_analysis_person &
說明:
“presenter_server.py“在當前目錄的“presenterserver“目錄下,可以在此目錄下執(zhí)行python3 presenter_server.py -h或者python3 presenter_server.py --help查看“presenter_server.py“的使用方法。
如圖5所示,表示presenter_server的服務啟動成功。
圖 5 Presenter Server進程啟動
使用上圖提示的URL登錄Presenter Server(僅支持Chrome瀏覽器),IP地址為2中輸入的IP地址,端口號默為7011,如下圖所示,表示Presenter Server啟動成功。
圖 6 主頁顯示
Presenter Server、Mind Studio與Atlas 200 DK之間通信使用的IP地址示例如下圖所示:
圖 7 IP地址示例
視頻結構化應用支持解析本地視頻和RTSP視頻流。
如果需要解析本地視頻,需要將視頻文件傳到Host側(cè)。
例如將視頻文件person.mp4上傳到Host側(cè)的“/home/HwHiAiUser/sample“目錄下。
說明:
支持H264與H265格式的MP4文件,如果MP4文件需要剪輯,建議使用開源工具ffmpeg,使用其他工具剪輯的視頻文件ffmpeg工具可能不支持解析。
如果僅解析RTSP視頻流,本步驟可跳過。
運行Video Analysis程序。
在“/home/ascend/sample-videoanalysisperson“目錄下執(zhí)行如下命令運行Video Analysis應用程序。
bash run_videoanalysispersonapp.sh host_ip presenter_view_appname channel1 [channel2] &
視頻文件運行的命令示例如下所示:
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函數(shù)去除,或者直接返回true,跳過正則表達式匹配。
使用啟動Presenter Server服務時提示的URL登錄 Presenter Server 網(wǎng)站(僅支持Chrome瀏覽器),詳細可參考3。
說明:
Video Analysis的Presenter Server最多支持2個 presenter_view_app_name 同時顯示。
頁面左側(cè)樹結構列出了視頻所屬app name以及通道名,中間列出了抽取的視頻幀大圖以及檢測出的目標小圖,點擊下方小圖后會在右側(cè)列出詳細的推理結果、評分。
本應用支持人體屬性檢測和人臉屬性檢測。
人體屬性包括:
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。
其中在視頻分析界面的詳細推理結果展示區(qū)域,Age、Male/Female、Short hair/Long hair是必展示屬性,其他屬性當置信度>0.5時則展示,否則不展示。
人臉屬性檢測支持年齡和性別的的識別。
停止視頻結構化應用
若要停止人體檢測應用程序,可執(zhí)行如下操作。
以Mind Studio安裝用戶在sample-videoanalysisperson目錄下執(zhí)行如下命令:
bash stop_videoanalysispersonapp.sh host_ip
host_ip:對于Atlas 200 DK開發(fā)者板,即為開發(fā)者板的IP地址。對于AI加速云服務器,即為Host的IP地址。。
命令示例:
bash stop_videoanalysispersonapp.sh 192.168.1.2
停止Presenter Server服務
Presenter Server服務啟動后會一直處于運行狀態(tài),若想停止視頻結構化應用對應的Presenter Server服務,可執(zhí)行如下操作。
以Mind Studio安裝用戶在Mind Studio所在服務器中執(zhí)行如下命令查看視頻結構化應用對應的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_carascend 3656 20313 0 15:10 pts/24?? 00:00:00 python3 presenterserver/presenter_server.py --app video_analysis_person
如上所示,3656即為車輛檢測應用對應的Presenter Server服務的進程ID。
若想停止此服務,執(zhí)行如下命令:
kill -9 3656
將依賴的軟件庫下載到“sample-videoanalysisperson/script“目錄下。
表 2 依賴代碼庫下載
模塊名稱 | 模塊描述 | 下載地址 |
---|---|---|
EZDVPP | 對DVPP接口進行了封裝,提供對圖片/視頻的處理能力。 | https://gitee.com/Atlas200DK/sdk-ezdvpp 下載后請保持文件夾名稱為ezdvpp。 |
Presenter Agent | 與Presenter Server進行交互的API接口。 | https://gitee.com/Atlas200DK/sdk-presenter/tree/master 請獲取此路徑下的presenteragent文件夾,下載后請保持文件夾名稱為presenteragent。 |
開源工具ffmpeg | 實現(xiàn)對視頻文件的解封 | ffmpeg 4.0代碼下載地址:https://gitee.com/mirrors/ffmpeg/tree/release%2F4.0/。 下載后,目錄名稱請使用ffmpeg。 |
tornado (5.1.0) protobuf (3.5.1) numpy (1.14.2) | Presenter Server依賴的Python庫 | 可以在python官網(wǎng)https://pypi.org/上搜索相關包進行安裝。 若使用pip3 install命令在線下載,可以使用如下命令指定相關版本進行下載,例如 pip3 install tornado==5.1.0 -i 指定庫的安裝源 --trusted-host 安裝源的主機名 |