[YOLO專題-11]:YOLO V5 - ultralytics/train基於自定義圖片數據集重新訓練網絡, 完成自己的目標檢測

文火冰糖的矽基工坊 2022-01-08 05:28:23 阅读数:646

yolo yolo v5 ultralytics train

作者主頁(文火冰糖的矽基工坊):文火冰糖(王文兵)的博客_文火冰糖的矽基工坊_CSDN博客

本文網址:https://blog.csdn.net/HiWangWenBing/article/details/122150460


目錄

前言:

步驟1:下載對應版本的YOLO開源代碼

1.1 github鏈接

1.2 下載

1.3 拷貝到Pycharm工程目錄中

步驟2: 下載或創建自定義數據集

2.1 下載COCO128數據集(可選之一)

2.2 從其他網站下載所需要的開源數據集(可選之一)

2.3 手工制作自己的數據(可選之一)

步驟3: 組織數據集文件目錄

步驟4: 為新數據集創建新配置文件或修改已有配置文件:xxxdataset.yaml

步驟5:選擇模型文件

5.1 選擇模型文件

5.2 預訓練模型的配置文件

步驟6:用自定義數據訓練模型

6.1 命令行

6.2 訓練結果的輸出

步驟7:手工檢驗模型的訓練效果



前言:

為什麼不使用官網的數據集進行訓練呢?

主要原因有兩個:

(1)COCO和VOC數據集太大,用於個人學習訓練的話,時間太長,預計要1個星期才能訓練完成。

(2)用YOLO進行目標檢測,在多數時候,我們自己的圖片數據集與YOLO官方提供的預訓練模型所對應的數據集是不相同的。

主要區別在於:

  • 數據集圖片的種類不同,自定義圖片的種類有多有少,這個差別導致需要重新定義輸出層。
  • 數據集圖片的內容不同,這與我們特定的業務强相關,特定業務所需要的圖片, 與YOLO的數據集是不完全相同的,甚至相差很大。
  • 數據集圖片的背景不同,即使目標檢測了類型相同,實際目標所處的環境也不一定相同。

這些就導致,我們需要基於YOLO官方預訓練好的權重參數(預訓練模型),然後,根據自身數據集的需求,重新訓練YOLO模型的權重參數,最終才能滿足我們自身業務的需求。

因此,我們首先從訓練自己的數據集集開始。

要達成上述目標,具體步驟如下(本文重點講解YOLO的使用方法,不講原理):

官網手册:Train Custom Data - YOLOv5 Documentation

步驟1:下載對應版本的YOLO開源代碼

1.1 github鏈接

登錄github主頁:https://github.com/search?q=PYTORCH++YOLOV5,所搜 “pytorch yolov5”

得到如下的信息:

GitHub - ultralytics/yolov5: YOLOv5 in PyTorch > ONNX > CoreML > TFLiteYOLOv5 in PyTorch > ONNX > CoreML > TFLite. Contribute to ultralytics/yolov5 development by creating an account on GitHub.https://github.com/ultralytics/yolov5

YOLO V5是按照項目管理的方式發布yolo v5的源代碼的,yolo v5有不同 release tag,可以按照tag下載不同的release 版本,也可以直接下載master branch上的最新版本。

1.2 下載

1.3 拷貝到Pycharm工程目錄中

cp
cd yolov5
$ pip install -r requirements.txt # install

步驟2: 下載或創建自定義數據集

YOLO V5官方的開源代碼,不自帶數據集本身,需要程序員自己下載或創建數據集。

有幾種方式創建數據集:

  • 下載已經標注過的開源數據集:網絡中有大量的免費或收費的數據集
  • 制作自己的數據集:需要自己創建文件、標簽

2.1 下載COCO128數據集(可選之一)

(1)從官網下載COCO128

COCO128是一個小型教程數據集,由COCO train2017中的前 128 張圖像組成。這些128 張圖像用於訓練和驗證,以驗證我們的訓練效果。

我們可以通過官網下載下載COCO128數據集, 需要先申請賬號。

 coco128 | Kaggle

(2)從其他途徑,如CSDN下載COCO128

我們也可以通過CSDN下載,有人在CSDN上提供了已經通過官網下載的COCO128數據集。

coco128.zip_coco128,coco128數據集-機器學習文檔類資源-CSDN下載

2.2 從其他網站下載所需要的開源數據集(可選之一)

