<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          實(shí)操教程|YOLOv5實(shí)現(xiàn)自定義對(duì)象訓(xùn)練與OpenVINO部署全解析

          共 7173字,需瀏覽 15分鐘

           ·

          2021-05-29 19:07

          ↑ 點(diǎn)擊藍(lán)字 關(guān)注極市平臺(tái)

          作者丨gloomyfish
          來源丨OpenCV學(xué)堂
          編輯丨極市平臺(tái)

          極市導(dǎo)讀

           

          本文從數(shù)據(jù)準(zhǔn)備、模型訓(xùn)練與模型轉(zhuǎn)換部署三個(gè)部分詳細(xì)介紹了如何使用YOLOv5訓(xùn)練自定義對(duì)象檢測(cè)。 >>加入極市CV技術(shù)交流群,走在計(jì)算機(jī)視覺的最前沿

          大家好,前面寫了一個(gè)OpenVINO部署YOLOv5推理的教程,收到很多反饋!這里就再寫了一篇如何使用YOLOv5訓(xùn)練自定義對(duì)象檢測(cè),從數(shù)據(jù)準(zhǔn)備到推理整個(gè)環(huán)節(jié),幫助大家更好的使用YOLOv5來解決實(shí)際問題。整個(gè)文章主要分為三個(gè)部分,分別是數(shù)據(jù)準(zhǔn)備與YOLO格式數(shù)據(jù)轉(zhuǎn)換,模型訓(xùn)練與推理測(cè)試,模型轉(zhuǎn)換為ONNX與部署。

          數(shù)據(jù)下載與準(zhǔn)備

          數(shù)據(jù)下載我參考了別人提到一個(gè)Open Imag數(shù)據(jù)集的下載工具,github地址如下:

          https://github.com/EscVM/OIDv4_ToolKit

          用這個(gè)工具可以很方便的下載想要的數(shù)據(jù),Open Image數(shù)據(jù)集包括包括100W+張圖像,對(duì)象檢測(cè)支持600個(gè)類別,所以很多圖像都可以通過這個(gè)來下載,避免自己收集圖像數(shù)據(jù)與標(biāo)注數(shù)據(jù)的時(shí)間。所以首先需要執(zhí)行

          git clone https://github.com/EscVM/OIDv4_ToolKit

          然后運(yùn)行

          pip3 install -r requirements.txt

          安裝好所有依賴,之后再下載數(shù)據(jù)集

          python3 main.py downloader --classes Apple Orange --type_csv validation

          意思是下載蘋果跟橘子兩個(gè)類別的圖像標(biāo)注數(shù)據(jù)。下載好的數(shù)據(jù)集文件夾結(jié)構(gòu)如下:

          分為三個(gè)文件夾,分別對(duì)應(yīng)訓(xùn)練集、測(cè)試集、驗(yàn)證集。其中jpg文件是每個(gè)圖像,labels里面的txt同名文件是每個(gè)圖像中對(duì)象標(biāo)注信息,格式如下:

          name_of_the_class left top right bottomname_of_the_class 對(duì)象類別名稱left top標(biāo)注框左上角坐標(biāo)right bottom 標(biāo)注框右下角坐標(biāo)

          轉(zhuǎn)換為YOLO標(biāo)注格式數(shù)據(jù),首先看一下標(biāo)注文本文件與圖像的文件夾結(jié)構(gòu)

          其中images是所有圖像的集合,labels是所有標(biāo)簽信息集合。train表示訓(xùn)練集、valid表示測(cè)試集。這里需要注意的是,labels信息中的標(biāo)簽信息YOLO格式標(biāo)注框需要把原始標(biāo)注信息的標(biāo)注框格式從:

          Left top right bottom

          轉(zhuǎn)換為

          Center_x, center_y, width, height

          并歸一化到0~1之間,這部分我寫了一個(gè)腳本來完成label標(biāo)簽的生成。代碼如下:

          for f in files:    if os.path.isfile(os.path.join(current_dir, f)):        image = cv.imread(os.path.join(current_dir, f))        label_file = os.path.join(current_dir, "label", f.replace(".jpg"".txt"))        yolo_label = f.replace(".jpg"".txt")        data_label_text_f = os.path.join(valid_label_dir, yolo_label)        file_write_obj = open(data_label_text_f, 'w')        with open(label_file) as f:            boxes = [line.strip() for line in f.readlines()]        clazz_index = -1        # create new file        for box in boxes:            anno_info = box.split(" ")            if anno_info[0] == "Cricket":                print("class name: ", anno_info[0] + " ball")                x1 = float(anno_info[2])                y1 = float(anno_info[3])                x2 = float(anno_info[4])                y2 = float(anno_info[5])                clazz_index = 0            else:                print("class name: ", anno_info[0])                x1 = float(anno_info[1])                y1 = float(anno_info[2])                x2 = float(anno_info[3])                y2 = float(anno_info[4])                clazz_index = 1            h, w, c = image.shape            cx = (x1 + (x2 - x1) / 2) / w            cy = (y1 + (y2 - y1) / 2) / h            sw = (x2 - x1) / w            sh = (y2 - y1) / h            file_write_obj.write("%d %f %f %f %f\n"%(clazz_index, cx, cy, sw, sh))            # cv.rectangle(image, (int(x1), int(y1)), (int(x2), int(y2)),(00255), 28)        file_write_obj.close()

          最后需要?jiǎng)?chuàng)建一個(gè)dataset.ymal文件,放在與data文件夾同一層,它的內(nèi)容如下:

          # train andval datasets (image directory or *.txt file with image paths)train:football_training/data/images/train/val: football_training/data/images/valid/ # number ofclassesnc: 2 # class namesnames:['Cricketball', 'Football']

          其中

          CricketballFootball是我從Open Image中下載的兩個(gè)類別數(shù)據(jù)。nc:2 表示識(shí)別兩個(gè)類別。

          這樣就完成了整個(gè)數(shù)據(jù)集準(zhǔn)備部分。

          模型訓(xùn)練與推理測(cè)試

          這里我分別基于yolov5l.ymal與yolov5s.ymal完成了模型訓(xùn)練,需要修改的只有一個(gè)地方,就是把類別數(shù)目從80改為2。圖示如下:

          然后執(zhí)行訓(xùn)練腳本的命令行如下:

          python train.py --data --epochs 300 football_training/dataset.yaml --cfg football_traing/yolov5l.yaml --weights '' --batch-size 1

          推薦的參數(shù)中沒有這么小的batchi-size,我是用筆記本訓(xùn)練,發(fā)現(xiàn)2就爆內(nèi)存了,人窮!有條件的把這個(gè)參數(shù)調(diào)大點(diǎn),效果會(huì)好!訓(xùn)練時(shí)可以通過tensorboard查看訓(xùn)練實(shí)時(shí)變換,圖示如下:

          最終每個(gè)類別的AP得分

          最終訓(xùn)練完成得到best.pt文件

          運(yùn)行測(cè)試視頻

          python detect.py --source football_training/test.mp4 --weights football_training/best.pt --conf 0.5

          ONNX格式推理部署


          通過下面的腳本轉(zhuǎn)換為ONNX文件

          python models/export.py --weights football_training/best.pt --img 640 --batch 1

          然后再轉(zhuǎn)換為OpenVINO的IR中間文件格式

          運(yùn)行效果如下:

          如果覺得有用,就請(qǐng)分享到朋友圈吧!

          △點(diǎn)擊卡片關(guān)注極市平臺(tái),獲取最新CV干貨

          公眾號(hào)后臺(tái)回復(fù)“82”獲取CVPR 2021-LightTrack直播回放及PPT~


          極市干貨
          YOLO教程:一文讀懂YOLO V5 與 YOLO V4大盤點(diǎn)|YOLO 系目標(biāo)檢測(cè)算法總覽全面解析YOLO V4網(wǎng)絡(luò)結(jié)構(gòu)
          實(shí)操教程:PyTorch vs LibTorch:網(wǎng)絡(luò)推理速度誰(shuí)更快?只用兩行代碼,我讓Transformer推理加速了50倍PyTorch AutoGrad C++層實(shí)現(xiàn)
          算法技巧(trick):深度學(xué)習(xí)訓(xùn)練tricks總結(jié)(有實(shí)驗(yàn)支撐)深度強(qiáng)化學(xué)習(xí)調(diào)參Tricks合集長(zhǎng)尾識(shí)別中的Tricks匯總(AAAI2021
          最新CV競(jìng)賽:2021 高通人工智能應(yīng)用創(chuàng)新大賽CVPR 2021 | Short-video Face Parsing Challenge3D人體目標(biāo)檢測(cè)與行為分析競(jìng)賽開賽,獎(jiǎng)池7萬(wàn)+,數(shù)據(jù)集達(dá)16671張!


          CV技術(shù)社群邀請(qǐng)函 #

          △長(zhǎng)按添加極市小助手
          添加極市小助手微信(ID : cvmart2)

          備注:姓名-學(xué)校/公司-研究方向-城市(如:小極-北大-目標(biāo)檢測(cè)-深圳)


          即可申請(qǐng)加入極市目標(biāo)檢測(cè)/圖像分割/工業(yè)檢測(cè)/人臉/醫(yī)學(xué)影像/3D/SLAM/自動(dòng)駕駛/超分辨率/姿態(tài)估計(jì)/ReID/GAN/圖像增強(qiáng)/OCR/視頻理解等技術(shù)交流群


          每月大咖直播分享、真實(shí)項(xiàng)目需求對(duì)接、求職內(nèi)推、算法競(jìng)賽、干貨資訊匯總、與 10000+來自港科大、北大、清華、中科院、CMU、騰訊、百度等名校名企視覺開發(fā)者互動(dòng)交流~



          覺得有用麻煩給個(gè)在看啦~  
          瀏覽 76
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  精品一区二区三区四 | 免费性爱视频 | 日本福利视频一区 | 亚洲秘 无码一区二区三区妃光 | 青青色在线观看 |