【云駐共創】華為云AI實戰營:物體檢測

      網友投稿 761 2025-04-01

      前言:

      AI正在改變我們的生活,正在改變我們身邊的各行各業,但是這條通往智能世界的路并不平坦,其中一個巨大鴻溝就是AI人才的稀缺。在中國龐大的IT從業群體,AI開發者缺口達百萬級。

      AI將成為全民普及性的技能,所以今天華為云EI為大家帶來《2020華為云AI實戰營》免費課程,大幅降低AI學習門檻,幫助龐大的軟件開發者群體快速掌握AI技能,把AI用起來。

      課程主要內容包括圖像分類、物體檢測、圖像分割、人臉識別、OCR、視頻分析、自然語言處理和語音識別這八大熱門AI領域的基礎知識、經典數據集和經典算法的介紹,每章課程都是實戰案例,模型訓練、測試、評估全流程覆蓋,配合代碼講解和課后作業,幫助您掌握八大熱門AI領域的模型開發能力。

      2020年華為云AI實戰營??第二章 物體檢測

      一、物體檢測介紹

      什么是物體檢測?

      物體檢測是一種使計算機能在圖像中自動發現感興趣的物體,并判斷物體的類別、位置的技術。具體來講,物體檢測解決的問題是物體是什么,以及在什么位置這兩個基本問題。傳統的物體檢測方法以滑動窗口法為代表,給定一幅輸入圖像,算法首先對圖像進行掃描得到一系列的子窗口;然后在這些子窗口內部提取相應的特征,針對這些特征進行計算和識別,得到子窗口的識別結果。最新的物體檢測模型取代了基于傳統人工設計特征的候選框生成算法。

      物體檢測應用場景--自動駕駛

      用于自動駕駛車輛的物體檢測系統對針對在其上正在駕駛所述自動駕駛車輛的路段所獲取的包括一個或多個圖像的傳感器數據進行處理.所述物體檢測系統將所述圖像與路段的三維(3D)環境數據進行比較,以對所述圖像中的與在所述3D環境數據中先前未被識別的物體相對應的像素進行確定.然后,所述物體檢測系統分析所述像素以對在所述3D環境數據中先前未被識別的所述物體進行分類

      .

      物體檢測開源數據集

      PASCAL VOC(The PASCAL Visual Object Classes)是一個世界級的計算機視覺挑戰賽,第一屆比賽在2005年舉辦,隨后一年舉辦一次,直到2012年最后一次。PASCAL的全稱是Pattern Analysis, Statistical modelling and ComputAtional Learning,官方地址是 http://host.robots.ox.ac.uk/pascal/VOC/

      MS COCO數據集是目標檢測領域中另一個非常有名的大型數據集(前面介紹過?PASCAL VOC?),其中COCO是Common Objects in COntext的縮寫,由微軟公司構建,其中包含了detection、segmentation、keypoints等任務,目前主要的贊助者有Microsoft、Facebook、Google等大廠。

      與?PASCAL VOC數據集相比,MS COCO中的圖片數據,目標更多,尺寸更小且圖片背景更加復雜,因此,在此數據集上的任務就顯得更難。對于現在的檢測算法來講,在MS COCO上的檢測結果儼然成為了衡量模型好壞的事實標準。

      MS COCO總共包含91個stuff categories,80個object cagegories也就是我們常說的物體類別,下圖是與PASCAL VOC的一個類別及數據量對比

      FasterRCNN算法原理

      Conv layers。作為一種CNN網絡目標檢測方法,Faster RCNN首先使用一組基礎的conv+relu+pooling層提取image的feature maps。該feature maps被共享用于后續RPN層和全連接層。

      Region Proposal Networks。RPN網絡用于生成region proposals。該層通過softmax判斷anchors屬于positive或者negative,再利用bounding box regression修正anchors獲得精確的proposals。

      Roi Pooling。該層收集輸入的feature maps和proposals,綜合這些信息后提取proposal feature maps,送入后續全連接層判定目標類別。

      Classification。利用proposal feature maps計算proposal的類別,同時再次bounding box regression獲得檢測框最終的精確位置。

      Yolo算法原理

      目標檢測分兩大門派:single-shot detectors以及two-stage detectors。前者注重檢測的速度,后者注重檢測的精度,當然后者所用的訓練時間長。yolo屬于前者

      YOLO將對象檢測重新定義為一個回歸問題。它將單個卷積神經網絡(CNN)應用于整個圖像,將圖像分成網格,并預測每個網格的類概率和邊界框。YOLO將物體檢測作為回歸問題求解,它將輸入圖像分成SxS個格子,每個格子輸出B個bounding box(包含物體的矩形區域)信息,以及C個物體屬于某種類別的概率信息。Bounding box信息包含5個數據值,分別是x,y,w,h,和confidence。因此,YOLO網絡最終的全連接層的輸出維度是 S*S*(B*5 + C)

      FasterRCNN VS YoLoV3

      FasterRCNN 推理速度慢,但推理精度高,可以在自動駕駛等精度要求高的場景。YoLoV3速度快,推理精度Label精度相對較低,圖像扭曲,無背景過濾。可以應用在實時檢測場景。

      二、零代碼人車檢測模型開發

      ModelArts自動學習

      ModelArts自動學習能力,可根據用戶標注數據全自動進行模型設計、參數調優、模型訓練、模型壓縮和模型部署全流程。無需任何代碼編寫和模型開發經驗,即可利用ModelArts構建AI模型應用在實際業務中。

      零編碼,零AI基礎,三步構建AI模型

      ModelArts自動學習可以大幅降低AI使用門檻與成本,較之傳統AI模型訓練部署,使用自動學習構建將降低成本90%以上。

      零代碼人車檢測模型開發:ModelArts-Lab/readme.md at master · huaweicloud/ModelArts-Lab · GitHub

      在自動駕駛技術實現的過程中,物體檢測是其中一個重要環節。本案例基于ModelArts自動學習功能,讓開發者體驗AI模型的開發過程,完成數據標注、模型訓練和部署,開發一個物體檢測AI應用。

      ModelArts自動學習具有零代碼、零AI背景、泛化能力強的特點,可以幫助AI初學者快速體驗AI應用開發流程,同時自動學習訓練生成的模型也可以部署到生產環境中使用。

      動手實踐

      實驗目標

      1.掌握從AI Gallery下載數據集的方法;

      2.掌握使用自動學習功能進行數據標注、模型訓練和部署在線服務的方法。

      準備數據

      華為云AI Gallery中有開發者分享了豐富的數據集,大家可以前往訂閱使用。本案例采用自動駕駛場景的數據集,數據集中有兩種物體,人和車。我們從華為云AI Gallery訂閱數據集至ModelArts,然后就可以在ModelArts中使用了。

      準備數據

      華為云AI Gallery中有開發者分享了豐富的數據集,大家可以前往訂閱使用。本案例采用自動駕駛場景的數據集,數據集中有兩種物體,人和車。我們從華為云AI Gallery訂閱數據集至ModelArts,然后就可以在ModelArts中使用了。

      請點擊此處,進入該數據集主頁,點擊,進入下載詳情,按照如下提示填寫下載詳情:

      1、先下載數據集。然后,解壓。

      2、上傳數據到OBS,用obs客戶端來上傳。

      下載方式:選擇ModelArts數據集

      目標區域:華北-北京四

      目標位置:選擇一個OBS路徑,作為數據集的存儲位置。

      名稱:自定義。

      填寫好參數后,點擊按鈕,然后點擊按鈕。等待數據集狀態變為推送成功(約2分鐘),即可在ModelArts數據集列表中查看到下載的數據集。

      請點擊此鏈接下載數據到本地,解壓??梢钥吹絚ar_and_person_150文件夾。測試集位于car_and_person_150\test目錄下。

      創建項目

      登錄ModelArts管理控制臺,點擊左側導航欄的自動學習,進入自動學習頁面;

      點擊右側項目頁面中的物體檢測的創建項目按鈕。

      在創建自動學習項目頁面,計費模式默認“按需計費”,填寫“名稱”并選擇“訓練數據”的存儲路徑。

      名稱:自定義

      數據來源:新建數據集

      數據集輸入位置:選擇剛剛從AI Gallery訂閱的人車檢測數據集。

      最后點擊“創建項目”按鈕完成物體檢測項目創建。

      下載本機,解壓。也是有2個文件夾train和test

      上傳文件夾car_and_person

      3、進入moderarts,創建自動學習的項目。

      數據標注

      點擊“同步數據源”按鈕,等待右上角出現“數據同步完成”提示信息,可以看到界面顯示的圖像。共有100張未標注的圖片和50張已經標注的圖片。

      模型訓練

      點擊“開始訓練”按鈕,設置最大訓練時長為12分鐘,預期推理硬件選擇CPU,其他默認。然后點擊"確認"按鈕,提交訓練作業。如下圖所示:

      訓練完成后,等待一會,會出現開始“發布”。然后在進行下一步“部署”。還有就是,時間比較長10多分鐘,耐心等待

      4、預測圖片

      5、測試樣例圖片

      在線服務本質上是一個RESTful API,可以通過HTTP請求訪問。本案例在網頁上測試在線服務。

      頁面中間是服務測試,點擊上傳,選擇test目錄中一張圖片上傳,然后點擊預測,在頁面的右側可以查看預測結果。

      如果想要查看在線服務的詳情,可以在“部署上線”->“在線服務”中找到相應的在線服務,然后點擊名稱進去查看詳情,如下圖所示:

      API在線服務詳情頁有該API的調用指南和配置信息等信息。

      關閉在線服務

      實驗完成后,為了防止繼續扣費,點擊“停止”按鈕,把在線服務關閉,在線服務停止后可以重新啟動。

      至此,本案例完成。

      三、使用FasterRCNN預置算法基于海量數據訓練人車檢測模型

      ModelArts預置算法

      30+預置模型;所有模型已基于開源或行業數據集訓練完畢,實現精度和速度優化。一鍵訓練:僅需配置數據和日志輸出路徑,使用預置模型進行遷移學習,自動超參調優,自動模型壓縮((量化、修剪),零編碼模型訓練優化

      ModelArts預置算法是指?ModelArts平臺自帶的算法,僅需提供數據即可自動訓練,在采用預置算法訓練之前,開發者僅需要按照規范準備好數據集,無須關心具體的調練代碼及訓練啟動后鏡像容器的上傳、下載等其他工作,預置算法會自動將調練好的模型和?Tensorboard日志文件上傳到開發者定的OBS中供查看。

      在ModelArts管理控制臺,選擇“訓練管理 > 訓練作業”,然后單擊“預置算法”頁簽,進入預置算法列表頁面。在預置算法列表中,您可以單擊算法名稱前的,查看該算法的詳情。

      另外,您還可以在算法的“操作”列,單擊“創建訓練”,快速創建一個訓練作業,將此算法用于訓練作業中的“算法來源”。

      其中目前的算法包括

      yolo_v3

      yolov3_resnet18

      retinanet_resnet_v1_50

      inception_v3

      darknet_53

      SegNet_VGG_BN_16

      ResNet_v2_50

      ResNet_v1_50

      Faster_RCNN_ResNet_v2_101

      Faster_RCNN_ResNet_v1_50

      還可以去市場里找更多的算法使用,只需要訂閱之后即可使用,使用方法與預置算法基本一樣,非常方便。

      ModelArts預置算法應用案例

      動手實踐

      使用FasterRCNN預置算法基于海量數據訓練人車檢測模型:

      https://github.com/huaweicloud/ModelArts-Lab/blob/master/train_inference/Car_And_Person_Detection_Builtin_Algorithm/readme.md

      在自動駕駛方案實現的過程中,物體檢測是其中一個重要的技術。本案例基于ModelArts AI Gallery中官方發布的物體檢測算法FasterRCNN,訓練一個人車檢測模型,并部署成在線服務,生成一個人車檢測AI應用。

      ModelArts的AI Gallery有豐富的算法,使用這些算法,無需自己開發訓練代碼和推理代碼,只要準備并標注好數據,就可以輕松快速訓練并部署模型。

      準備工作

      參考此文檔,完成ModelArts準備工作,包括注冊華為云賬號、ModelArts全局配置和OBS相關操作。

      準備數據

      下載訓練數據集

      本案例采用自動駕駛場景的數據集,數據集中有兩種物體,人和車。

      本案例的數據集已經發布在AI Gallery,我們從華為云AI Gallery訂閱數據集至ModelArts,然后就可以在ModelArts中使用了。點擊此鏈接進入下載詳情頁,下載詳情頁示例如下:

      下載方式:選擇ModelArts數據集

      目標區域:華北-北京四

      目標位置:選擇一個OBS路徑,作為數據集的存儲位置。

      名稱:自定義。

      填寫好參數后,點擊按鈕,然后點擊按鈕。等待數據集狀態變為推送成功,即可在ModelArts數據集列表中查看到下載的數據集。

      發布數據集

      點擊進入ModelArts數據集列表,找到剛訂閱的數據集,點擊“發布”按鈕,填寫訓練集比例為0.8,發布數據集。數據集發布之后,才可在訓練中使用。

      等待數據集發布成功。

      訂閱算法

      本實驗中,我們從AI Gallery訂閱ModelArts官方發布的物體檢測算法FasterRCNN來訓練模型。

      點擊進入AI GalleryFasterRCNN算法主頁,點擊頁面右上方的按鈕。然后點擊頁面下方的按鈕,再點擊按鈕,選擇華北-北京四區域,最后點擊按鈕進入算法管理頁面,可以看到剛剛訂閱的算法。

      點擊“同步”按鈕,同步算法,可以點擊按鈕,刷新狀態。當狀態變成就緒時,表示同步成功。

      模型訓練

      我們使用創建的人車檢測數據集,提交一個人車檢測訓練作業,訓練會生成一個人車檢測模型。

      創建訓練作業

      回到ModelArts訓練管理頁面,在【訓練管理】選擇訓練作業,點擊【創建】,如下圖所示:

      在創建訓練作業頁面中選擇算法:

      選擇算法,(算法列表是按訂閱時間顯示的,找到名稱為物體檢測-FasterRCNN_ResNet50的算法,選中它)

      計費模式:按需計費

      名稱:自定義

      算法來源:算法管理

      算法名稱:物體檢測-FasterRCNN_ResNet50

      數據來源:數據集

      選擇數據集和版本:選擇剛剛發布的人車數據集及其版本

      訓練輸出:選擇OBS路徑/lftiny/car_and_person_detection/output/(此OBS路徑如果不存在,可以使用OBS客戶端創建)。訓練輸出位置用來保存訓練生成的模型。

      調優參數:用于設置算法中的超參。算法會加載默認參數,但是可以更改和添加參數。設置learning_rate_strategy=20:0.001,表示訓練20輪,學習率固定為0.001。其他調優參數保持默認。

      作業日志路徑:選擇OBS路徑/lftiny/car_and_person_detection/log/(此OBS路徑如果不存在,可以使用OBS客戶端創建)。

      資源池:公共資源池。

      規格:?[限時免費]GPU: 1*NVIDIA-V100-pcie-32gb(32GB) | CPU: 8 核 64GB,如圖所示。

      計算節點個數:選擇1,表示我們運行一個單機訓練任務。

      所有字段填寫好之后,確認參數無誤,點擊“下一步”按鈕,然后點擊“提交”按鈕,開始訓練。

      使用V100 GPU資源,訓練時長預計30分鐘左右。

      查看訓練結果

      訓練作業完成后,可以查看訓練作業的運行結果。

      在訓練作業頁面,點擊作業名稱,進入配置信息頁面??梢圆榭吹接柧氉鳂I的詳情。

      切換到“日志”頁簽,查看訓練作業的訓練日志,還可以下載日志到本地查看。

      訓練日志中會打印一些訓練的精度和訓練速度等信息。

      訓練生成的模型會放到訓練輸出位置OBS路徑下,可以直接下載到本地使用。

      模型部署

      導入模型

      點擊“創建模型”按鈕,創建模型。

      元模型來源:從訓練中選擇

      選擇訓練作業及版本:剛剛的訓練作業及版本,會自動加載

      部署類型:默認

      推理代碼:自動加載

      其他保持默認。

      點擊“立即創建”按鈕,開始導入模型,等待模型導入成功。

      部署上線

      等待模型狀態為正常,然后點擊部署下拉框中的“在線服務”,如下圖所示:

      計費模式:按需計費

      名稱:自定義

      是否自動停止:開啟,一小時后。會在1小時后自動停止該在線服務。

      資源池:公共資源池。如果您購買了專屬資源池,也可以選擇專屬資源池部署。

      模型來源:我的模型

      模型:選擇剛剛導入美食人車檢測的模型和版本,會自動加載。

      計算節點規格:選擇[限時免費]CPU:1 核 4 GiB。

      計算節點個數:1。如果想要更高的并發數,可以增加計算節點個數,會以多實例的方式部署。

      填寫好所有參數,點擊“下一步”按鈕,然后點擊“提交”按鈕,最后點擊查看服務詳情。狀態欄會顯示部署進度,大概3分鐘左右會部署完成。

      在線服務測試

      在線服務的本質是RESTful API,可以通過HTTP請求訪問,在本案例中,我們直接在網頁上訪問在線服務。

      等待在線服務的狀態變成運行中。

      先點此鏈接下載測試集,解壓,再切換到預測標簽,點擊上傳按鈕,進行測試

      預測結果會出現在右邊的輸出框:

      預測結果中的detection_classes字段,表示識別的分類(人與車)

      預測結果中的detection_boxes字段,表示識別框的四個角坐標

      預測結果中的detection_scores字段,表示圖片為每種類別的置信度

      關閉在線服務

      為了避免持續扣費,案例完成后,需要關閉在線服務,點擊“停止”按鈕即可:

      確認關閉所有計費項

      點擊此鏈接,進入ModelArts總覽頁面,如果所有計費中的數字都是0,表示所有計費項都關閉了。

      案例完成。

      四、FasterRCNN和YoLOV3算法完成物體檢測

      Faster RCNN是由Ross Girshick由何凱明等人在2016年將其用于目標檢測任務中,能夠完成高效的與傳統的RCNN相比,利用RPN(Region Proposal Networks)完成候選框的選擇,Fast RCNN的結構如下圖所示:

      如圖,Faster R-CNN網絡分為兩部分,一是Region Proposal Network(RPN),二是Fast R-CNN。其中RPN包括圖中proposals和conv layers,Fast R-CNN包括卷積層、ROI pooling及后面全連接層等部分。 Faster RCNN首先將整張圖片輸進CNN,提取圖片的feature maps。將圖片特征輸入到到RPN,得到候選框的特征信息。RPN對于候選框中提取出的特征,使用分類器判別是否屬于待識別的目標的候選框,將屬于某一類別的候選框,用回歸器進一步調整其位置。最后將目標框和圖片的特征向量輸入到Roi pooling層,再通過分類器進行分類,完成目標檢測的任務。RPN能夠協助Fast RNN將注意力集中在候選框中。

      卷積層

      Faster RCNN首先將整張圖片輸進CNN,提取圖片的feature map,再將其輸入到到RPN,得到候選框的特征信息。這里我們采用VGG16完成feature map的提取。卷積層是被RPN和Fast R-CNN兩部分共享的。

      RPN

      相比于Fast RCNN,Faster R-CNN引入RPN(Region Proposal Network)完成候選框的提取,使得算法效率得到進一步提升。

      RPN將任意尺寸大小的圖片作為輸入,輸出若干個矩形候選框。為了生成區域候選框,在卷積層最后一層feature map上滑動一個(n*n)的網絡,將卷積生成的feature map與(n*n)的窗口進行卷積運算。每一個滑動窗口都映射為一個更低維的特征。得到的特征送入兩個分支中,一個用于框分類,另一個用于框回歸。此網絡執行滑動窗口形式,所有空間位置都共享全連接層。

      滑動窗口的中心在圖像上對應一片區域,計算出該區域的中心位置后以該位置為中心,按3種scale、每種scale各有3種長寬比取9個矩形區域。這些區域就是提取到的anchors boxes。可見,feature maps中的一個位置,共有9個anchors,3種scale可以根據具體情況更改的,更改時最好能使最大的scale能基本將input image覆蓋。 在確定好k個anchor box之后,就能確定相應的位置信息,通過2次bounding-box regression對位置進行修正。 首先判斷anchors是否為前景,使用classifier對anchors進行二分類,輸出兩個概率值,即圖中左側對應的2k score。其次,計算對于anchors的bounding box regression偏移量(x,y,w,h),以修正邊框位置,即圖中右側4k coordinates。 最后將兩者結合生成region proposals,同時剔除太小和超出邊界的proposals,最后將提取到的proposals提交給后面的Roi Pooling層。

      Roi Pooling

      Fast R-CNN改進了R-CNN,應用了Roi Pooling。 由于在全連接層,需要輸入固定大小的特征向量,R-CNN網絡經過warp操作統一成固定的大小再送入后續網絡,導致圖像的變形和扭曲。而且每一個proposal均需要單獨進行特征提取,重復計算量大。Poipooling通過卷積計算將圖像統一成固定大小的特征向量。Roi Pooling的輸入是卷積層得到的feature map和RNP得到的anchor,將其分割成7 * 7大小的子窗口,對每個子窗口進行max-pooling操作,輸出ROI(region of interest)的feature map。輸入后續的全連接層判斷目標。

      Classifier

      在這一步,分類器完成對候選區域的檢測。利用RoI feature maps計算ROI類別,同時再次bounding box regression獲得目標最終的位置。

      后記

      從原始的CNN增加候選框的提取過程形成RCNN。接下來,RCNN加入Roi pooling形成Fast RCNN。然后,Faster RNN引入了RPN完成候選框的提取,并與FRCNN共享卷積層。模型不斷的改善,彌補之前的不足,使得目標檢測任務更準確和迅速。

      物體檢測是計算機視覺中的一個重要的研究領域,在人流檢測,行人跟蹤,自動駕駛,醫學影像等領域有著廣泛的應用。不同于簡單的圖像分類,物體檢測旨在對圖像中的目標進行精確識別,包括物體的位置和分類,因此能夠應用于更多高層視覺處理的場景。例如在自動駕駛領域,需要辨識攝像頭拍攝的圖像中的車輛、行人、交通指示牌及其位置,以便進一步根據這些數據決定駕駛策略。本期學習案例,我們將聚焦于YOLO算法,YOLO(You Only Look Once)是一種one-stage物體檢測算法。

      算法開發流程:準備數據到搭建神經網絡,模型訓練,最后進行模型推理測試。

      動手實踐

      物體檢測Faster R-CNN實踐:

      https://github.com/huaweicloud/ModelArts-Lab/blob/master/notebook/DL_image_object_detection_faster/Faster-R-CNN.ipynb

      物體檢測YOLOv3實踐:

      https://github.com/huaweicloud/ModelArts-Lab/blob/master/notebook/DL_image_object_detection_yolo/object_detection_yolo.ipynb

      物體檢測-Faster R-CNN

      進入環境

      進入ModelArts

      【云駐共創】華為云AI實戰營:物體檢測

      點擊如下鏈接:https://www.huaweicloud.com/product/modelarts.html?, 進入ModelArts主頁。點擊“立即使用”按鈕,輸入用戶名和密碼登錄,進入ModelArts使用頁面

      創建ModelArts notebook

      下面,我們在ModelArts中創建一個notebook開發環境,ModelArts notebook提供網頁版的Python開發環境,可以方便的編寫、運行代碼,并查看運行結果。

      第一步:在ModelArts服務主界面依次點擊“開發環境”、“創建”

      第二步:填寫notebook所需的參數:

      第三步:配置好notebook參數后,點擊下一步,進入notebook信息預覽。確認無誤后,點擊“立即創建“

      第四步:創建完成后,返回開發環境主界面,等待Notebook創建完畢后,打開Notebook,進行下一步操作

      在ModelArts中創建開發環境

      接下來,我們創建一個實際的開發環境,用于后續的實驗步驟。

      第一步:點擊下圖所示的“打開”按鈕,進入剛剛創建的Notebook,

      第二步:創建一個Python3環境的的Notebook。點擊右上角的\"New\",然后選擇Pytorch-1.0.0開發環境。

      第三步:點擊左上方的文件名\"Untitled\",并輸入一個與本實驗相關的名稱,

      在Notebook中編寫并執行代碼

      在Notebook中,我們輸入一個簡單的打印語句,然后點擊上方的運行按鈕,可以查看語句執行的結果:",

      開發環境準備好啦,接下來可以愉快地寫代碼啦!"

      數據準備

      首先,我們將需要的代碼和數據下載到Notebook。

      本案例我們使用PASCAL VOC 2007數據集訓練模型,共20個類別的物體。

      安裝依賴并引用

      神經網絡搭建

      模型訓練超參設置

      為了減少訓練時間,我們在預訓練模型的基礎上進行訓練。這里,我們使用VGG16作為FasterRCNN的主干網絡。

      定義讀取數據集函數

      數據集的標注格式是PASCAL VOC格式。

      設置模型訓練參數

      定義神經網絡結構

      使用PyTorch搭建神經網絡。

      部分實現細節可以去相應的文件夾查看源碼。

      開始訓練

      測試部分

      在這部分中,我們利用訓練得到的模型進行推理測試。

      結果繪制

      將預測的標簽和邊界框繪制在原圖上。

      準備測試圖片

      我們將測試圖片傳到test文件夾下,我們準備了兩張圖片進行測試,大家也可以通過notebook的upload按鈕上傳自己的測試數據。注意,測試數據需要是圖片,并且放在test文件夾下。

      In?[16]:

      test_file = "./test"

      模型推理

      這里我們加載一個預先訓練好的模型,也可以選擇案例中訓練的模型。

      物體檢測YOLOv3實踐

      在Notebook中編寫并執行代碼

      在Notebook中,我們輸入一個簡單的打印語句,然后點擊上方的運行按鈕,可以查看語句執行的結果:

      開發環境準備好啦,接下來可以愉快地寫代碼啦!

      數據和代碼下載

      運行下面代碼,進行數據和代碼的下載和解壓

      本案例使用coco數據,共80個類別。

      準備數據

      文件路徑定義

      模型訓練

      本案例使用Keras深度學習框架搭建YOLOv3神經網絡。

      可以進入相應的文件夾路徑查看源碼實現。

      構建神經網絡

      可以在./yolo3/model.py文件中查看細節

      訓練回調函數定義

      開始訓練

      保存模型

      In?[9]:

      import os os.makedirs(save_path) # 保存模型 model.save_weights(os.path.join(save_path, 'trained_weights_final.h5'))

      模型測試

      打開一張測試圖片

      圖片預處理,構建模型,加載模型權重,或將模型路徑替換成上一步訓練得出的模型路徑;

      定義IOU以及score:

      IOU: 將交并比大于IOU的邊界框作為冗余框去除

      score:將預測分數大于score的邊界框篩選出來

      構建輸出[boxes, scores, classes]

      進行預測

      將預測結果繪制在圖片上

      總結:

      零代碼人車檢測模型開發的基礎上進行數據集擴充已達到模型調優的目的。零代碼開發,相信大家在第一章的學習中已經領略到了ModelArts的魅力,沒錯,零代碼的確能訓練出一個精度還可以的模型。一般來說,ModelArts上的零代碼開發模型有兩種方式:一是自動學習、二是預置算法(或者市場訂閱算法)。

      FasterRCNN的工作原理是首先通過卷積層來提取圖像的特征,得到特征圖。而卷積層可以是vgg16、resnet50或resnet101等網絡結構中的其中一種,不同網絡結構的卷積層可以在此處進行靈活的替換。我。卷積層其實有個專業的名稱,中文名稱為主干網絡,英文名稱為backbone,它的作用是從圖片中提取特征得到特征圖。業界常用的圖像領域主干網絡有AlexNet、VGG、GoogleNet、Xception、Inception、ResNet、ResNext、DenseNet、MobileNet、SENet等等。在已經訓練好的主干網絡的基礎上繼續訓練自己的數據集,這樣可以提升模型訓練效率,不用完全從零開始訓練。這里直接在之前拉取的代碼中進行實現。

      在YOLOv3課程案例中,我們使用200張coco數據集的圖片跑通了訓練,這部分圖片在coco/coco_data目錄中,標注文件是一個txt,路徑是coco/coco_train.txt,如下圖所示,該文件中的每一行是一張圖片的所有物體框標注,標注的格式是“圖片的路徑 xmin,ymin,xmax,ymax,label_id ...”,物體檢測算法就是根據這些標注框的信息來進行學習。anchor這個詞目前沒有一個貼切的中文翻譯,從作用上理解,anchor就是從訓練集的所有標注框中統計出來的、在訓練集中最經常出現的一些標注框的尺寸大小值和寬高比值。比如,有個檢測行人的任務,訓練集中出現站立姿態的人非常多,那么常見的寬高比就是0.3:1,這樣模型在學習的時候,就直接告訴它 “你多嘗試0.3:1的檢測框,放寬松一點的話,你也可以試試0.2:1和0.4:1,就不要瞎嘗試其他比例的形狀了”,比如10:1的形狀就不要試了,不會有身體寬度是身高10倍的人。這樣,引入anchor其實是把人的一些先驗知識加了進來,讓模型更有效地學習。

      物體檢測是計算機視覺中的經典問題之一,其包含識別和定位兩個重要的子任務。其任務是用框去標出圖像中物體的位置,并給出物體的類別。從傳統的人工設計特征加淺層分類器的框架,到基于深度學習的端到端的檢測框架,物體檢測一步步變得愈加成熟。物體檢測模型的好壞受到多種因素影響。在這些影響因素中,特征、搜索空間和框架起到了至關重要的作用。近6年物體檢測領域飛速發展。未來物體檢測一定是朝著更準確、高速的方向發展,如更完善的特征金字塔構造過程、無需候選框的物體檢測和分割方法,以及向弱監督、無監督物體檢測。

      注:本文整理自華為云社區內容共創活動之華為云AI實戰營:物體檢測

      查看活動詳情:https://bbs.huaweicloud.com/blogs/308924

      AI 云學院

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

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

      上一篇:涂料行業勞保用品數字化轉型成功,實現降本增效
      下一篇:excel表格函數公式如何取消(怎么取消表格里的函數公式)
      相關文章
      亚洲日韩乱码中文无码蜜桃| 亚洲国产精品久久久久网站| 亚洲黄色免费网址| 亚洲一区精品伊人久久伊人| 亚洲不卡AV影片在线播放| 色欲aⅴ亚洲情无码AV蜜桃| 精品亚洲456在线播放| 亚洲一区二区三区高清视频| 亚洲一区二区三区久久| 亚洲一级片在线观看| avtt天堂网手机版亚洲| 亚洲va成无码人在线观看| 亚洲中文字幕人成乱码 | 亚洲欧洲精品成人久久曰影片| 国产精品亚洲一区二区在线观看| 亚洲精品无码专区在线播放| 亚洲精品国产第一综合99久久| 亚洲精品国产高清在线观看| 精品国产亚洲AV麻豆| 亚洲国产精品毛片av不卡在线| 亚洲欧洲自拍拍偷精品 美利坚| 中文字幕不卡亚洲| 亚洲精品无码成人片久久| 亚洲今日精彩视频| 亚洲国产美女视频| 亚洲AV男人的天堂在线观看| 亚洲人成色4444在线观看| 精品国产亚洲AV麻豆| 亚洲日韩国产精品乱| 亚洲热线99精品视频| 亚洲第一中文字幕| 亚洲精品在线免费看| 亚洲乱码在线卡一卡二卡新区| 亚洲av无码有乱码在线观看| 亚洲AⅤ永久无码精品AA| 自拍偷自拍亚洲精品第1页| 亚洲av无码乱码国产精品| 亚洲最新永久在线观看| 亚洲美女视频网址| 亚洲一日韩欧美中文字幕在线| 亚洲精品宾馆在线精品酒店|