<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>

          yolov5魚苗檢測(cè)計(jì)數(shù):從數(shù)據(jù)標(biāo)注到訓(xùn)練

          共 6340字,需瀏覽 13分鐘

           ·

          2022-03-01 01:12

          1ce9b912a8f9c196fbad2bc8efe0194a.webp

          向AI轉(zhuǎn)型的程序員都關(guān)注了這個(gè)號(hào)??????

          機(jī)器學(xué)習(xí)AI算法工程?? 公眾號(hào):datayx



          目標(biāo)檢測(cè)yolov5 v6.0版,pytorch實(shí)現(xiàn),包含了目標(biāo)檢測(cè)數(shù)據(jù)標(biāo)注,數(shù)據(jù)集增強(qiáng),訓(xùn)練自定義數(shù)據(jù)集全流程。

          一.環(huán)境

              Python >= 3.7
          Pytorch >= 1.7.x

          二.標(biāo)注工具

          pip install labelImg ==1.8.6

          安裝完畢后,鍵入命令:

          labelImg

          或者下載工具 labelImg.exe?


          項(xiàng)目全部代碼,數(shù)據(jù)集,標(biāo)注工具,預(yù)訓(xùn)練模型獲取方式:

          關(guān)注微信公眾號(hào) datanlp? 然后回復(fù)?魚苗?即可獲取。



          半自動(dòng)標(biāo)注

          如果數(shù)據(jù)集較多,可以先手動(dòng)標(biāo)注少量,然后訓(xùn)練出初版模型,然后用初版模型預(yù)測(cè)進(jìn)行預(yù)標(biāo)注,最后人工檢查。

          步驟:

          1.將待標(biāo)注圖像放入auto_label/images

          2.修改auto_label.py的第62至65行如下的內(nèi)容:

          path = r"auto_label/images"   #待標(biāo)注圖片路徑
          xml_path = r"auto_label/images" #輸出的xml標(biāo)注文件保存路徑
          yolo_model_weight='./weight/IDCard_v6x_best.pt' #模型文件路徑
          data_conf = './data/custom_data.yaml' #數(shù)據(jù)集配置文件路徑

          3.運(yùn)行auto_label.py


          三.數(shù)據(jù)集增強(qiáng)

          步驟:

          1.將標(biāo)注數(shù)據(jù)集的標(biāo)簽(xml文件)放入./DataAugForObjectDetection/data/Annotations

          2.將標(biāo)注數(shù)據(jù)集的圖片放入./DataAugForObjectDetection/data/images

          3.修改./DataAugForObjectDetection/DataAugmentForObejctDetection.py/中的need_aug_num,即每張圖片需要擴(kuò)增的數(shù)量,然后運(yùn)行./DataAugForObjectDetection/DataAugmentForObejctDetection.py

          注意:DataAugmentForObejctDetection_pool.py 是多進(jìn)程增強(qiáng)版本,耗時(shí)較少。代碼中的process不宜設(shè)置過大否則可能會(huì)報(bào)錯(cuò),默認(rèn)即可。

          四.數(shù)據(jù)集格式轉(zhuǎn)換

          ?VOC?的數(shù)據(jù)集轉(zhuǎn)換成?YOLOv5?訓(xùn)練需要用到的格式。

          步驟:

          1.將標(biāo)注數(shù)據(jù)集的標(biāo)簽(xml文件)放入./datasets/Annotations

          2.將標(biāo)注數(shù)據(jù)集的圖片放入./datasets/images

          3.將voc_to_coco.py中的class_names改為數(shù)據(jù)集中標(biāo)注的類別名稱,運(yùn)行 voc_to_coco.py


          額外說明

          需要生成每個(gè)圖片對(duì)應(yīng)的?.txt?文件,其規(guī)范如下:

          • 每一行都是一個(gè)目標(biāo)

          • 類別序號(hào)是零索引開始的(從0開始)

          • 每一行的坐標(biāo)?class x_center y_center width height?格式

          • 框坐標(biāo)必須采用歸一化的 xywh格式(從0到1)。如果您的框以像素為單位,則將x_centerwidth除以圖像寬度,將y_centerheight除以圖像高度。

          生成的?.txt?例子:

          1 0.1830000086920336 0.1396396430209279 0.13400000636465847 0.15915916301310062
          1 0.5240000248886645 0.29129129834473133 0.0800000037997961 0.16816817224025726
          1 0.6060000287834555 0.29579580295830965 0.08400000398978591 0.1771771814674139
          1 0.6760000321082771 0.25375375989824533 0.10000000474974513 0.21321321837604046
          0 0.39300001866649836 0.2552552614361048 0.17800000845454633 0.2822822891175747
          0 0.7200000341981649 0.5570570705458522 0.25200001196935773 0.4294294398277998
          0 0.7720000366680324 0.2567567629739642 0.1520000072196126 0.23123123683035374

          如果數(shù)據(jù)標(biāo)簽沒生成正確,則會(huì)報(bào)錯(cuò)

          mlc = int(np.concatenate(dataset.labels, 0)[:, 0].max())  # max label class
          File "D:\app\anaconda3\lib\site-packages\numpy\core\_methods.py", line 40, in _amax
          return umr_maximum(a, axis, None, out, keepdims, initial, where)
          ValueError: zero-size array to reduction operation maximum which has no identity

          五.修改數(shù)據(jù)集配置文件

          在?data/目錄下修改數(shù)據(jù)集配置文件?custom_data.yaml ,文件內(nèi)容如下

          # 目標(biāo)類型數(shù)量,按自己的數(shù)據(jù)集來改
          nc: 3

          #目標(biāo)類型名稱,按自己的數(shù)據(jù)集來改
          names: ['person', 'head', 'helmet']

          六.聚類得出先驗(yàn)框(Yolov5 內(nèi)部已做適配,可選)

          步驟:

          1.將./gen_anchors/clauculate_anchors.py的CLASS_NAMES改為數(shù)據(jù)集中標(biāo)注的類別名稱

          2.運(yùn)行?./gen_anchors/clauculate_anchors.py

          跑完會(huì)生成一個(gè)文件?anchors.txt,里面有得出的建議先驗(yàn)框:

          Best Anchors : 
          [257, 114, 309, 75, 327, 243]
          [439, 59, 469, 347, 488, 117]
          [497, 460, 500, 240, 500, 172]

          七.修改模型配置文件

          在文件夾?./models?下選擇一個(gè)你需要的模型然后復(fù)制一份出來(選擇的預(yù)訓(xùn)練模型pt文件模型名稱必須與模型配置文件yaml對(duì)應(yīng),否則加載模型會(huì)報(bào)錯(cuò)),將文件開頭的?nc =?修改為數(shù)據(jù)集的分類數(shù),修改第六步獲取的先驗(yàn)框anchors(可選)。

          比如,預(yù)訓(xùn)練模型是yolov5s.pt,就需要復(fù)制一份./models/yolov5s.yaml,重命名為custom_yolov5.yaml。

          然后修改custom_yolov5.yaml中的 nc和anchors(可選)。

          # parameters
          nc: 1 # number of classes
          depth_multiple: 0.33 # model depth multiple
          width_multiple: 0.50 # layer channel multiple

          # anchors
          anchors:
          - [257, 114, 309, 75, 327, 243] # P3/8
          - [439, 59, 469, 347, 488, 117] # P4/16
          - [497, 460, 500, 240, 500, 172] # P5/32

          八.開始訓(xùn)練

          1.將預(yù)訓(xùn)練模型下載放置在weight目錄下;

          2.修改train.py中的第454行weights預(yù)訓(xùn)練模型的路徑;

          3.修改train.py中的第455行cfg模型配置文件路徑

          4.修改train.py中的第455行batch-size

          5.運(yùn)行train.py

          注意 workers=0 #必須為0


          注意:

          如果代碼是 從github 重新clone下來的,需要

          注釋掉 utils/loggers/init.py 的wandb,不然程序會(huì)提示你需要注冊(cè)wandb用戶

          修改如下:

          # try:
          # import wandb
          #
          # assert hasattr(wandb, '__version__') # verify package import not local dir
          # if pkg.parse_version(wandb.__version__) >= pkg.parse_version('0.12.2') and RANK in [0, -1]:
          # try:
          # wandb_login_success = wandb.login(timeout=30)
          # except wandb.errors.UsageError: # known non-TTY terminal issue
          # wandb_login_success = False
          # if not wandb_login_success:
          # wandb = None
          # except (ImportError, AssertionError):
          # wandb = None
          wandb = None

          train.py開頭添加

          os.environ['CUDA_VISIBLE_DEVICES'] = '0'

          File "/home/lkz/.virtualenvs/lkztor/lib64/python3.6/site-packages/torch/nn/modules/module.py", line 1102, in _call_impl
          return forward_call(*input, **kwargs)
          File "/data/disk2/pact/yolov5_v6.0/models/common.py", line 47, in forward
          return self.act(self.bn(self.conv(x)))
          File "/home/lkz/.virtualenvs/lkztor/lib64/python3.6/site-packages/torch/nn/modules/module.py", line 1102, in _call_impl
          return forward_call(*input, **kwargs)
          File "/home/lkz/.virtualenvs/lkztor/lib64/python3.6/site-packages/torch/nn/modules/conv.py", line 446, in forward
          return self._conv_forward(input, self.weight, self.bias)
          File "/home/lkz/.virtualenvs/lkztor/lib64/python3.6/site-packages/torch/nn/modules/conv.py", line 443, in _conv_forward
          self.padding, self.dilation, self.groups)
          RuntimeError: Unable to find a valid cuDNN algorithm to run convolution

          顯存不足導(dǎo)致

          解決辦法:減小batchzise

          訓(xùn)練模型保存

          開啟訓(xùn)練之后,權(quán)重會(huì)保存在?./runs?文件夾里面的每個(gè)?exp?文件里面的 weights

          九. 預(yù)測(cè)

          批量預(yù)測(cè)步驟:

          1.修改predict.py 內(nèi)第218行weights 模型文件.pt路徑,219行source 待預(yù)測(cè)圖像路徑,220行data 數(shù)據(jù)集配置文件路徑

          2.其他參數(shù)可默認(rèn),運(yùn)行predict.py

          單張預(yù)測(cè)步驟:

          1.修改detect_image_only.py內(nèi)第97行至100行的模型路徑,數(shù)據(jù)集配置文件路徑等內(nèi)容

          2.運(yùn)行detect_image_only.py

          部署代碼簡(jiǎn)化:

          yolo5_inference目錄下是清理掉無關(guān)代碼后的模型部署推理代碼,只需關(guān)注某幾個(gè)參數(shù)即可。


          2e7c8764c48b2c4112ea7b7605bcf7f2.webp



          62070d41664d8cb940654fdfcfa79029.webp



          機(jī)器學(xué)習(xí)算法AI大數(shù)據(jù)技術(shù)

          ?搜索公眾號(hào)添加:?datanlp

          長(zhǎng)按圖片,識(shí)別二維碼




          閱讀過本文的人還看了以下文章:


          TensorFlow 2.0深度學(xué)習(xí)案例實(shí)戰(zhàn)


          基于40萬表格數(shù)據(jù)集TableBank,用MaskRCNN做表格檢測(cè)


          《基于深度學(xué)習(xí)的自然語言處理》中/英PDF


          Deep Learning 中文版初版-周志華團(tuán)隊(duì)


          【全套視頻課】最全的目標(biāo)檢測(cè)算法系列講解,通俗易懂!


          《美團(tuán)機(jī)器學(xué)習(xí)實(shí)踐》_美團(tuán)算法團(tuán)隊(duì).pdf


          《深度學(xué)習(xí)入門:基于Python的理論與實(shí)現(xiàn)》高清中文PDF+源碼


          《深度學(xué)習(xí):基于Keras的Python實(shí)踐》PDF和代碼


          特征提取與圖像處理(第二版).pdf


          python就業(yè)班學(xué)習(xí)視頻,從入門到實(shí)戰(zhàn)項(xiàng)目


          2019最新《PyTorch自然語言處理》英、中文版PDF+源碼


          《21個(gè)項(xiàng)目玩轉(zhuǎn)深度學(xué)習(xí):基于TensorFlow的實(shí)踐詳解》完整版PDF+附書代碼


          《深度學(xué)習(xí)之pytorch》pdf+附書源碼


          PyTorch深度學(xué)習(xí)快速實(shí)戰(zhàn)入門《pytorch-handbook》


          【下載】豆瓣評(píng)分8.1,《機(jī)器學(xué)習(xí)實(shí)戰(zhàn):基于Scikit-Learn和TensorFlow》


          《Python數(shù)據(jù)分析與挖掘?qū)崙?zhàn)》PDF+完整源碼


          汽車行業(yè)完整知識(shí)圖譜項(xiàng)目實(shí)戰(zhàn)視頻(全23課)


          李沐大神開源《動(dòng)手學(xué)深度學(xué)習(xí)》,加州伯克利深度學(xué)習(xí)(2019春)教材


          筆記、代碼清晰易懂!李航《統(tǒng)計(jì)學(xué)習(xí)方法》最新資源全套!


          《神經(jīng)網(wǎng)絡(luò)與深度學(xué)習(xí)》最新2018版中英PDF+源碼


          將機(jī)器學(xué)習(xí)模型部署為REST API


          FashionAI服裝屬性標(biāo)簽圖像識(shí)別Top1-5方案分享


          重要開源!CNN-RNN-CTC 實(shí)現(xiàn)手寫漢字識(shí)別


          yolo3 檢測(cè)出圖像中的不規(guī)則漢字


          同樣是機(jī)器學(xué)習(xí)算法工程師,你的面試為什么過不了?


          前海征信大數(shù)據(jù)算法:風(fēng)險(xiǎn)概率預(yù)測(cè)


          【Keras】完整實(shí)現(xiàn)‘交通標(biāo)志’分類、‘票據(jù)’分類兩個(gè)項(xiàng)目,讓你掌握深度學(xué)習(xí)圖像分類


          VGG16遷移學(xué)習(xí),實(shí)現(xiàn)醫(yī)學(xué)圖像識(shí)別分類工程項(xiàng)目


          特征工程(一)


          特征工程(二) :文本數(shù)據(jù)的展開、過濾和分塊


          特征工程(三):特征縮放,從詞袋到 TF-IDF


          特征工程(四): 類別特征


          特征工程(五): PCA 降維


          特征工程(六): 非線性特征提取和模型堆疊


          特征工程(七):圖像特征提取和深度學(xué)習(xí)


          如何利用全新的決策樹集成級(jí)聯(lián)結(jié)構(gòu)gcForest做特征工程并打分?


          Machine Learning Yearning 中文翻譯稿


          螞蟻金服2018秋招-算法工程師(共四面)通過


          全球AI挑戰(zhàn)-場(chǎng)景分類的比賽源碼(多模型融合)


          斯坦福CS230官方指南:CNN、RNN及使用技巧速查(打印收藏)


          python+flask搭建CNN在線識(shí)別手寫中文網(wǎng)站


          中科院Kaggle全球文本匹配競(jìng)賽華人第1名團(tuán)隊(duì)-深度學(xué)習(xí)與特征工程



          不斷更新資源

          深度學(xué)習(xí)、機(jī)器學(xué)習(xí)、數(shù)據(jù)分析、python

          ?搜索公眾號(hào)添加:?datayx??


          瀏覽 281
          點(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>
                  亚洲大乱婬交换 | 久久人人八视频观看 | 日日夜夜精品 | 永久免费 看片视频 | 男人的天堂网V |