如下網站提供了大量的小型的已經打好標准的自定義數據集,我們可以直接利用這些數據集,這樣可以節省大量需要我們手工打標簽的時間。

官網地址:C​​​​​​omputer Vision Datasets

比如戴口罩的數據集:

戴口罩的數據集地址:Mask Wearing Object Detection Dataset

直接下載YOLO V5版本對應格格式的文件

2.3 手工制作自己的數據(可選之一)

(0)數據集名稱:xxxdata

xxxdataset/

(1)采集自己的自定義數據集的圖片數據

原始的圖片文件存放在xxxdataset/images 目錄中

xxxdataset/images/im0.jpg # image

(2)用打標簽工具為自己的自定義圖片數據集打標簽

xxxdataset/labels/

(3)通過標簽格式轉換工具,把標簽轉換成YOLO V5格式(不同版本,格式有些差异)

YOLO V5的標簽是txt格式:

(4)標簽文件與圖片文件的關系:

xxxdataset/images/im0.jpg # image
xxxdataset/labels/im0.txt # label
  • images:存放原始的圖片文件
  • labels:存放同名的標簽文件,每個原始圖片有一個同名的標簽文件

詳見相關文章闡述。

步驟3: 組織數據集文件目錄

把標注好的數據集拷貝到YOLO V5工程目錄所在同一目錄下的dataset目錄中。

 如果datasets沒有指定的數據集,YOLO V5的程序會自動下載該數據集

步驟4: 為數據集創建配置文件或修改已有配置文件:xxxdataset.yaml

(1)配置文件名稱: xxx.yaml

每個數據集xxx, 都有一個xxx.yaml數據集文件與之對應,用於指導模型訓練程序,如何找到數據集圖片與標簽,以及獲取數據的信息。

(2)配置文件的存放比特置:yolov5/data/ 

如下是YOLO V5項目自帶的數據集的配置文件:

 (3)配置文件的內容與格式

  • path(可選):數據集的根目錄
  • train(必選):訓練圖片的子目錄
  • val(必選):驗證圖片的子目錄
  • nc(必選):分類的數目
  • names(必選):每個分類的名稱
  • download(可選):遠程下載數據集的路徑(如果本地沒有,則從網絡下載)

步驟5:選擇模型文件

5.1 選擇模型文件

為了適應不同的應用場景,YOLO V5並不是采用單一規模的模型,而是采用多種規模的模型。不同的規模的模型,其速度、所需要的內存空間,mAP不盡相同。

 GitHub - ultralytics/yolov5: YOLOv5 in PyTorch > ONNX > CoreML > TFLite

 其中,有4個典型規模的模型:

這裏我們選擇YOLOV5s為例

5.2 預訓練模型的配置文件

(1)模型配置文件的作用

模型的配置文件,用於YOLO V5的工程文件來創建模型、下載預訓練模型、初始化模型等操作。

(2)模型配置文件的存放比特置

YOLO V5已經為支持的默認的模型創建了模型的模型的配置文件,如下圖所示:

 (3)模型配置文件的內容(YoloV5s為例)

