国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

YOLOv7訓(xùn)練自己的數(shù)據(jù)集(口罩檢測(cè))

這篇具有很好參考價(jià)值的文章主要介紹了YOLOv7訓(xùn)練自己的數(shù)據(jù)集(口罩檢測(cè))。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

前言

  • 本文是個(gè)人使用YOLOv7訓(xùn)練自己的VOC數(shù)據(jù)集的應(yīng)用案例,由于水平有限,難免出現(xiàn)錯(cuò)漏,敬請(qǐng)批評(píng)改正。
  • YOLOv7代碼結(jié)構(gòu)與YOLOv5很相似,要求的數(shù)據(jù)集格式也一致,熟悉YOLOv5,可以快速入手YOLOv7。
  • 更多精彩內(nèi)容,可點(diǎn)擊進(jìn)入我的個(gè)人主頁查看

前提條件

  • 熟悉Python

實(shí)驗(yàn)環(huán)境

matplotlib>=3.2.2
numpy>=1.18.5
opencv-python>=4.1.1
Pillow>=7.1.2
PyYAML>=5.3.1
requests>=2.23.0
scipy>=1.4.1
torch>=1.7.0
torchvision>=0.8.1
tqdm>=4.41.0
protobuf<4.21.3

項(xiàng)目結(jié)構(gòu)

yolov7_train_mydatasets
├─cfg
├─data
├─deploy
├─figure
├─inference
│  └─images
├─models
├─paper
├─scripts
├─tools
├─utils
├─VOCdevkit
    └─VOC2007
        ├─Annotations
        └─JPEGImages
│  .gitignore
│  detect.py
│  export.py
│  hubconf.py
│  labelImg2yolo.py
│  LICENSE.md
│  README.md
│  requirements.txt
│  test.py
│  train.py
│  train_aux.py
│  yolov7.pt

制作自己的數(shù)據(jù)集

  • LabelImg是一款功能相當(dāng)實(shí)用且被廣泛使用的圖像標(biāo)注工具,為開發(fā)人員提供一個(gè)可以自定義制作和創(chuàng)建數(shù)據(jù)集的平臺(tái),所以我們這里使用LabelImg圖像標(biāo)注工具,來制作自己的數(shù)據(jù)集。
  • LabelImg下載地址 提取碼:sjbz
  • 圖像標(biāo)注完成后,LabelImg 圖像標(biāo)注工具會(huì)生成.xml格式的文件,.xml格式的文件中包含標(biāo)注圖像的路徑、大小以及標(biāo)注圖像中的目標(biāo)的類別信息和目標(biāo)的真實(shí)框在圖像中的位置信息等。
  • 使用LabelImg 標(biāo)注工具進(jìn)行數(shù)據(jù)標(biāo)注示例如下圖所示。
    YOLOv7訓(xùn)練自己的數(shù)據(jù)集(口罩檢測(cè))
  • 使用LabelImg 圖像標(biāo)注工具會(huì)生成.xml格式的文件及其文件內(nèi)容示例如下圖所示。
    YOLOv7訓(xùn)練自己的數(shù)據(jù)集(口罩檢測(cè))
<annotation>
	<folder></folder>
	<filename>01.jpg</filename>
	<path></path>
	<source>
		<database>Unknown</database>
	</source>
	<size>
		<width>1179</width>
		<height>710</height>
		<depth>3</depth>
	</size>
	<segmented>0</segmented>
	<object>
		<name>with_mask</name>
		<pose>Unspecified</pose>
		<truncated>0</truncated>
		<difficult>0</difficult>
		<bndbox>
			<xmin>89</xmin>
			<ymin>37</ymin>
			<xmax>492</xmax>
			<ymax>659</ymax>
		</bndbox>
	</object>
	<object>
		<name>without_mask</name>
		<pose>Unspecified</pose>
		<truncated>0</truncated>
		<difficult>0</difficult>
		<bndbox>
			<xmin>680</xmin>
			<ymin>31</ymin>
			<xmax>1071</xmax>
			<ymax>684</ymax>
		</bndbox>
	</object>
</annotation>

數(shù)據(jù)集目錄結(jié)構(gòu)

├─VOCdevkit
	└─VOC2007
	    ├─Annotations
	    │      01.xml
	    │      ......
	    └─JPEGImages
	           01.jpg
	           ......

YOLOv7訓(xùn)練自己的數(shù)據(jù)集(口罩檢測(cè))

訓(xùn)練自己的數(shù)據(jù)集

VOC格式數(shù)據(jù)集轉(zhuǎn)換成YOLO格式數(shù)據(jù)集

在yolov7_train_mydatasets目錄下,打開labelImg2yolo.py文件

# 修改成自己數(shù)據(jù)集的類別名
classes = ["with_mask","without_mask"] 

然后,運(yùn)行l(wèi)abelImg2yolo.py

python labelImg2yolo.py

生成yolo格式的訓(xùn)練和驗(yàn)證數(shù)據(jù)集
YOLOv7訓(xùn)練自己的數(shù)據(jù)集(口罩檢測(cè))
YOLOv7訓(xùn)練自己的數(shù)據(jù)集(口罩檢測(cè))

