開發教程 |基于ModelArts的視頻全量目標分析和建模案例分析
項目介紹

本案例來自于第九屆中國軟件杯大賽A組賽題《視頻全量目標分析和建?!?。
項目場景
給出一段2分鐘的高清視頻,對視頻中出現的物體進行目標檢測和統計。視頻通過行車記錄儀采集,主要目標物為車輛,建筑,行人等。為了縮短模型推理時間,我們只使用了約30秒的視頻進行測試。
基本要求
識別不同類型的目標;輸出每種類型的圖片;統計每個類別的物體數量。下圖是一個參考示意圖。
時間限制
在30分鐘內完成推理結果。
算法構思
項目分析
一般對于圖像的目標進行檢測和統計,需要使用目標檢測技術;而對于項目所給出的視頻,考慮到前后圖像的關聯性,還需要使用目標跟蹤技術。
參考代碼
常用的目標檢測方法有YOLO系列、SSD、R-CNN等。
常用的目標跟蹤方法有SORT、 DeepSORT等。
本實例在YOLOv3和DeepSORT的基礎上進行了改進,代碼借鑒了Object-Detection-and-Tracking。
實際操作
注冊華為云賬號
進入華為云首頁,單擊頁面右上角的“注冊”。
設置手機號、短信驗證碼、賬號名、密碼并勾選“我已閱讀并同意《華為云用戶協議》和《隱私政策聲明》”,單擊“同意協議并注冊”。
實名認證
賬號注冊成功后,登錄華為云,單擊界面右上角“用戶名>實名認證”。賬號類型選“個人”,個人認證類型推薦使用“掃碼認證”(華為云app)。
服務授權
點此進入ModelArts 控制臺頁面,點擊左下角的“全劇配置”,選擇“訪問授權”,按下圖順序操作:
下載代碼、視頻
從OBS桶下載代碼、視頻,點擊下列鏈接即可下載。
test.ipynb
data_process.ipynb
code.tar
創建OBS桶
OBS大家可以簡單地理解成一個在線網盤,因為ModelArts本身目前沒有數據存儲的功能,所以需要從OBS里存儲我們上傳的數據進行訓練。
點擊進入華為云OBS控制臺,進入后點擊右上角的【創建桶】按鈕(這里的桶可以理解成OBS進行存儲的基本單位,所有的數據必須存儲在某個桶里)。
進入新建桶界面, 按照如下示例進行填寫:
區域:華北-北京四;數據冗余存儲策略:單AZ存儲;桶名稱:自定義,需要全局唯一,即在整個華為云上的名字唯一;其它選項保持默認即可。
使用OBS桶上傳代碼、視頻
在OBS首頁,找到我們剛剛新建的桶,并點擊桶名稱進入桶內容管理界面。
進入后,點擊左側“對象”按鈕,進入數據上傳界面,點擊“上傳對象“按鈕,彈出上傳對象框,我們直接用鼠標將前面下載好的壓縮包拖拽到到上傳對象框內。
在文件夾中有code.tar,test.ipynb文件和data_process.ipynb文件三個文件,只需要上傳code.tar即可。
創建開發環境
在ModelArts左側導航欄選擇“開發環境 > Notebook”,單擊頁面中“創建”。
在創建Notebook頁面填寫參數,可參考下圖填寫配置參數。
點擊右側的“打開”,打開 Notebook 環境。
上傳腳本文件
進入Notebook 環境后,點擊右側的“Upload”,從百度云下載好的data_process.ipynb和test.ipynb文件上傳。
運行data_process.ipynb文件
注意,要將第一個地址修改為你自己的OBS桶名稱。
對代碼文件進行解壓縮。
運行test.ipynb文件
我們需要切換到代碼文件夾下,通過test.ipynb文件執行主文件main.py。
將代碼運行所需要的依賴庫都寫到了requirements.txt文件里,可以一次性安裝完畢。
執行主文件main.py
算法入口定義在main.py文件中,只需要執行這一個文件,就可以完成視頻的目標檢測及跟蹤。
while True: # 從視頻中抽取一幀圖像 ret, frame = video_capture.read() # frame shape 640*480*33 if ret != True: break image = Image.fromarray(frame[...,::-1]) #bgr to rgb # 將抽取的圖像傳入YOLOv3進行目標檢測,得到目標框和類別。 boxs,class_names = yolo.detect_image(image) # 將抽取的圖像和目標檢測得到目標框傳入DeepSORT進行目標跟蹤。 features = encoder(frame, boxs) # 設置置信度為1.0 detections = [Detection(bbox, 1.0, feature, cl) for bbox, feature, cl in zip(boxs, features, class_names)] boxes = np.array([d.tlwh for d in detections]) scores = np.array([d.confidence for d in detections]) indices = preprocessing.non_max_suppression(boxes, nms_max_overlap, scores) detections = [detections[i] for i in indices] # 進行目標更新 tracker.predict() tracker.update(detections)
-i參數表示輸入視頻的路徑。
查看結果
將結果保存在output文件夾中,內容包括視頻、圖片和文本。
視頻outputVideo.avi可運行test.ipynb文件中的代碼查看,也可以到output文件夾下查看。
文本totalCount.txt截圖。
圖片imageSeg部分展示。
保存結果
運行data_process.ipynb文件中的代碼,記得修改第二個地址為自己的OBS桶地址。
結語
好了,上述步驟就是使用ModelArts進行深度學習的一個應用實例。
AI開發平臺ModelArts 視頻
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。