# YOLOv5 by Ultralytics, GPL-3.0 license
# Parameters
nc: 80 # number of classes # 分類數目
depth_multiple: 0.33 # model depth multiple # 模型的深度倍數,值越小,模型的規模越小
width_multiple: 0.50 # layer channel multiple # 模型通道的倍數,值越小,模型的規模越小
anchors: # 先驗框: 3 * 3 = 9個
- [10,13, 16,30, 33,23] # P3/8
- [30,61, 62,45, 59,119] # P4/16
- [116,90, 156,198, 373,326] # P5/32
# YOLOv5 v6.0 backbone # 特征提取網絡
backbone:
# [from, number, module, args]
[[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2
[-1, 1, Conv, [128, 3, 2]], # 1-P2/4
[-1, 3, C3, [128]],
[-1, 1, Conv, [256, 3, 2]], # 3-P3/8
[-1, 6, C3, [256]],
[-1, 1, Conv, [512, 3, 2]], # 5-P4/16
[-1, 9, C3, [512]],
[-1, 1, Conv, [1024, 3, 2]], # 7-P5/32
[-1, 3, C3, [1024]],
[-1, 1, SPPF, [1024, 5]], # 9
]
# YOLOv5 v6.0 head
head:
[[-1, 1, Conv, [512, 1, 1]],
[-1, 1, nn.Upsample, [None, 2, 'nearest']],
[[-1, 6], 1, Concat, [1]], # cat backbone P4
[-1, 3, C3, [512, False]], # 13
[-1, 1, Conv, [256, 1, 1]],
[-1, 1, nn.Upsample, [None, 2, 'nearest']],
[[-1, 4], 1, Concat, [1]], # cat backbone P3
[-1, 3, C3, [256, False]], # 17 (P3/8-small)
[-1, 1, Conv, [256, 3, 2]],
[[-1, 14], 1, Concat, [1]], # cat head P4
[-1, 3, C3, [512, False]], # 20 (P4/16-medium)
[-1, 1, Conv, [512, 3, 2]],
[[-1, 10], 1, Concat, [1]], # cat head P5
[-1, 3, C3, [1024, False]], # 23 (P5/32-large)
[[17, 20, 23], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
]

模型配置文件是YOLO V5自帶的,用戶也可以修改該配置文件或創建自己的配置文件。

步驟6:用自定義數據訓練模型

6.1 命令行

(1)GPU內存》=12G

# Train YOLOv5s on COCO128 for 5 epochs
$ python train.py --img 640 --batch 16 --epochs 5 --data coco128.yaml --weights yolov5s.pt

(1)GPU內存<=8G

# Train YOLOv5s on COCO128 for 5 epochs
$ python train.py --img 640 --batch 1 --epochs 5 --data coco128.yaml --weights yolov5s.pt
$ python train.py --img 640 --batch 1 --epochs 5 --data MaskWearing.yaml --weights yolov5s.pt
  •  python train.py: 模型訓練文件
  • --img 640 :圖片文件的尺寸=640 * 640
  • --batch 16 : batch size,如果GPU的內存空間不足,可是降低batch size。
  • --epochs 5 :訓練的輪數
  • --data coco128.yaml :數據集配置文件
  • --weights yolov5s.pt  :預訓練模型,節省訓練時間,如果為空,則重頭開始訓練。

命令行所有的參數:

python train.py --img 640 --batch 1 --epochs 5 --data coco128.yaml --weights yolov5s.pt
train: weights=yolov5s.pt, cfg=, data=coco128.yaml, hyp=data\hyps\hyp.scratch.yaml, epochs=5, batch_size=1, imgsz=640, rect=False, resume=False, nosave=False, noval=False, noautoanchor=False, evolve=None, bucket=, cache=None, image_weights=False, device=, multi_scale=False, single_cls=False, adam=False, sync_bn=False, workers=8, project=runs\train, name=exp, exist_ok=False, quad=False, linear_lr=False, label_smoothing=0.0, patience=100, freeze=[0], save_period=-1, local_rank=-1, entity=None, upload_dataset=False, bbox_interval=-1, artifact_alias=latest

6.2 訓練結果的輸出

(1)log

(pytorch-gpu-os) PS F:\MySource\github\yolov5> python train.py --img 640 --batch 1 --epochs 5 --data coco128.yaml --weights yolov5s.pt
train: weights=yolov5s.pt, cfg=, data=coco128.yaml, hyp=data\hyps\hyp.scratch.yaml, epochs=5, batch_size=1, imgsz=640, rect=False, resume=False, nosave=False, noval=False, noautoanchor=False, evolve=None, bucket=, cache=None, image_weights=False, device=, multi_scale=False, single_cls=False, adam=False, sync_bn=False, workers=8, project=runs\train, name=exp, exist_ok=False, quad=False, linear_lr=False, label_smoothing=0.0, patience=100, freeze=[0], save_period=-1, local_rank=-1, entity=None, upload_dataset=False, bbox_interval=-1, artifact_alias=latest
github: fatal: unable to access 'https://github.com/ultralytics/yolov5.git/': Failed to connect to github.com port 443 after 21127 ms: Timed out
Command 'git fetch && git config --get remote.origin.url' timed out after 5 seconds
YOLOv5 v6.0-162-gaffa284 torch 1.10.0 CUDA:0 (NVIDIA GeForce RTX 2070, 8192MiB)
hyperparameters: lr0=0.01, lrf=0.1, momentum=0.937, weight_decay=0.0005, warmup_epochs=3.0, warmup_momentum=0.8, warmup_bias_lr=0.1, box=0.05, cls=0.5, cls_pw=1.0, obj=1.0, obj_pw=1.0, iou_t=0.2, anchor_t=4.0, fl_gamma=0.0, hsv_h=0.015, hsv_s=0.7, hsv_v=0.4, degrees=0.0, translate=0.1, scale=0.5, shear=0.0, perspective=0.0, flipud=0.0, fliplr=0.5, mosaic=1.0, mixup=0.0, copy_paste=0.0
Weights & Biases: run 'pip install wandb' to automatically track and visualize YOLOv5 runs (RECOMMENDED)
TensorBoard: Start with 'tensorboard --logdir runs\train', view at http://localhost:6006/
from n params module arguments
0 -1 1 3520 models.common.Conv [3, 32, 6, 2, 2]
1 -1 1 18560 models.common.Conv [32, 64, 3, 2]
2 -1 1 18816 models.common.C3 [64, 64, 1]
3 -1 1 73984 models.common.Conv [64, 128, 3, 2]
4 -1 2 115712 models.common.C3 [128, 128, 2]
5 -1 1 295424 models.common.Conv [128, 256, 3, 2]
6 -1 3 625152 models.common.C3 [256, 256, 3]
7 -1 1 1180672 models.common.Conv [256, 512, 3, 2]
8 -1 1 1182720 models.common.C3 [512, 512, 1]
9 -1 1 656896 models.common.SPPF [512, 512, 5]
10 -1 1 131584 models.common.Conv [512, 256, 1, 1]
11 -1 1 0 torch.nn.modules.upsampling.Upsample [None, 2, 'nearest']
12 [-1, 6] 1 0 models.common.Concat [1]
13 -1 1 361984 models.common.C3 [512, 256, 1, False]
14 -1 1 33024 models.common.Conv [256, 128, 1, 1]
15 -1 1 0 torch.nn.modules.upsampling.Upsample [None, 2, 'nearest']
16 [-1, 4] 1 0 models.common.Concat [1]
17 -1 1 90880 models.common.C3 [256, 128, 1, False]
18 -1 1 147712 models.common.Conv [128, 128, 3, 2]
19 [-1, 14] 1 0 models.common.Concat [1]
20 -1 1 296448 models.common.C3 [256, 256, 1, False]
21 -1 1 590336 models.common.Conv [256, 256, 3, 2]
22 [-1, 10] 1 0 models.common.Concat [1]
23 -1 1 1182720 models.common.C3 [512, 512, 1, False]
24 [17, 20, 23] 1 229245 models.yolo.Detect [80, [[10, 13, 16, 30, 33, 23], [30, 61, 62, 45, 59, 119], [116, 90, 156, 198, 373, 326]], [128, 256, 512]]
Model Summary: 270 layers, 7235389 parameters, 7235389 gradients, 16.5 GFLOPs
Transferred 349/349 items from yolov5s.pt
Scaled weight_decay = 0.0005
optimizer: SGD with parameter groups 57 weight, 60 weight (no decay), 60 bias
train: Scanning '..\datasets\coco128\labels\train2017.cache' images and labels... 128 found, 0 missing, 2 empty, 0 corrupted: 100%|███████████████████████████████████████████████████████████████████████████████| 128/128 [00:00<?, ?it/s]
val: Scanning '..\datasets\coco128\labels\train2017.cache' images and labels... 128 found, 0 missing, 2 empty, 0 corrupted: 100%|█████████████████████████████████████████████████████████████████████████████████| 128/128 [00:00<?, ?it/s]
module 'signal' has no attribute 'SIGALRM'
AutoAnchor: 4.27 anchors/target, 0.994 Best Possible Recall (BPR). Current anchors are a good fit to dataset
Image sizes 640 train, 640 val
Using 0 dataloader workers
Logging results to runs\train\exp7
Starting training for 5 epochs...
Epoch gpu_mem box obj cls labels img_size
0/4 0.493G 0.04649 0.09372 0.04373 19 640: 100%|██████████| 128/128 [00:14<00:00, 9.04it/s]
Class Images Labels P R [email protected] [email protected]:.95: 100%|██████████| 64/64 [00:01<00:00, 38.13it/s]
all 128 929 0.648 0.596 0.645 0.413
Epoch gpu_mem box obj cls labels img_size
1/4 0.549G 0.04281 0.08579 0.04072 42 640: 100%|██████████| 128/128 [00:09<00:00, 13.66it/s]
Class Images Labels P R [email protected] [email protected]:.95: 100%|██████████| 64/64 [00:01<00:00, 38.47it/s]
all 128 929 0.701 0.556 0.648 0.411
Epoch gpu_mem box obj cls labels img_size
2/4 0.549G 0.04389 0.07658 0.037 8 640: 100%|██████████| 128/128 [00:34<00:00, 3.70it/s]
Class Images Labels P R [email protected] [email protected]:.95: 100%|██████████| 64/64 [00:01<00:00, 37.86it/s]
all 128 929 0.692 0.586 0.664 0.412
Epoch gpu_mem box obj cls labels img_size
3/4 0.589G 0.04433 0.08129 0.04049 5 640: 100%|██████████| 128/128 [00:09<00:00, 13.72it/s]
Class Images Labels P R [email protected] [email protected]:.95: 100%|██████████| 64/64 [00:01<00:00, 38.49it/s]
all 128 929 0.715 0.569 0.672 0.42
Epoch gpu_mem box obj cls labels img_size
4/4 0.633G 0.04291 0.07103 0.03668 3 640: 100%|██████████| 128/128 [00:09<00:00, 13.75it/s]
Class Images Labels P R [email protected] [email protected]:.95: 100%|██████████| 64/64 [00:01<00:00, 38.13it/s]
all 128 929 0.769 0.56 0.686 0.443
5 epochs completed in 0.024 hours.
Optimizer stripped from runs\train\exp7\weights\last.pt, 14.8MB
Optimizer stripped from runs\train\exp7\weights\best.pt, 14.8MB
Validating runs\train\exp7\weights\best.pt...
Fusing layers...
Model Summary: 213 layers, 7225885 parameters, 0 gradients, 16.5 GFLOPs
Class Images Labels P R [email protected] [email protected]:.95: 100%|██████████| 64/64 [00:02<00:00, 28.58it/s]
all 128 929 0.759 0.566 0.686 0.442
person 128 254 0.889 0.602 0.786 0.503
bicycle 128 6 1 0.328 0.623 0.427
car 128 46 0.817 0.283 0.475 0.215
motorcycle 128 5 0.794 0.8 0.866 0.638
airplane 128 6 0.927 0.833 0.955 0.668
bus 128 7 0.66 0.714 0.759 0.653
train 128 3 0.803 0.667 0.913 0.565
truck 128 12 0.744 0.333 0.501 0.281
boat 128 6 0.673 0.167 0.347 0.0817
traffic light 128 14 0.645 0.286 0.319 0.227
stop sign 128 2 0.903 1 0.995 0.945
bench 128 9 0.883 0.333 0.694 0.331
bird 128 16 0.961 1 0.995 0.611
cat 128 4 0.746 0.75 0.888 0.728
dog 128 9 0.86 0.556 0.766 0.534
horse 128 2 0.85 1 0.995 0.597
elephant 128 17 0.889 0.824 0.828 0.561
bear 128 1 0.495 1 0.995 0.995
zebra 128 4 0.882 1 0.995 0.937
giraffe 128 9 0.741 1 0.963 0.617
backpack 128 6 0.949 0.333 0.476 0.221
umbrella 128 18 0.817 0.611 0.823 0.441
handbag 128 19 0.58 0.105 0.172 0.115
tie 128 7 0.722 0.857 0.795 0.514
suitcase 128 4 0.722 1 0.995 0.634
frisbee 128 5 0.631 0.8 0.797 0.538
skis 128 1 0.691 1 0.995 0.597
snowboard 128 7 0.807 0.714 0.782 0.392
sports ball 128 6 1 0.61 0.686 0.445
kite 128 10 0.855 0.592 0.702 0.339
baseball bat 128 4 1 0.674 0.995 0.292
baseball glove 128 7 0.677 0.429 0.493 0.285
skateboard 128 5 0.917 0.8 0.962 0.488
tennis racket 128 7 0.698 0.571 0.594 0.232
bottle 128 18 0.664 0.44 0.495 0.322
wine glass 128 16 0.702 0.885 0.845 0.401
cup 128 36 0.93 0.368 0.616 0.381
fork 128 6 0.671 0.167 0.396 0.274
knife 128 16 0.708 0.625 0.638 0.395
spoon 128 22 0.68 0.5 0.604 0.275
bowl 128 28 0.9 0.643 0.702 0.496
banana 128 1 0 0 0.142 0.0711
sandwich 128 2 1 0 0.125 0.12
orange 128 4 0.146 0.0732 0.558 0.293
broccoli 128 11 0.556 0.182 0.295 0.245
carrot 128 24 0.782 0.748 0.786 0.554
hot dog 128 2 0.411 0.734 0.745 0.683
pizza 128 5 0.61 0.6 0.853 0.502
donut 128 14 0.715 1 0.99 0.807
cake 128 4 0.755 1 0.945 0.884
chair 128 35 0.564 0.429 0.479 0.243
couch 128 6 1 0.449 0.995 0.543
potted plant 128 14 0.801 0.714 0.855 0.457
bed 128 3 1 0 0.753 0.379
dining table 128 13 0.577 0.308 0.497 0.336
toilet 128 2 1 0.872 0.995 0.796
tv 128 2 0.483 1 0.995 0.846
laptop 128 3 1 0 0.668 0.401
mouse 128 2 1 0 0.17 0.051
remote 128 8 0.829 0.625 0.604 0.433
cell phone 128 8 1 0.213 0.443 0.184
microwave 128 3 0.512 1 0.913 0.648
oven 128 5 0.71 0.4 0.476 0.269
sink 128 6 0.381 0.167 0.223 0.151
refrigerator 128 5 0.777 0.8 0.824 0.486
book 128 29 0.783 0.138 0.265 0.103
clock 128 9 0.824 0.778 0.899 0.626
vase 128 2 0.307 1 0.497 0.398
scissors 128 1 1 0 0 0
teddy bear 128 21 0.896 0.412 0.779 0.397
toothbrush 128 5 1 0.374 0.742 0.309
Results saved to runs\train\exp7

(2)訓練好的模型文件

\yolov5\runs\train\exp7\weights

  • best.pt  => 精度最好的模型文件
  • last.pt   =>  最新的模型文件

(3)訓練集部分目標檢測的圖片輸出

\yolov5\runs\train\exp7\train_batchXXX.jpg

(4)驗證集目標檢測的圖片輸出

\yolov5\runs\train\exp7\val_batchXXX.jpg

(5)訓練結果的可視化文件

\yolov5\runs\train\exp7\result.jpg

步驟7:手工檢驗模型的訓練效果

(1)模型訓練後的權重矩陣輸出

\yolov5\runs\train\exp7\weights

  • best.pt  => 精度最好的模型文件
  • last.pt   =>  最新的模型文件

(2)用訓練的模型進行預測

python detect.py --source .\data\images\bus.jpg --weights runs\train\exp7\weights\best.pt

執行結果輸出:Results saved to runs\detect\exp63

(pytorch-gpu-os) PS F:\MySource\github\yolov5> python detect.py --source .\data\images\bus.jpg --weights runs\train\exp7\weights\best.pt
detect: weights=['runs\\train\\exp7\\weights\\best.pt'], source=.\data\images\bus.jpg, imgsz=[640, 640], conf_thres=0.25, iou_thres=0.45, max_det=1000, device=, view_img=False, save_txt=False, save_conf=False, save_crop=False, nosave=False, classes=None, agnostic_nms=False, augment=False, visualize=False, update=False, project=runs\detect, name=exp, exist_ok=False, line_thickness=3, hide_labels=False, hide_conf=False, half=False, dnn=False
YOLOv5 v6.0-162-gaffa284 torch 1.10.0 CUDA:0 (NVIDIA GeForce RTX 2070, 8192MiB)
Fusing layers...
Model Summary: 213 layers, 7225885 parameters, 0 gradients, 16.5 GFLOPs
current working directory: F:\MySource\github\yolov5
image's abs: F:\MySource\github\yolov5\data\images\bus.jpg
image's abs: F:\MySource\github\yolov5\data\images\bus.jpg
image 1/1 F:\MySource\github\yolov5\data\images\bus.jpg: 640x480 3 persons, 1 bus, Done. (0.007s)
Speed: 0.0ms pre-process, 7.0ms inference, 7.0ms NMS per image at shape (1, 3, 640, 640)
Results saved to runs\detect\exp63

 更詳細的預測方法如下:

[YOLO專題-9]:YOLO V5 - ultralytics/yolov5代碼快速啟動詳解_文火冰糖(王文兵)的博客-CSDN博客


作者主頁(文火冰糖的矽基工坊):文火冰糖(王文兵)的博客_文火冰糖的矽基工坊_CSDN博客

本文網址:https://blog.csdn.net/HiWangWenBing/article/details/122150460

版权声明:本文为[文火冰糖的矽基工坊]所创,转载请带上原文链接,感谢。 https://gsmany.com/2022/01/202201080528228994.html