華爲Atlas 200 DK行人識別

人體檢測

開發者將本Application部署至Atlas 200 DK或者AI加速雲服務器上實現對本地mp4文件或者RTSP視頻流進行解碼,對視頻幀中的行人和人臉進行檢測並對其屬性進行預測,生成結構化信息發送至Server端進行保存、展示的功能。

前提條件

部署此Sample前,需要準備好以下環境:

  • 已完成Mind Studio的安裝。
  • 已完成Atlas 200 DK開發者板與Mind Studio的連接,交叉編譯器的安裝,SD卡的製作及基本信息的配置等。

軟件準備

運行此Sample前,需要按照此章節獲取源碼包,並進行相關的環境配置。

  1. 獲取源碼包。

    https://gitee.com/Atlas200DK/sample-videoanalysisperson倉中的代碼以Mind Studio安裝用戶下載至Mind Studio所在Ubuntu服務器的任意目錄,例如代碼存放路徑爲:/home/ascend/sample-videoanalysisperson

  2. 獲取此應用中所需要的原始網絡模型。

    參考表1獲取此應用中所用到的原始網絡模型及其對應的權重文件,並將其存放到Mind Studio所在Ubuntu服務器的任意目錄,例如$HOME/ascend/models/videoanalysispersion。

    表 1 人體檢測應用中使用模型

    模型名稱

    模型說明

    模型下載路徑

    face_detection

    人臉檢測網絡模型。

    此模型是基於Caffe的Resnet10-SSD300模型轉換後的網絡模型。

    請參考https://gitee.com/HuaweiAscend/models/tree/master/computer_vision/object_detect/face_detection目錄中README.md下載原始網絡模型文件及其對應的權重文件。

    pedestrian

    人體特徵推理模型。

    基於Caffe的VeSPA模型。

    請參考https://gitee.com/HuaweiAscend/models/tree/master/computer_vision/classification/pedestrian目錄中README.md下載原始網絡模型文件及其對應的權重文件。

    inception_age

    年齡識別網絡模型。

    基於Tensorflow的Inception V3模型。

    請參考https://gitee.com/HuaweiAscend/models/tree/master/computer_vision/classification/inception_age目錄中README.md下載原始網絡PB模型文件。

    inception_gender

    性別識別網絡模型。

    基於Tensorflow的Inception V3模型。

    請參考https://gitee.com/HuaweiAscend/models/tree/master/computer_vision/classification/inception_gender目錄中README.md下載原始網絡PB模型文件。

    vgg_ssd

    目標檢測網絡模型。

    基於Caffe的SSD512模型。

    請參考https://gitee.com/HuaweiAscend/models/tree/master/computer_vision/object_detect/vgg_ssd目錄中README.md下載原始網絡模型文件及其對應的權重文件。

  3. 將原始網絡模型轉換爲Davinci模型。

    1. 在Mind Studio操作界面的頂部菜單欄中選擇“Tool > Convert Model”,進入模型轉換界面。

    2. 在彈出的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。

        圖 1 inception_age模型轉換配置

      • inception_gender模型中gender_inference一次處理10張圖片,所以轉換時需要將Input Shape的N填寫爲10。

        圖 2 inception_gender模型轉換配置

    3. 單擊OK開始轉換模型。

      face_detection、vgg_ssd模型在轉換的時候,會有報錯,報錯信息如下圖所示。

      圖 3 模型轉換錯誤信息

      此時在DetectionOutput層的Suggestion中選擇SSDDetectionOutput,並點擊Retry。

      模型轉換成功後,後綴爲.om的Davinci模型存放地址爲$HOME/tools/che/model-zoo/my-model/xxx。

  4. 將轉換好的模型文件(.om文件)上傳到1中源碼所在路徑的“sample-videoanalysisperson/script”目錄下。

  5. 以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

部署

  1. 以Mind Studio安裝用戶進入人體檢測應用代碼所在根目錄,如_/home/ascend/sample-videoanalysisperson_。

  2. 執行部署腳本,進行工程環境準備,包括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地址,並輸入存儲視頻解析數據的路徑。

    圖 4 工程部署示意圖

  3. 啓動Presenter Server。

    執行如下命令在後臺啓動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的服務啓動成功。

    圖 5 Presenter Server進程啓動

    使用上圖提示的URL登錄Presenter Server(僅支持Chrome瀏覽器),IP地址爲2中輸入的IP地址,端口號默爲7011,如下圖所示,表示Presenter Server啓動成功。

    圖 6 主頁顯示

    Presenter Server、Mind Studio與Atlas 200 DK之間通信使用的IP地址示例如下圖所示:

    圖 7 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。
  4. 視頻結構化應用支持解析本地視頻和RTSP視頻流。

    • 如果需要解析本地視頻,需要將視頻文件傳到Host側。

      例如將視頻文件person.mp4上傳到Host側的“/home/HwHiAiUser/sample“目錄下。

       說明:
      支持H264與H265格式的MP4文件,如果MP4文件需要剪輯,建議使用開源工具ffmpeg,使用其他工具剪輯的視頻文件ffmpeg工具可能不支持解析。

    • 如果僅解析RTSP視頻流,本步驟可跳過。

運行

  1. 運行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,跳過正則表達式匹配。

  2. 使用啓動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 依賴代碼庫下載

模塊名稱

模塊描述

下載地址

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

實現對視頻文件的解封

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官網https://pypi.org/上搜索相關包進行安裝。

若使用pip3 install命令在線下載,可以使用如下命令指定相關版本進行下載,例如

pip3 install tornado==5.1.0 -i 指定庫的安裝源 --trusted-host 安裝源的主機名

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章