修改cfg配置

新建一個(gè)myyolov7.yaml配置文件

YOLOv7訓(xùn)練自己的數(shù)據(jù)集(口罩檢測(cè))

myyolov7.yaml內(nèi)容

YOLOv7訓(xùn)練自己的數(shù)據(jù)集(口罩檢測(cè))

# parameters
nc: 2  # number of classes
depth_multiple: 1.0  # model depth multiple
width_multiple: 1.0  # layer channel multiple

# anchors
anchors:
  - [12,16, 19,36, 40,28]  # P3/8
  - [36,75, 76,55, 72,146]  # P4/16
  - [142,110, 192,243, 459,401]  # P5/32

# yolov7 backbone
backbone:
  # [from, number, module, args]
  [[-1, 1, Conv, [32, 3, 1]],  # 0
  
   [-1, 1, Conv, [64, 3, 2]],  # 1-P1/2      
   [-1, 1, Conv, [64, 3, 1]],
   
   [-1, 1, Conv, [128, 3, 2]],  # 3-P2/4  
   [-1, 1, Conv, [64, 1, 1]],
   [-2, 1, Conv, [64, 1, 1]],
   [-1, 1, Conv, [64, 3, 1]],
   [-1, 1, Conv, [64, 3, 1]],
   [-1, 1, Conv, [64, 3, 1]],
   [-1, 1, Conv, [64, 3, 1]],
   [[-1, -3, -5, -6], 1, Concat, [1]],
   [-1, 1, Conv, [256, 1, 1]],  # 11
         
   [-1, 1, MP, []],
   [-1, 1, Conv, [128, 1, 1]],
   [-3, 1, Conv, [128, 1, 1]],
   [-1, 1, Conv, [128, 3, 2]],
   [[-1, -3], 1, Concat, [1]],  # 16-P3/8  
   [-1, 1, Conv, [128, 1, 1]],
   [-2, 1, Conv, [128, 1, 1]],
   [-1, 1, Conv, [128, 3, 1]],
   [-1, 1, Conv, [128, 3, 1]],
   [-1, 1, Conv, [128, 3, 1]],
   [-1, 1, Conv, [128, 3, 1]],
   [[-1, -3, -5, -6], 1, Concat, [1]],
   [-1, 1, Conv, [512, 1, 1]],  # 24
         
   [-1, 1, MP, []],
   [-1, 1, Conv, [256, 1, 1]],
   [-3, 1, Conv, [256, 1, 1]],
   [-1, 1, Conv, [256, 3, 2]],
   [[-1, -3], 1, Concat, [1]],  # 29-P4/16  
   [-1, 1, Conv, [256, 1, 1]],
   [-2, 1, Conv, [256, 1, 1]],
   [-1, 1, Conv, [256, 3, 1]],
   [-1, 1, Conv, [256, 3, 1]],
   [-1, 1, Conv, [256, 3, 1]],
   [-1, 1, Conv, [256, 3, 1]],
   [[-1, -3, -5, -6], 1, Concat, [1]],
   [-1, 1, Conv, [1024, 1, 1]],  # 37
         
   [-1, 1, MP, []],
   [-1, 1, Conv, [512, 1, 1]],
   [-3, 1, Conv, [512, 1, 1]],
   [-1, 1, Conv, [512, 3, 2]],
   [[-1, -3], 1, Concat, [1]],  # 42-P5/32  
   [-1, 1, Conv, [256, 1, 1]],
   [-2, 1, Conv, [256, 1, 1]],
   [-1, 1, Conv, [256, 3, 1]],
   [-1, 1, Conv, [256, 3, 1]],
   [-1, 1, Conv, [256, 3, 1]],
   [-1, 1, Conv, [256, 3, 1]],
   [[-1, -3, -5, -6], 1, Concat, [1]],
   [-1, 1, Conv, [1024, 1, 1]],  # 50
  ]

