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

          PyTorch版:集成注意力和MobileNet的YOLOv4

          共 8280字,需瀏覽 17分鐘

           ·

          2022-07-22 10:34

          點擊上方小白學視覺”,選擇加"星標"或“置頂

          重磅干貨,第一時間送達

          距離 YOLO v4 的推出,已經(jīng)過去 5 個多月。YOLO 框架采用 C 語言作為底層代碼,這對于慣用 Python 的研究者來說,實在是有點不友好。因此網(wǎng)上出現(xiàn)了很多基于各種深度學習框架的 YOLO 復(fù)現(xiàn)版本。近日,就有研究者在 GitHub 上更新了基于 PyTorch 的 YOLOv4。

          從今年 4 月 YOLOv4 發(fā)布后,對于這個目標檢測框架,問的最多的問題或許就是:
          「有沒有同學復(fù)現(xiàn) YOLOv4 的, 可以交流一下么」。
          由于原版 YOLO 使用 C 語言進行編程,光憑這一點就讓不少同學望而卻步。網(wǎng)上有很多基于 TF/Keras 和 Caffe 等的復(fù)現(xiàn)版本,但不少項目只給了代碼,并沒有給出模型在 COCO、PASCAL VOC 數(shù)據(jù)集上的訓(xùn)練結(jié)果。

          近日,有研究者在 GitHub 上開源了一個項目:基于 PyTorch 深度學習框架的 YOLOv4 復(fù)現(xiàn)版本,該版本基于 YOLOv4 作者給出的實現(xiàn) AlexeyAB/darknet,并在 PASCAL VOC、COCO 和自定義數(shù)據(jù)集上運行。

          項目地址:https://github.com/argusswift/YOLOv4-PyTorch

          除此以外,該項目還向主干網(wǎng)絡(luò)添加了一些有用的注意力方法,并實現(xiàn)了mobilenetv2-YOLOV4 和 mobilenetv3-YOLOV4


          attentive YOLOv4

          該項目向主干網(wǎng)絡(luò)添加了一些注意力方法,如 SEnet、CBAM。

          SEnet (CVPR 2017)

          CBAM (CVPR 2018)


          mobilenet YOLOv4

           

          該研究還實現(xiàn)了 mobilenetv2-YOLOV4 和 mobilenetv3-YOLOV4(只需更改 config/yolov4_config.py 中的 MODEL_TYPE 即可)。

          下表展示了 mobilenetv2-YOLOV4 的性能結(jié)果:

          現(xiàn)在我們來看該項目的詳細內(nèi)容和要求。

           

          環(huán)境要求

          • Nvida GeForce RTX 2080TI

          • CUDA10.0

          • CUDNN7.0

          • windows 或 linux 系統(tǒng)

          • python 3.6

          特性

          • DO-Conv (https://arxiv.org/abs/2006.12030) (torch>=1.2)

          • Attention

          • fp_16 training

          • Mish

          • Custom data

          • Data Augment (RandomHorizontalFlip, RandomCrop, RandomAffine, Resize)

          • Multi-scale Training (320 to 640)

          • focal loss

          • CIOU

          • Label smooth

          • Mixup

          • cosine lr

           

          安裝依賴項


          運行腳本安裝依賴項。你需要提供 conda 安裝路徑(例如 ~/anaconda3)以及所創(chuàng)建 conda 環(huán)境的名稱(此處為 YOLOv4-PyTorch)。

          pip3 install -r requirements.txt --user

          需要注意的是:安裝腳本已在 Ubuntu 18.04 和 Window 10 系統(tǒng)上進行過測試。如果出現(xiàn)問題,請查看詳細的安裝說明:https://github.com/argusswift/YOLOv4-PyTorch/blob/master/INSTALL.md。 


          準備工作


          1. git 復(fù)制 YOLOv4 庫

          準備工作的第一步是復(fù)制 YOLOv4。

          git clone github.com/argusswift/YOLOv4-PyTorch.git

          然后更新配置文件「config/yolov4_config.py」中「PROJECT_PATH」。

          2. 數(shù)據(jù)集準備

          該項目準備了 Pascal VOC 和 MSCOCO 2017 數(shù)據(jù)集。其中 PascalVOC 數(shù)據(jù)集包括 VOC 2012_trainval、VOC 2007_trainval 和 VOC2007_test,MSCOCO 2017 數(shù)據(jù)集包括 train2017_img、train2017_ann、val2017_img、val2017_ann、test2017_img、test2017_list。

          PascalVOC 數(shù)據(jù)集下載命令:

          # Download the data.cd $HOME/data
          wget http://host.robots.ox.ac.uk/pascal/VOC/voc2012/VOCtrainval_11-May-2012.tar
          wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtrainval_06-Nov-2007.tar
          wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtest_06-Nov-2007.tar# Extract the data.
          tar -xvf VOCtrainval_11-May-2012.tar
          tar -xvf VOCtrainval_06-Nov-2007.tar
          tar -xvf VOCtest_06-Nov-2007.tar

          MSCOCO 2017 數(shù)據(jù)集下載命令:

           #step1: download the following data and annotation
          2017 Train images [118K/18GB]
          2017 Val images [5K/1GB]
          2017 Test images [41K/6GB]
          2017 Train/Val annotations [241MB]
          #step2: arrange the data to the following structure
          COCO
          ---train
          ---test
          ---val
          ---annotations

          在數(shù)據(jù)集下載好后,需要進行以下操作:

          • 將數(shù)據(jù)集放入目錄,更新 config/yolov4_config.py 中的 DATA_PATH 參數(shù)。

          • (對于 COCO 數(shù)據(jù)集)使用 coco_to_voc.py 將 COCO 數(shù)據(jù)類型轉(zhuǎn)換為 VOC 數(shù)據(jù)類型。

          • 轉(zhuǎn)換數(shù)據(jù)格式:使用 utils/voc.py 或 utils/coco.py 將 pascal voc *.xml 格式(或 COCO *.json 格式)轉(zhuǎn)換為 *.txt 格式(Image_path xmin0,ymin0,xmax0,ymax0,class0 xmin1,ymin1,xmax1,ymax1,class1 ...)。

          3. 下載權(quán)重文件

          1)darknet 預(yù)訓(xùn)練權(quán)重:yolov4(https://drive.google.com/file/d/1cewMfusmPjYWbrnuJRuKhPMwRe_b9PaT/view)。

          2)Mobilenet 預(yù)訓(xùn)練權(quán)重:

          mobilenetv2:(https://pan.baidu.com/share/init?surl=sjixK2L9L0YgQnvfDuVTJQ,提取碼:args);

          mobilenetv3:(https://pan.baidu.com/share/init?surl=75wKejULuM0ZD05b9iSftg,提取碼:args)。

          3)在根目錄下創(chuàng)建 weight 文件夾,將下載好的權(quán)重文件放到 weight / 目錄下。

          4)訓(xùn)練時在 config/yolov4_config.py 中設(shè)置 MODEL_TYPE。

          4. 轉(zhuǎn)換成自定義數(shù)據(jù)集(基于自定義數(shù)據(jù)集進行訓(xùn)練)

          1)將自定義數(shù)據(jù)集的圖片放入 JPEGImages 文件夾,將注釋文件放入 Annotations 文件夾。

          2)使用 xml_to_txt.py 文件將訓(xùn)練和測試文件列表寫入 ImageSets/Main/*.txt。

          3)轉(zhuǎn)換數(shù)據(jù)格式:使用 utils/voc.py 或 utils/coco.py 將 pascal voc *.xml 格式(或 COCO *.json 格式)轉(zhuǎn)換為 *.txt 格式(Image_path xmin0,ymin0,xmax0,ymax0,class0 xmin1,ymin1,xmax1,ymax1,class1 ...)。

           

          訓(xùn)練


          運行以下命令開始訓(xùn)練,詳情參見 config / yolov4_config.py。訓(xùn)練時應(yīng)將 DATA_TYPE 設(shè)置為 VOC 或 COCO。

          CUDA_VISIBLE_DEVICES=0 nohup python -u train.py  --weight_path weight/yolov4.weights --gpu_id 0 > nohup.log 2>&1 &

          它還支持 resume 訓(xùn)練,添加 --resume,使用以下命令即可自動加載 last.pt。

          CUDA_VISIBLE_DEVICES=0 nohup python -u train.py  --weight_path weight/last.pt --gpu_id 0 > nohup.log 2>&1 &

           

          檢測


          修改檢測圖像路徑:DATA_TEST=/path/to/your/test_data# your own images。

          for VOC dataset:
          CUDA_VISIBLE_DEVICES=0 python3 eval_voc.py --weight_path weight/best.pt --gpu_id 0 --visiual $DATA_TEST --eval --mode det
          for COCO dataset:
          CUDA_VISIBLE_DEVICES=0 python3 eval_coco.py --weight_path weight/best.pt --gpu_id 0 --visiual $DATA_TEST --eval --mode det

          結(jié)果可以在 output / 中查看,如下所示:

           

          評估(Pascal VOC 數(shù)據(jù)集)


          修改評估數(shù)據(jù)集路徑:DATA_PATH=/path/to/your/test_data # your own images

          for VOC dataset:
          CUDA_VISIBLE_DEVICES=0 python3 eval_voc.py --weight_path weight/best.pt --gpu_id 0 --visiual $DATA_TEST --eval -
           

          評估(COCO 數(shù)據(jù)集)


          修改評估數(shù)據(jù)集路徑:DATA_PATH=/path/to/your/test_data # your own images

          CUDA_VISIBLE_DEVICES=0 python3 eval_coco.py --weight_path weight/best.pt --gpu_id 0 --visiual $DATA_TEST --eval --mode val

          type=bbox
          Running per image evaluation...      DONE (t=0.34s).
          Accumulating evaluation results...   DONE (t=0.08s).
           Average Precision  (AP) @[ IoU=0.50:0.95 | area=   all | maxDets=100 ] = 0.438 
           Average Precision  (AP) @[ IoU=0.50      | area=   all | maxDets=100 ] = 0.607 
           Average Precision  (AP) @[ IoU=0.75      | area=   all | maxDets=100 ] = 0.469 
           Average Precision  (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.253 
           Average Precision  (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.486 
           Average Precision  (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.567 
           Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets=  1 ] = 0.342 
           Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets= 10 ] = 0.571 
           Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets=100 ] = 0.632 
           Average Recall     (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.458 
           Average Recall     (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.691 
           Average Recall     (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.790

           

          可視化熱圖


          在 val_voc.py 中設(shè)置 showatt=Ture,網(wǎng)絡(luò)即可輸出熱圖。

          for VOC dataset:
          CUDA_VISIBLE_DEVICES=0 python3 eval_voc.py --weight_path weight/best.pt --gpu_id 0 --visiual $DATA_TEST --eval
          for COCO dataset:
          CUDA_VISIBLE_DEVICES=0 python3 eval_coco.py --weight_path weight/best.pt --gpu_id 0 --visiual $DATA_TEST --eval

          在 output / 中可以查看熱圖,如下所示:

          好消息!

          小白學視覺知識星球

          開始面向外開放啦??????




          下載1:OpenCV-Contrib擴展模塊中文版教程
          在「小白學視覺」公眾號后臺回復(fù):擴展模塊中文教程,即可下載全網(wǎng)第一份OpenCV擴展模塊教程中文版,涵蓋擴展模塊安裝、SFM算法、立體視覺、目標跟蹤、生物視覺、超分辨率處理等二十多章內(nèi)容。

          下載2:Python視覺實戰(zhàn)項目52講
          小白學視覺公眾號后臺回復(fù):Python視覺實戰(zhàn)項目即可下載包括圖像分割、口罩檢測、車道線檢測、車輛計數(shù)、添加眼線、車牌識別、字符識別、情緒檢測、文本內(nèi)容提取、面部識別等31個視覺實戰(zhàn)項目,助力快速學校計算機視覺。

          下載3:OpenCV實戰(zhàn)項目20講
          小白學視覺公眾號后臺回復(fù):OpenCV實戰(zhàn)項目20講即可下載含有20個基于OpenCV實現(xiàn)20個實戰(zhàn)項目,實現(xiàn)OpenCV學習進階。

          交流群


          歡迎加入公眾號讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器自動駕駛、計算攝影、檢測、分割、識別、醫(yī)學影像、GAN、算法競賽等微信群(以后會逐漸細分),請掃描下面微信號加群,備注:”昵稱+學校/公司+研究方向“,例如:”張三 + 上海交大 + 視覺SLAM“。請按照格式備注,否則不予通過。添加成功后會根據(jù)研究方向邀請進入相關(guān)微信群。請勿在群內(nèi)發(fā)送廣告,否則會請出群,謝謝理解~


          瀏覽 47
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <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>
                  五月婷婷AV手机免费观看 | 国产高清无码视频在线播放 | 国产极品久久7777777 | 91豆花视频18 | 中文字幕在线免费 |