2020華為云AI實戰營】第六章視頻分析課程打卡及作業打卡分享

      網友投稿 866 2025-04-01

      準備

      請新建一個Python3、GPU環境的NoteBook,開始我們第六章的課程學習和打卡!本章我們又會學習Pytorch、TensorFlow等框架的知識。如果您有購買3元資源包的話,建議您使用付費版本的且硬盤增大到20G,我遇到因為磁盤空間不足導致tools目錄等文件無法正常解壓出來,如果您恰好也遇到了can't open file 'tools/video_inpaint.py: No such file or directory的錯誤,那么基本上是磁盤空間不足的鍋了。

      拉取代碼

      import?os import?pathlib if?"ModelArts-Lab"?in?pathlib.Path.cwd().parts: ??while?"ModelArts-Lab"?in?pathlib.Path.cwd().parts: ????os.chdir('..') elif?not?pathlib.Path('ModelArts-Lab').exists(): ??!git?clone?--depth?1?https://gitee.com/hu-qi/ModelArts-Lab print('代碼下載完成,擼起袖子就是干!')

      復制文件

      %%bash cp?//home/ma-user/work/ModelArts-Lab/notebook/DL_video_object_segmentation/object_segmentation.ipynb?/home/ma-user/work/huqi88.ipynb cp?//home/ma-user/work/ModelArts-Lab/notebook/DL_video_action_recognition/action_recognition.ipynb?/home/ma-user/work/huqi88-action.ipynb

      第六章我們學習視頻分析,學習資料在ModelArts-Lab/notebook/DL_video_object_segmentation/object_segmentation.ipynb和ModelArts-Lab/notebook/DL_video_action_recognition/action_recognition.ipynb,就是我們要學習的使用OSVOS算法實現視頻物體分割和使用C3D和I3D模型實現視頻動作識別。其實,通過對打卡文檔的分析,不難看出這種的打卡任務依舊只需簡單的復制粘貼就能完成,當然這對號稱Copy攻城獅的我來說,小菜一碟,更多地是想跟大家分享課程背后的心得,比如排錯技巧。廢話不多說,擼起袖子就是干!

      課程打卡

      課程要點: 環境

      【2020華為云AI實戰營】第六章視頻分析課程打卡及作業打卡分享

      課程打卡的任務就是跑一遍OSVOS算法實現視頻摳圖,對應的文件是我們剛下載的ModelArts-Lab/notebook/DL_video_object_segmentation/object_segmentation.ipynb。別忘了按照打卡要求,我們需要將文件重命名成自己的華為云賬號,按照老師的文檔進行操作應該是沒太大問題。不過我還是遇到了坑,自己給自己挖的:一是沒有選用Pytorch的格式運行代碼,二是由于磁盤不足導致視頻物體分割應用的時候,拉取OBS的代碼進行解壓時無法正常解壓導致部分文件丟失。還有一個特別要注意的點,也是老師重點標注的:注意!安裝完以上模塊后,會有一些c++庫的更新,因此需要點擊本頁面頂部菜單欄的 Kernel,再點 Restart。當然,如果不聽老人言強行一次執行所有代碼是會導致進程死掉的,然后就會有熟悉的core-xxx文件夾生成,不過也不用慌,用命令行rm -rf core-xxx刪除這個大文件就行。課程打卡其實分為兩部分:OSVOS算法訓練和預測、視頻物體分割的應用之一--視頻摳圖。我這里提到的關鍵詞是環境,上文兩個坑其實都反應了環境的重要性, 為什么同一份代碼別人能運行成功我就各種報錯呢?重要的一點就是環境不同,比如,一開始我沒注意是用的Pytorch框架,那我的環境就不對了,運行的結果肯定也會不同;其次,本次實踐依賴的torch版本又比較特殊,而且還涉及到C++庫的更新,如果不執行Restart操作就會導致進程die;還有一個環境影響的因素就是磁盤空間不足的問題,在視頻分割應用之前我們需要下載一些代碼和數據,而解壓是通過os.system去執行一些命令行操作,操作過程是沒有日志輸出的。當我們發現一大串代碼執行結果與預期不一致時,可以將代碼拆分一步一步排查。

      自己挖坑之一:沒有使用Pytorch框架

      如圖所示,最終導致cannot import name '_version',這是因為代碼采用的Pytorch,而我設置的格式不對。解決方法就是嚴格按照教程使用Pytorch。

      自己挖坑之二

      如圖所示,導致The kernel appears to have died. It will restart automatically.,原因是沒有按照教程進行Restart操作,一些依賴的c++庫沒更新到,導致的異常。解決方法就是嚴格按照教程在安裝完依賴模塊后點擊頁面頂部菜單欄的 Kernel,再點 Restart。

      自己挖坑之三

      import?osimport?moxing?as?moxprint('Downloading?datasets?and?code?...')if?not?os.path.exists('./video_object_segmention/Deep-Flow-Guided-Video-Inpainting'): ????mox.file.copy('s3://modelarts-labs-bj4/notebook/DL_video_object_segmentation/Deep-Flow-Guided-Video-Inpainting.zip', ??????????????????'./video_object_segmention/Deep-Flow-Guided-Video-Inpainting.zip') ????os.system('cd?./video_object_segmention/;unzip?Deep-Flow-Guided-Video-Inpainting.zip;rm?Deep-Flow-Guided-Video-Inpainting.zip') ????if?os.path.exists('./video_object_segmention/Deep-Flow-Guided-Video-Inpainting'): ????????print('Download?success') ????else: ????????raise?Exception('Download?failed')else: ????print('Download?success')

      以上這段代碼就是獲取視頻物體分割應用相關代碼、數據、模型的,但是我執行完代碼發現有些文件目錄缺失,如tools目錄;通過README.md發現其實Deep-Flow-Guided-Video-Inpainting就是一個開源項目,在github上能看到完整的代碼?;氐轿募笔У膯栴},從代碼的來看有兩種可能:一是官方提供分潤OBS中本身就缺失相關的文件,不過可能性比較??;二是os.system執行的腳本出了差錯。按照這兩種可能,我們先驗證一下:先把Deep-Flow-Guided-Video-Inpainting刪除再重新執行文件下載操作(不執行解壓代碼)。然后通過Terminal來進行解壓。運行結果如下:

      write error (disk full?)提示磁盤已滿,我滴乖乖,二話不說轉手就重建了一個20G的實例,繼續實踐,結果一把過!

      作業打卡

      本章的作業打卡依舊比較簡單,只需簡單的修改或者復制即可完成。作業一實現對另一段視頻進行動作識別預測,運用的是TensorFlow,作業二是在課程作業的基礎上對另一個數據集進行訓練和應用。廢話不多說,直接開干:

      作業一要點:獲取numpy矩陣

      I3D模型的輸入是視頻流的numpy矩陣文件,在對新的視頻進行動作識別預測的時候,我們先要拿到視頻的rgb.npy和flow.npy這兩個文件以及視頻總幀數。好在老師又提供了代碼,先看看怎么拿到視頻的*.npy文件:

      通過腳本拿到compute_rgb_flow.py

      %%bash wget?https://ai-course-common-26-bj4.obs.cn-north-4.myhuaweicloud.com/video/compute_rgb_flow.py

      打開compute_rgb_flow.py找到TODO補充視頻路徑:

      視頻在dataset_subset目錄下,我這里以dataset_subset/Bowling/v_Bowling_g03_c03.avi為例

      #?……video_path?=?'dataset_subset/Bowling/v_Bowling_g03_c03.avi'??#?TODO,填寫視頻所在的路徑save_dir?=?os.path.dirname(video_path)?+?'_out'if?not?os.path.exists(save_dir): ????os.mkdir(save_dir)#?……

      執行compute_rgb_flow.py

      !python?compute_rgb_flow.py

      稍等片刻我們能拿到視頻的總幀數、rgb npy路徑、flow npy 路徑;

      替換參數

      #?……#??視頻的幀數_SAMPLE_VIDEO_FRAMES?=?137#?輸入數據包括兩部分:RGB和光流#?RGB和光流數據已經經過提前計算_SAMPLE_PATHS?=?{ ????'rgb':?'dataset_subset/Bowling_out/v_Bowling_g03_c03_rgb.npy', ????'flow':?'dataset_subset/Bowling_out/v_Bowling_g03_c03_flow.npy',}#?……

      依次執行即可完成新視頻的動作識別預測。

      作業二要點:數據集替換

      作業二主要是將課程中用到的flamingo數據集替換為breakdance,最終達到剔除視頻中跳舞的對象。踩過課程作業的坑之后,再來完成作業二真的簡單了許多,大概有6處需要替換的。

      替換

      #?第一處:定義模型和訓練超參#?Setting?of?parametersif?'SEQ_NAME'?not?in?os.environ.keys(): ????seq_name?=?'breakdance'

      #?第二、三處:查看視頻分割結果#?Setting?of?parameterssrc_dir?=?'./video_object_segmention/OSVOS-PyTorch/DAVIS_2016/JPEGImages/480p/breakdance'result_dir?=?'./video_object_segmention/OSVOS-PyTorch/./models/Results/breakdance'

      #?第四、五處:運行算法Demo(在Terminal中執行)source?activate?/home/ma-user/anaconda3/envs/Pytorch-1.0.0cd?`find?~/work/?-name?"Deep-Flow-Guided-Video-Inpainting"` bash?install_scripts.sh python?tools/video_inpaint.py?--frame_dir?../OSVOS-PyTorch/DAVIS_2016/JPEGImages/480p/breakdance?--MASK_ROOT?../OSVOS-PyTorch/DAVIS_2016/Annotations/480p/breakdance?--img_size?512?832?--FlowNet2?--DFC?--ResNet101?--Propagation?--enlarge_mask

      #?第六處:查看視頻摳圖結果src_dir?=?'./video_object_segmention/OSVOS-PyTorch/DAVIS_2016/JPEGImages/480p/breakdance'

      基本一遍過。此次分享就到這,希望對大家有所幫助,趕緊完成打卡吧!

      加入組織

      MDG 是 ModelArts Developer Groups 的縮寫。是由 ModelArts 開發者發起的開放、創新、多元的開發者社區組織。致力于幫助開發者學習提升、互動交流、挖掘機會,推動 AI、互聯網等產業生態的建立和發展。MDG 是面向人工智能、AI 技術、開源項目及 ModelArts 平臺技術感興趣的公益性開發者社區,相關開發者、軟件工程師、創業者、運營人、產品人、大學生、老師等都可以參加到 MDG 社區。

      MDG 秉承開放、創新、多元的社區文化,完全由各地志愿者自發組織和建立。目前,我們已在北京、上海、杭州、重慶建立了社區組織。自 2019 年12月起陸續開展了多次線上、線下活動。許多小伙伴正是參與了華為云 ModelArts 的相關活動后,申請加入MDG志愿者組織,從而更深入地了解ModelArts平臺。

      新晉華為云云享專家Copy攻城獅,我是胡琦,近期有幸參與【2020華為云AI實戰營】,學習ModelArts并加入【MDG社區】,期待在這里與你相遇!

      EI ModelArts

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:怎么把只讀模式改為讀寫模式(怎樣改只讀模式)
      下一篇:【華為IoT Openlab】 設備接入云服務(IoTDA)嚴選測試資料下載
      相關文章
      久久亚洲私人国产精品| 亚洲日韩精品无码专区网址| 久久精品国产亚洲香蕉| 亚洲色无码专区在线观看| 亚洲一级特黄大片在线观看| 亚洲av无码天堂一区二区三区| 亚洲精品色播一区二区| 亚洲精品色播一区二区| 欧美亚洲精品一区二区| 亚洲AV色欲色欲WWW| 久久亚洲精品11p| 午夜亚洲av永久无码精品| 日韩成人精品日本亚洲| 一区二区三区亚洲视频| 午夜亚洲国产成人不卡在线| 亚洲电影日韩精品| 亚洲综合区小说区激情区| 三上悠亚亚洲一区高清| 亚洲精品乱码久久久久久 | 亚洲乱码国产乱码精品精| 亚洲中文字幕无码不卡电影| 国产精品亚洲成在人线| 国产aⅴ无码专区亚洲av| 亚洲AV乱码一区二区三区林ゆな| 亚洲va久久久噜噜噜久久| 亚洲欧洲日韩不卡| 亚洲卡一卡2卡三卡4麻豆| 亚洲综合欧美色五月俺也去| 亚洲av永久无码精品秋霞电影秋| 在线亚洲精品视频| 亚洲无码精品浪潮| 国产成人亚洲综合色影视| 久久亚洲精精品中文字幕| 亚洲av无码国产综合专区| 亚洲精品GV天堂无码男同| 亚洲免费日韩无码系列| 国产亚洲精久久久久久无码| 久久精品国产亚洲AV嫖农村妇女| 亚洲一区二区三区在线| 欧美日韩亚洲精品| 亚洲一区二区三区影院|