# yolov7 head
head:
  [[-1, 1, SPPCSPC, [512]], # 51
  
   [-1, 1, Conv, [256, 1, 1]],
   [-1, 1, nn.Upsample, [None, 2, 'nearest']],
   [37, 1, Conv, [256, 1, 1]], # route backbone P4
   [[-1, -2], 1, Concat, [1]],
   
   [-1, 1, Conv, [256, 1, 1]],
   [-2, 1, Conv, [256, 1, 1]],
   [-1, 1, Conv, [128, 3, 1]],
   [-1, 1, Conv, [128, 3, 1]],
   [-1, 1, Conv, [128, 3, 1]],
   [-1, 1, Conv, [128, 3, 1]],
   [[-1, -2, -3, -4, -5, -6], 1, Concat, [1]],
   [-1, 1, Conv, [256, 1, 1]], # 63
   
   [-1, 1, Conv, [128, 1, 1]],
   [-1, 1, nn.Upsample, [None, 2, 'nearest']],
   [24, 1, Conv, [128, 1, 1]], # route backbone P3
   [[-1, -2], 1, Concat, [1]],
   
   [-1, 1, Conv, [128, 1, 1]],
   [-2, 1, Conv, [128, 1, 1]],
   [-1, 1, Conv, [64, 3, 1]],
   [-1, 1, Conv, [64, 3, 1]],
   [-1, 1, Conv, [64, 3, 1]],
   [-1, 1, Conv, [64, 3, 1]],
   [[-1, -2, -3, -4, -5, -6], 1, Concat, [1]],
   [-1, 1, Conv, [128, 1, 1]], # 75
      
   [-1, 1, MP, []],
   [-1, 1, Conv, [128, 1, 1]],
   [-3, 1, Conv, [128, 1, 1]],
   [-1, 1, Conv, [128, 3, 2]],
   [[-1, -3, 63], 1, Concat, [1]],
   
   [-1, 1, Conv, [256, 1, 1]],
   [-2, 1, Conv, [256, 1, 1]],
   [-1, 1, Conv, [128, 3, 1]],
   [-1, 1, Conv, [128, 3, 1]],
   [-1, 1, Conv, [128, 3, 1]],
   [-1, 1, Conv, [128, 3, 1]],
   [[-1, -2, -3, -4, -5, -6], 1, Concat, [1]],
   [-1, 1, Conv, [256, 1, 1]], # 88
      
   [-1, 1, MP, []],
   [-1, 1, Conv, [256, 1, 1]],
   [-3, 1, Conv, [256, 1, 1]],
   [-1, 1, Conv, [256, 3, 2]],
   [[-1, -3, 51], 1, Concat, [1]],
   
   [-1, 1, Conv, [512, 1, 1]],
   [-2, 1, Conv, [512, 1, 1]],
   [-1, 1, Conv, [256, 3, 1]],
   [-1, 1, Conv, [256, 3, 1]],
   [-1, 1, Conv, [256, 3, 1]],
   [-1, 1, Conv, [256, 3, 1]],
   [[-1, -2, -3, -4, -5, -6], 1, Concat, [1]],
   [-1, 1, Conv, [512, 1, 1]], # 101
   
   [75, 1, RepConv, [256, 3, 1]],
   [88, 1, RepConv, [512, 3, 1]],
   [101, 1, RepConv, [1024, 3, 1]],

   [[102,103,104], 1, IDetect, [nc, anchors]],   # Detect(P3, P4, P5)
  ]

創(chuàng)建自己數(shù)據(jù)集的yaml文件

新建mydata.yaml文件

YOLOv7訓(xùn)練自己的數(shù)據(jù)集(口罩檢測(cè))

mydata.yaml文件內(nèi)容
# train and val data as 1) directory: path/images/, 2) file: path/images.txt, or 3) list: [path1/images/, path2/images/]
train: ./VOCdevkit  
val: ./VOCdevkit  

# number of classes
nc: 2

# class names
names: ["with_mask","without_mask"]

進(jìn)行訓(xùn)練

python train.py --workers 8 --batch-size 4 --data data/mydata.yaml --img 640 640 --cfg cfg/training/myyolov7.yaml --weights 'yolov7.pt' --name myyolov7-train --hyp data/hyp.scratch.p5.yaml

YOLOv7訓(xùn)練自己的數(shù)據(jù)集(口罩檢測(cè))
YOLOv7訓(xùn)練自己的數(shù)據(jù)集(口罩檢測(cè))
訓(xùn)練完成,生成init.pt、best.pt和last.pt權(quán)重。
YOLOv7訓(xùn)練自己的數(shù)據(jù)集(口罩檢測(cè))
YOLOv7訓(xùn)練自己的數(shù)據(jù)集(口罩檢測(cè))

進(jìn)行測(cè)試

python test.py --data data/mydata.yaml --img 640 --batch 32 --conf 0.001 --iou 0.65 --weights runs/train/myyolov7-train12/weights/best.pt --name myyolov7-train

YOLOv7訓(xùn)練自己的數(shù)據(jù)集(口罩檢測(cè))
YOLOv7訓(xùn)練自己的數(shù)據(jù)集(口罩檢測(cè))

進(jìn)行預(yù)測(cè)

python detect.py --weights runs/train/myyolov7-train12/weights/best.pt --conf 0.25 --img-size 640 --source inference/images/face_mask.jpg

YOLOv7訓(xùn)練自己的數(shù)據(jù)集(口罩檢測(cè))
YOLOv7訓(xùn)練自己的數(shù)據(jù)集(口罩檢測(cè))

源碼獲取

獲取鏈接 提取碼:kzjc

參考文獻(xiàn)

[1] https://github.com/WongKinYiu/yolov7
[2] Chien-Yao Wang, Alexey Bochkovskiy, Hong-Yuan Mark Liao. YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object detectors,2022.文章來源地址http://www.zghlxwxcb.cn/news/detail-447986.html

  • 更多精彩內(nèi)容,可點(diǎn)擊進(jìn)入我的個(gè)人主頁查看

到了這里,關(guān)于YOLOv7訓(xùn)練自己的數(shù)據(jù)集(口罩檢測(cè))的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包