- 追加された行はこの色です。
- 削除された行はこの色です。
#author("2024-04-19T01:04:10+00:00","default:mizutu","mizutu")
#author("2024-04-30T06:38:24+00:00","default:mizutu","mizutu")
[[私的AI研究会]] > RevYOLOv5_2
*【復習】物体検出アルゴリズム「YOLO V5」2 &color(green){== 編集中 ==}; [#h12c01d1]
*【復習】物体検出アルゴリズム「YOLO V5」2 [#y768d518]
#ref(ts_result.gif,right,around,90%,ts_result.gif)
「PyTorch ではじめる AI開発」Chapter04 で使用する「YOLO V5」について復習する。~
「YOLO V5」の学習を深堀する~
#divregion( 目 次,open)
#contents
#enddivregion
#clear
RIGHT:&size(12){※ 最終更新:2024/04/19 };
RIGHT:&size(12){※ 最終更新:2024/04/30 };
** [[Official YOLOv5>+https://github.com/ultralytics/yolov5]] 考察2 学習編 [#g0adc4f9]
- 下記のプロジェクト・パッケージ [[update_20240418.zip>https://izutsu.aa0.netvolante.jp/download/linux/update_20240418.zip]] (624MB) <アップデートファイル> をダウンロード~
** [[Official YOLOv5>+https://github.com/ultralytics/yolov5]] 考察2 学習編 [#rae62579]
- 下記のプロジェクト・パッケージ [[update_20240430.zip>https://izutsu.aa0.netvolante.jp/download/linux/update_20240430.zip]] (624MB) <アップデートファイル> をダウンロード~
・解凍してできるフォルダ~
#codeprettify(){{
update
├─workspace_py37
│ └─mylib
└─workspace_pylearn
└─yolov5
├─data
│ ├─images
│ ├─janken4_dataset ※1 学習用データセット
│ ├─mask_dataset ※1
│ ├─ts0_dataset ※1
│ └─ts_dataset ※1
└─runs
└─train
├─janken4_yolov5s ※2 学習結果
├─mask_yolov5s ※2
├─ts0_yolov5s_ep30 ※2
└─ts_yolov5s_ep30 ※2
}}
※1 以下のプロジェクトの『前準備』を行った結果のデータセット~
※2 学習の実行後にできるファイル群(GPU環境がない場合学習には時間がかかる)~
・&color(red){解凍してできるフォルダを同名のフォルダに上書きコピーする(※1,※1 は実際にやってみる場合はコピーしない)};~
*** 学習プログラム「train.py」 [#dac40883]
- 実行ディレクトリは「workspace_pylearn/yolov5/」~
-「train.py」実行時のコマンドパラメータ~
|LEFT:128|CENTER:38|CENTER:180|LEFT:|c
|CENTER:コマンドオプション|引数|初期値|CENTER:意味|h
|BGCOLOR(lightyellow):--weights|BGCOLOR(lightyellow):str|BGCOLOR(lightyellow):yolov7s.pt|BGCOLOR(lightyellow):学習済み重みモデルファイル|
|BGCOLOR(lightyellow):--cfg|BGCOLOR(lightyellow):str|BGCOLOR(lightyellow):|BGCOLOR(lightyellow):使用するYOLOのバージョン(cfgフォルダからモデルの種類に合わせて指定)|
|BGCOLOR(lightyellow):--data|BGCOLOR(lightyellow):str|BGCOLOR(lightyellow):data/coco.yaml|BGCOLOR(lightyellow):学習データの情報を記載したyamlファイルのパス|
|--hyp|str|data/hyp.scratch.p5.yaml|ハイパーパラメータのパス|
|BGCOLOR(lightyellow):--epochs|BGCOLOR(lightyellow):int|BGCOLOR(lightyellow):300|BGCOLOR(lightyellow):学習回数指定|
|BGCOLOR(lightyellow):--batch-size|BGCOLOR(lightyellow):int|BGCOLOR(lightyellow):16|BGCOLOR(lightyellow):バッチサイズ指定|
|BGCOLOR(lightyellow):--img-size|BGCOLOR(lightyellow):list|BGCOLOR(lightyellow):[640, 640]|BGCOLOR(lightyellow):学習画像のサイズを指定(--img-size 640 640)|
|--rect|なし|-|rectangular training|
|BGCOLOR(lightyellow):--resume|BGCOLOR(lightyellow):なし|BGCOLOR(lightyellow):-|BGCOLOR(lightyellow):前回中断した学習(training)を途中から再開する|
|--nosave|なし|-|最終 checkpoint のみ保存|
|--notest|なし|-|only test final epoch|
|--noautoanchor|なし|-|自動アンカーチェックの無効化|
|--evolve|なし|-|evolve hyperparameters|
|--bucket|str||gsutil bucket|
|--cache-images|str|ram|cashの保存先指定 (ram or disk)|
|--image-weights|なし|-|use weighted image selection for training|
|BGCOLOR(lightyellow):--device|BGCOLOR(lightyellow):str|BGCOLOR(lightyellow):|BGCOLOR(lightyellow):使用プロセッサの指定(0 or 0,1,2,3 or cpu) (指定なしの場合 cuda)|
|--multi-scale|なし|-|画像サイズを±50%変化させる|
|--single-cls|なし|-|train multi-class data as single-class|
|--adam|なし|-|Adam optimizerを使用する (指定しなければ SGD が使用される)|
|--sync-bn|なし|-|SyncBatchNormを使用する (DDPモードでのみ使用可能)|
|--local_rank|int|-1|DDP parameter, do not modify|
|--workers|int|8|データローダーワーカーの最大数|
|BGCOLOR(lightyellow):--project|BGCOLOR(lightyellow):str|BGCOLOR(lightyellow):runs/train|BGCOLOR(lightyellow):学習結果の記録フォルダパス|
|BGCOLOR(lightyellow):--name|BGCOLOR(lightyellow):str|BGCOLOR(lightyellow):project/name|BGCOLOR(lightyellow):学習結果の記録フォルダの下のフォルダ名(推論ごとにインクリメント)|
|--entity|なし|None|W&B entity|
|BGCOLOR(lightyellow):--exist-ok|BGCOLOR(lightyellow):なし|BGCOLOR(lightyellow):-|BGCOLOR(lightyellow):学習結果を上書き保存(指定すれば上書き)|
|--quad|なし|-|quad dataloader|
|--linear-lr|なし|-|linear LR|
|--label-smoothing|0.0|Label smoothing epsilon||
|--upload_dataset|なし|-|Upload dataset as W&B artifact table|
|--bbox_interval|なし|-1|Set bounding-box image logging interval for W&B'|
|--save_period|int|-1|指定 epoch 毎にチェックポイントを保存する (-1 = (無効))|
|--artifact_alias|なし|latest|version of dataset artifact to be used|
|--freeze|list|[0]|学習しない層を指定 backbone of yolov7=50, first3=0 1 2'|
|--v5-metric|なし|-|assume maximum recall as 1.0 in AP calculation|
** オープンデータセットを用いた追加学習「交通標識の検出」 [#x51fa693]
** オープンデータセットを用いた追加学習「交通標識の検出」 [#p820354e]
- ''引用サイト'' → [[金子邦彦研究室:物体検出,物体検出のための追加学習の実行(YOLOv5,PyTorch,Python を使用)(Windows 上)>+https://www.kkaneko.jp/ai/win/yolov5.html]]~
- YOLO形式のオープンデータセット [[Traffic Signs Dataset>+https://www.kaggle.com/datasets/valentynsichkar/traffic-signs-dataset-in-yolo-format?resource=downloa]] を使用する~
*** 前準備 [#t5262768]
*** 前準備 [#eb0f7a64]
#ref(yolov5_train01_m.jpg,right,around,15%,yolov5_train01_m.jpg)
+ [[Traffic Signs Dataset in YOLO format>+https://www.kaggle.com/datasets/valentynsichkar/traffic-signs-dataset-in-yolo-format?resource=downloa]] のページを開く~
・「Download」ボタンを押す~
Kaggleへ登録するか,Google アカウントなどでサインインする~
・ダウンロードした「archive.zip」を解凍する~
・できた「archive/」フォルダを「workspace_pylearn/yolov5_test/」フォルダにコピー(移動)する~
~
+「archive/ts/ts/」ディレクトリ内の 900 個のテキストファイル("00000.txt"から"00899.txt")を処理する~
cocoデータセットに使用されているクラス番号にデータセットのクラス番号 80, 81, 82, 83 を追加する~
#codeprettify(){{
80, prohibitory
81, danger
82, mandatory
83, other
}}
#clear
+ クラス番号変換プログラム「data_select1.py」を実行~
・実行ディレクトリは「workspace_pylearn/yolov5_test/」~
#codeprettify(){{
(py_learn) python data_select1.py
}}
・「data_select1.py」実行ログ
#codeprettify(){{
(py_learn) python data_select1.py
:
archive/ts/ts/00892.txt が見つかりませんでした
filename: archive/ts/ts/00893.txt
83 0.6139705882352942 0.62 0.020588235294117647 0.035
filename: archive/ts/ts/00894.txt
80 0.2963235294117647 0.67625 0.020588235294117647 0.035
80 0.8180147058823529 0.685625 0.028676470588235293 0.04875
83 0.8158088235294118 0.628125 0.03602941176470588 0.06125
filename: archive/ts/ts/00895.txt
80 0.15845588235294117 0.630625 0.03308823529411765 0.05625
80 0.7279411764705882 0.5525 0.03529411764705882 0.06
filename: archive/ts/ts/00896.txt
80 0.6080882352941176 0.53875 0.027941176470588237 0.0475
filename: archive/ts/ts/00897.txt
83 0.6 0.6725 0.01764705882352941 0.03
filename: archive/ts/ts/00898.txt
80 0.24926470588235294 0.65 0.023529411764705882 0.04
80 0.6125 0.6575 0.023529411764705882 0.04
filename: archive/ts/ts/00899.txt
81 0.65625 0.63625 0.04191176470588235 0.0625
}}
・ソースファイル~
#divregion(「data_select1.py」)
#codeprettify(){{
# -*- coding: utf-8 -*-
##------------------------------------------
## YOLOv5 追加学習のためのデータセット作成
## Step 1 ダウンロードと ClassID 修正
## Traffic Signs Dataset in YOLO format
## https://www.kaggle.com/datasets/valentynsichkar/traffic-signs-dataset-in-yolo-format?resource=downloa
##
## 2024.04.09 Masahiro Izutsu
##------------------------------------------
## https://www.kkaneko.jp/ai/win/yolov5.html
## data_select1.py
## 2024/04/15 すべての行を処理するように変更
'''
"archive/ts/ts/" ディレクトリ内の900個のテキストファイル("00000.txt"から"00899.txt")を処理する。
各ファイルの行からクラス番号(0, 1, 2, 3)を取り出し,その値が80未満の場合,80を加算してファイルに書き戻す。
ファイルが存在しない場合,エラーメッセージを表示する
'''
for i in range(0, 900): # 00000.txt から 00899.txt までスキャンする(実際のファイル数は 741)
filename = f"archive/ts/ts/{i:05}.txt"
try:
with open(filename, "r", encoding="utf-8") as file:
# すべての行を処理する
lines = file.readlines()
for ln in range(len(lines)):
one_line = lines[ln].strip()
parts = one_line.split()
class_number = int(parts[0])
# もともとのクラス番号 (class_number) は 0, 1, 2, 3 である。80を加えて,元のファイルのクラス番号を更新する。
if class_number < 80:
updated_class_number = class_number + 80
x1, y1, x2, y2 = map(float, parts[1:])
updated_line = f"{updated_class_number} {x1} {y1} {x2} {y2}\n"
lines[ln] = updated_line
with open(filename, "w", encoding="utf-8") as file:
file.writelines(lines)
# 確認表示
with open(filename, "r", encoding="utf-8") as file:
lines = file.readlines()
print(f"filename: {filename}")
for ln in range(len(lines)):
print(" ", lines[ln])
except FileNotFoundError:
print(f"{filename} が見つかりませんでした")
exit()
}}
#enddivregion
~
+ 画像の幅を 640pixel に縮小する~
・実行ディレクトリは「workspace_pylearn/yolov5_test/」~
・画像縮小プログラム「data_select2.py」を実行~
#codeprettify(){{
(py_learn) python data_select2.py
}}
・「data_select2.pu」実行ログ
#codeprettify(){{
(py_learn) python data_select2.py
./archive/ts/ts/00000.jpg を変換
./archive/ts/ts/00001.jpg を変換
./archive/ts/ts/00002.jpg を変換
./archive/ts/ts/00003.jpg を変換
:
./archive/ts/ts/00896.jpg を変換
./archive/ts/ts/00897.jpg を変換
./archive/ts/ts/00898.jpg を変換
./archive/ts/ts/00899.jpg を変換
}}
・ソースファイル~
#divregion(「data_select2.py」)
#codeprettify(){{
# -*- coding: utf-8 -*-
##------------------------------------------
## YOLOv5 追加学習のためのデータセット作成
## Step 1 ダウンロードと ClassID 修正
## Traffic Signs Dataset in YOLO format
## https://www.kaggle.com/datasets/valentynsichkar/traffic-signs-dataset-in-yolo-format?resource=downloa
##
## 2024.04.09 Masahiro Izutsu
##------------------------------------------
## https://www.kkaneko.jp/ai/win/yolov5.html
## data_select2.py
'''
画像サイズを 640 ピクセルにする
'''
from PIL import Image
import os
# カレントディレクトリ
data_dir = './archive/ts/ts'
# 新しい幅
new_width = 640
# カレントディレクトリ内のすべてのファイル
for f in os.listdir(data_dir):
filename = data_dir + '/' + f
# .jpgファイルのみを処理
if filename.endswith('.jpg'):
print(f"{filename} を変換")
with Image.open(filename) as img:
# アスペクト比を保持した高さを計算
aspect_ratio = new_width / img.width
new_height = int(img.height * aspect_ratio)
# リサイズ
resized_img = img.resize((new_width, new_height))
# 元のファイルを上書き
resized_img.save(filename)
exit()
}}
#enddivregion
~
+ データセット名を「ts_dataset」として配置するディレクトリを作成する~
・以下のコマンドを実行~
#codeprettify(){{
mkdir -p ts_dataset/images/train
mkdir -p ts_dataset/images/val
mkdir -p ts_dataset/labels/train
mkdir -p ts_dataset/labels/val
}}
・作成結果~
#codeprettify(){{
(py_learn) PS > tree
yolov5_test/
├─archive
│ └─ts
│ └─ts
└─ts_dataset
├─images
│ ├─train
│ └─val
└─labels
├─train
└─val
}}
+「ts_dataset」ディレクトリに画像ファイルとラベルファイルを配置する~
検証用(val):学習用(train) がおよそ 8:2 になるようにする~
・検証用はファイル名の末尾が 1 (77個), 5 (73個) のもの計150個を移動~
#codeprettify(){{
move archive/ts/ts/*1.txt ts_dataset/labels/val
move archive/ts/ts/*5.txt ts_dataset/labels/val
move archive/ts/ts/*1.jpg ts_dataset/images/val
move archive/ts/ts/*5.jpg ts_dataset/images/val
}}
・学習用は残りのファイルを移動{741-150 = 531個)~
#codeprettify(){{
move archive/ts/ts/*.txt ts_dataset/labels/train
move archive/ts/ts/*.jpg ts_dataset/images/train
}}
+「ts_dataset/」フォルダ内にファイル ts.yaml を作成~
・データセットの配置場所は「yolov5/data/」フォルダとする~
#codeprettify(){{
train: data/ts_dataset/images/train
val: data/ts_dataset/images/val
nc: 84
names:
0: person
1: bicycle
2: car
:
79: toothbrush
80: prohibitory
81: danger
82: mandatory
83: other
}}
#divregion(「ts.yaml」詳細)
#codeprettify(){{
train: data/ts_dataset/images/train
val: data/ts_dataset/images/val
nc: 84
names:
0: person
1: bicycle
2: car
3: motorcycle
4: airplane
5: bus
6: train
7: truck
8: boat
9: traffic light
10: fire hydrant
11: stop sign
12: parking meter
13: bench
14: bird
15: cat
16: dog
17: horse
18: sheep
19: cow
20: elephant
21: bear
22: zebra
23: giraffe
24: backpack
25: umbrella
26: handbag
27: tie
28: suitcase
29: frisbee
30: skis
31: snowboard
32: sports ball
33: kite
34: baseball bat
35: baseball glove
36: skateboard
37: surfboard
38: tennis racket
39: bottle
40: wine glass
41: cup
42: fork
43: knife
44: spoon
45: bowl
46: banana
47: apple
48: sandwich
49: orange
50: broccoli
51: carrot
52: hot dog
53: pizza
54: donut
55: cake
56: chair
57: couch
58: potted plant
59: bed
60: dining table
61: toilet
62: tv
63: laptop
64: mouse
65: remote
66: keyboard
67: cell phone
68: microwave
69: oven
70: toaster
71: sink
72: refrigerator
73: book
74: clock
75: vase
76: scissors
77: teddy bear
78: hair drier
79: toothbrush
80: prohibitory
81: danger
82: mandatory
83: other
}}
#enddivregion
~
+「ts_dataset/」フォルダを「yolov5/data/」内にコピー(移動)する~
*** 学習の実行 [#bd7c2b90]
*** 学習の実行 [#t3ee15b6]
+ エポック数 30 で実行する~
・実行ディレクトリは「workspace_pylearn/yolov5/」~
・学習モデルはデフォールト設定「yolov7s」を使用する~
・学習結果フォルダ名は「ts_yolov5s_ep30」とする
#codeprettify(){{
(py_learn) python train.py --data data/ts_dataset/ts.yaml --weights yolov5s.pt --img 640 --epochs 30 --name ts_yolov5s_ep30
}}
・GPU を使用しない場合は以下のコマンドを実行する~
#codeprettify(){{
(py_learn) python train.py --data data/ts_dataset/ts.yaml --weights yolov5s.pt --img 640 --epochs 30 --name ts_yolov5s_ep30 --device cpu
}}
+ 学習の終了~
#codeprettify(){{
(py_learn) python train.py --data data/ts_dataset/ts.yaml --weights yolov5s.pt --img 640 --epochs 30 --name ts_yolov5s_ep30
train: weights=yolov5s.pt, cfg=, data=data/ts_dataset/ts.yaml, hyp=data\hyps\hyp.scratch-low.yaml, epochs=30, batch_size=16, imgsz=640, rect=False, resume=False, nosave=False, noval=False, noautoanchor=False, noplots=False, evolve=None, evolve_population=data\hyps, resume_evolve=None, bucket=, cache=None, image_weights=False, device=, multi_scale=False, single_cls=False, optimizer=SGD, sync_bn=False, workers=8, project=runs\train, name=ts_yolov5s_ep30, exist_ok=False, quad=False, cos_lr=False, label_smoothing=0.0, patience=100, freeze=[0], save_period=-1, seed=0, local_rank=-1, entity=None, upload_dataset=False, bbox_interval=-1, artifact_alias=latest, ndjson_console=False, ndjson_file=False
remote: Enumerating objects: 24, done.
remote: Counting objects: 100% (24/24), done.
remote: Compressing objects: 100% (24/24), done.
remote: Total 24 (delta 13), reused 1 (delta 0), pack-reused 0
Unpacking objects: 100% (24/24), 9.93 KiB | 462.00 KiB/s, done.
From https://github.com/ultralytics/yolov5
d07d0cf6..cf8b67b7 master -> origin/master
github: YOLOv5 is out of date by 9 commits. Use 'git pull' or 'git clone https://github.com/ultralytics/yolov5' to update.
YOLOv5 v7.0-294-gdb125a20 Python-3.11.8 torch-2.2.1+cu121 CUDA:0 (NVIDIA GeForce RTX 4070 Ti, 12282MiB)
hyperparameters: lr0=0.01, lrf=0.01, 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
Comet: run 'pip install comet_ml' to automatically track and visualize YOLOv5 runs in Comet
TensorBoard: Start with 'tensorboard --logdir runs\train', view at http://localhost:6006/
Overriding model.yaml nc=80 with nc=84
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]
:
Starting training for 30 epochs...
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
0/29 3.42G 0.1287 0.02085 0.1002 46 640: 100%|██████████| 37/37 [00:04<00:00, 8.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 5/5 [00:00<0
all 150 230 0.00304 0.0611 0.00226 0.000532
:
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
29/29 3.65G 0.02481 0.007517 0.01037 49 640: 100%|██████████| 37/37 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 5/5 [00:00<0
all 150 230 0.912 0.884 0.933 0.684
30 epochs completed in 0.036 hours.
Optimizer stripped from runs\train\ts_yolov5s_ep30\weights\last.pt, 14.8MB
Optimizer stripped from runs\train\ts_yolov5s_ep30\weights\best.pt, 14.8MB
Validating runs\train\ts_yolov5s_ep30\weights\best.pt...
Fusing layers...
Model summary: 157 layers, 7236673 parameters, 0 gradients, 16.5 GFLOPs
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 5/5 [00:01<0
all 150 230 0.905 0.89 0.932 0.689
prohibitory 150 108 0.954 0.953 0.98 0.763
danger 150 38 0.934 0.921 0.959 0.684
mandatory 150 35 0.876 0.81 0.9 0.687
other 150 49 0.854 0.878 0.89 0.621
Results saved to runs\train\ts_yolov5s_ep30
}}
#divregion(「train.py」実行ログ詳細)
#codeprettify(){{
(py_learn) PS C:\anaconda_win\workspace_pylearn\yolov5> python train.py --data data/ts_dataset/ts.yaml --weights yolov5s.pt --img 640 --epochs 30 --name ts_yolov5s_ep30
train: weights=yolov5s.pt, cfg=, data=data/ts_dataset/ts.yaml, hyp=data\hyps\hyp.scratch-low.yaml, epochs=30, batch_size=16, imgsz=640, rect=False, resume=False, nosave=False, noval=False, noautoanchor=False, noplots=False, evolve=None, evolve_population=data\hyps, resume_evolve=None, bucket=, cache=None, image_weights=False, device=, multi_scale=False, single_cls=False, optimizer=SGD, sync_bn=False, workers=8, project=runs\train, name=ts_yolov5s_ep30, exist_ok=False, quad=False, cos_lr=False, label_smoothing=0.0, patience=100, freeze=[0], save_period=-1, seed=0, local_rank=-1, entity=None, upload_dataset=False, bbox_interval=-1, artifact_alias=latest, ndjson_console=False, ndjson_file=False
remote: Enumerating objects: 24, done.
remote: Counting objects: 100% (24/24), done.
remote: Compressing objects: 100% (24/24), done.
remote: Total 24 (delta 13), reused 1 (delta 0), pack-reused 0
Unpacking objects: 100% (24/24), 9.93 KiB | 462.00 KiB/s, done.
From https://github.com/ultralytics/yolov5
d07d0cf6..cf8b67b7 master -> origin/master
github: YOLOv5 is out of date by 9 commits. Use 'git pull' or 'git clone https://github.com/ultralytics/yolov5' to update.
YOLOv5 v7.0-294-gdb125a20 Python-3.11.8 torch-2.2.1+cu121 CUDA:0 (NVIDIA GeForce RTX 4070 Ti, 12282MiB)
hyperparameters: lr0=0.01, lrf=0.01, 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
Comet: run 'pip install comet_ml' to automatically track and visualize YOLOv5 runs in Comet
TensorBoard: Start with 'tensorboard --logdir runs\train', view at http://localhost:6006/
Overriding model.yaml nc=80 with nc=84
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 240033 models.yolo.Detect [84, [[10, 13, 16, 30, 33, 23], [30, 61, 62, 45, 59, 119], [116, 90, 156, 198, 373, 326]], [128, 256, 512]]
Model summary: 214 layers, 7246177 parameters, 7246177 gradients, 16.7 GFLOPs
Transferred 343/349 items from yolov5s.pt
AMP: checks passed
optimizer: SGD(lr=0.01) with parameter groups 57 weight(decay=0.0), 60 weight(decay=0.0005), 60 bias
train: Scanning C:\anaconda_win\workspace_pylearn\yolov5\data\ts_dataset\labels\train... 591 images, 0 backgrounds, 0 c
train: WARNING C:\anaconda_win\workspace_pylearn\yolov5\data\ts_dataset\images\train\00340.jpg: 1 duplicate labels removed
train: New cache created: C:\anaconda_win\workspace_pylearn\yolov5\data\ts_dataset\labels\train.cache
val: Scanning C:\anaconda_win\workspace_pylearn\yolov5\data\ts_dataset\labels\val... 150 images, 0 backgrounds, 0 corru
val: New cache created: C:\anaconda_win\workspace_pylearn\yolov5\data\ts_dataset\labels\val.cache
AutoAnchor: 4.43 anchors/target, 1.000 Best Possible Recall (BPR). Current anchors are a good fit to dataset
Plotting labels to runs\train\ts_yolov5s_ep30\labels.jpg...
Image sizes 640 train, 640 val
Using 8 dataloader workers
Logging results to runs\train\ts_yolov5s_ep30
Starting training for 30 epochs...
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
0/29 3.42G 0.1287 0.02085 0.1002 46 640: 100%|██████████| 37/37 [00:04<00:00, 8.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 5/5 [00:00<0
all 150 230 0.00304 0.0611 0.00226 0.000532
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
1/29 3.64G 0.1039 0.01941 0.06545 53 640: 100%|██████████| 37/37 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 5/5 [00:00<0
all 150 230 0.00397 0.594 0.0526 0.0118
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
2/29 3.65G 0.09454 0.01781 0.04951 32 640: 100%|██████████| 37/37 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 5/5 [00:00<0
all 150 230 0.0226 0.0556 0.0172 0.00371
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
3/29 3.65G 0.08653 0.01659 0.04304 37 640: 100%|██████████| 37/37 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 5/5 [00:00<0
all 150 230 0.0736 0.238 0.106 0.042
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
4/29 3.65G 0.07595 0.01581 0.03856 33 640: 100%|██████████| 37/37 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 5/5 [00:00<0
all 150 230 0.139 0.45 0.228 0.0895
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
5/29 3.65G 0.06804 0.0139 0.03444 44 640: 100%|██████████| 37/37 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 5/5 [00:00<0
all 150 230 0.749 0.314 0.425 0.206
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
6/29 3.65G 0.06295 0.01304 0.03212 48 640: 100%|██████████| 37/37 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 5/5 [00:00<0
all 150 230 0.703 0.361 0.44 0.234
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
7/29 3.65G 0.05831 0.01187 0.02852 74 640: 100%|██████████| 37/37 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 5/5 [00:00<0
all 150 230 0.435 0.659 0.538 0.258
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
8/29 3.65G 0.05609 0.01114 0.02617 42 640: 100%|██████████| 37/37 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 5/5 [00:00<0
all 150 230 0.591 0.684 0.682 0.339
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
9/29 3.65G 0.05391 0.01047 0.02247 50 640: 100%|██████████| 37/37 [00:03<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 5/5 [00:00<0
all 150 230 0.47 0.684 0.536 0.298
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
10/29 3.65G 0.05144 0.009963 0.0219 38 640: 100%|██████████| 37/37 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 5/5 [00:00<0
all 150 230 0.867 0.733 0.841 0.429
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
11/29 3.65G 0.04968 0.009795 0.01991 51 640: 100%|██████████| 37/37 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 5/5 [00:00<0
all 150 230 0.785 0.785 0.812 0.475
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
12/29 3.65G 0.04783 0.01023 0.01957 47 640: 100%|██████████| 37/37 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 5/5 [00:00<0
all 150 230 0.749 0.756 0.788 0.455
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
13/29 3.65G 0.04579 0.009305 0.01832 38 640: 100%|██████████| 37/37 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 5/5 [00:00<0
all 150 230 0.749 0.794 0.793 0.467
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
14/29 3.65G 0.044 0.009433 0.01659 39 640: 100%|██████████| 37/37 [00:03<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 5/5 [00:00<0
all 150 230 0.843 0.824 0.884 0.527
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
15/29 3.65G 0.04319 0.009144 0.01619 62 640: 100%|██████████| 37/37 [00:03<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 5/5 [00:00<0
all 150 230 0.899 0.84 0.902 0.554
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
16/29 3.65G 0.0407 0.00878 0.01458 37 640: 100%|██████████| 37/37 [00:03<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 5/5 [00:00<0
all 150 230 0.836 0.82 0.872 0.501
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
17/29 3.65G 0.03939 0.008869 0.01431 43 640: 100%|██████████| 37/37 [00:03<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 5/5 [00:00<0
all 150 230 0.918 0.848 0.92 0.544
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
18/29 3.65G 0.03764 0.008324 0.01392 39 640: 100%|██████████| 37/37 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 5/5 [00:00<0
all 150 230 0.952 0.812 0.915 0.534
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
19/29 3.65G 0.03544 0.008533 0.01277 37 640: 100%|██████████| 37/37 [00:03<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 5/5 [00:00<0
all 150 230 0.939 0.86 0.926 0.569
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
20/29 3.65G 0.03505 0.008579 0.01321 48 640: 100%|██████████| 37/37 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 5/5 [00:00<0
all 150 230 0.95 0.84 0.925 0.619
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
21/29 3.65G 0.03357 0.0083 0.01221 36 640: 100%|██████████| 37/37 [00:03<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 5/5 [00:00<0
all 150 230 0.962 0.855 0.933 0.622
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
22/29 3.65G 0.03258 0.008084 0.01167 59 640: 100%|██████████| 37/37 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 5/5 [00:00<0
all 150 230 0.956 0.834 0.928 0.631
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
23/29 3.65G 0.03153 0.008387 0.01206 65 640: 100%|██████████| 37/37 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 5/5 [00:00<0
all 150 230 0.912 0.872 0.926 0.668
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
24/29 3.65G 0.02976 0.007869 0.01135 47 640: 100%|██████████| 37/37 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 5/5 [00:00<0
all 150 230 0.907 0.866 0.925 0.653
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
25/29 3.65G 0.02866 0.007615 0.01101 46 640: 100%|██████████| 37/37 [00:03<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 5/5 [00:00<0
all 150 230 0.903 0.87 0.926 0.653
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
26/29 3.65G 0.02773 0.007582 0.01107 42 640: 100%|██████████| 37/37 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 5/5 [00:00<0
all 150 230 0.905 0.891 0.932 0.687
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
27/29 3.65G 0.02651 0.007505 0.01082 42 640: 100%|██████████| 37/37 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 5/5 [00:00<0
all 150 230 0.921 0.86 0.932 0.682
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
28/29 3.65G 0.02511 0.007342 0.01027 33 640: 100%|██████████| 37/37 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 5/5 [00:01<0
all 150 230 0.91 0.872 0.933 0.683
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
29/29 3.65G 0.02481 0.007517 0.01037 49 640: 100%|██████████| 37/37 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 5/5 [00:00<0
all 150 230 0.912 0.884 0.933 0.684
30 epochs completed in 0.036 hours.
Optimizer stripped from runs\train\ts_yolov5s_ep30\weights\last.pt, 14.8MB
Optimizer stripped from runs\train\ts_yolov5s_ep30\weights\best.pt, 14.8MB
Validating runs\train\ts_yolov5s_ep30\weights\best.pt...
Fusing layers...
Model summary: 157 layers, 7236673 parameters, 0 gradients, 16.5 GFLOPs
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 5/5 [00:01<0
all 150 230 0.905 0.89 0.932 0.689
prohibitory 150 108 0.954 0.953 0.98 0.763
danger 150 38 0.934 0.921 0.959 0.684
mandatory 150 35 0.876 0.81 0.9 0.687
other 150 49 0.854 0.878 0.89 0.621
Results saved to runs\train\ts_yolov5s_ep30
}}
#enddivregion
~
+ メッセージ「Results saved to runs\train\ts_yolov5s_ep30」のファイルを確認~
#codeprettify(){{
(py_learn) ls runs/train/ts_yolov5s_ep30
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2024/04/15 9:20 weights
-a---- 2024/04/15 9:23 558388 confusion_matrix.png
-a---- 2024/04/15 9:23 226814 F1_curve.png
-a---- 2024/04/15 9:19 401 hyp.yaml
-a---- 2024/04/15 9:20 126318 labels.jpg
-a---- 2024/04/15 9:20 223809 labels_correlogram.jpg
-a---- 2024/04/15 9:19 1208 opt.yaml
-a---- 2024/04/15 9:23 124885 PR_curve.png
-a---- 2024/04/15 9:23 172410 P_curve.png
-a---- 2024/04/15 9:23 9145 results.csv
-a---- 2024/04/15 9:23 289059 results.png
-a---- 2024/04/15 9:23 175122 R_curve.png
-a---- 2024/04/15 9:20 501238 train_batch0.jpg
-a---- 2024/04/15 9:20 483837 train_batch1.jpg
-a---- 2024/04/15 9:20 496065 train_batch2.jpg
-a---- 2024/04/15 9:23 448059 val_batch0_labels.jpg
-a---- 2024/04/15 9:23 451714 val_batch0_pred.jpg
-a---- 2024/04/15 9:23 447649 val_batch1_labels.jpg
-a---- 2024/04/15 9:23 453702 val_batch1_pred.jpg
-a---- 2024/04/15 9:23 389031 val_batch2_labels.jpg
-a---- 2024/04/15 9:23 395697 val_batch2_pred.jpg
}}
・学習結果モデルは「runs/train/exp*/weights」評価指標は「runs/train/exp*/」~
|CENTER:F1 curve|CENTER:P curve|CENTER:PR curve|CENTER:R curve|h
|#ref(ts_F1_curve_m.jpg,left,around,15%,F1_curve_m.jpg)|#ref(ts_P_curve_m.jpg,left,around,15%,P_curve_m.jpg)|#ref(ts_PR_curve_m.jpg,left,around,15%,PR_curve_m.jpg)|#ref(ts_R_curve_m.jpg,left,around,15%,R_curve_m.jpg)|
#ref(ts_results_m.jpg,left,around,40%,resuls_m.jpg)
#ref(ts_confusion_matrix_m.jpg,left,around,25%,confusion_matrix_m.jpg)
#clear
#ref(ts_labels_correlogram_m.jpg,left,around,15%,labels_correlogram.jpg)
#ref(ts_labels_m.jpg,left,around,15%,labels.jpg)
#ref(ts_train_batch0_m.jpg,left,around,10%,train_batch0.jpg)
#ref(ts_train_batch1_m.jpg,left,around,10%,train_batch1.jpg)
#ref(ts_train_batch2_m.jpg,left,around,10%,train_batch2.jpg)
#clear
#ref(ts_val_batch0_labels_m.jpg,left,around,10%,val_batch0_labels.jpg)
#ref(ts_val_batch0_pred_m.jpg,left,around,10%,val_batch0_pred.jpg)
#ref(ts_val_batch1_labels_m.jpg,left,around,10%,val_batch1_labels.jpg)
#ref(ts_val_batch1_pred_m.jpg,left,around,10%,val_batch1_pred.jpg)
#ref(ts_val_batch2_labels_m.jpg,left,around,10%,val_batch2_labels.jpg)
#ref(ts_val_batch2_pred_m.jpg,left,around,10%,val_batch2_pred.jpg)
#clear
*** 実行結果を使って推論 [#l64f9bdc]
*** 実行結果を使って推論 [#b273ea9e]
+「detect2.py」で推論実行(静止画)~
・学習結果モデルを指定する~
#codeprettify(){{
(py_learn) python detect2.py --weights ./runs/train/ts_yolov5s_ep30/weights/best.pt --source data/ts_dataset/images/val/00001.jpg
}}
#ref(train_00001_s.jpg,right,around,30%,train_00001_s.jpg)
・実行ログ(結果は「runs/detect/exp*」*は順次更新)~
#codeprettify(){{
(py_learn) python detect2.py --weights ./runs/train/ts_yolov5s_ep30/weights/best.pt --source data/ts_dataset/images/val/00001.jpg
detect2: weights=['./runs/train/ts_yolov5s_ep30/weights/best.pt'], source=data/ts_dataset/images/val/00001.jpg, data=data\coco128.yaml, imgsz=[640, 640], conf_thres=0.25, iou_thres=0.45, max_det=1000, device=, view_img=False, save_txt=False, save_csv=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, vid_stride=1
YOLOv5 v7.0-294-gdb125a20 Python-3.11.8 torch-2.2.1+cu121 CUDA:0 (NVIDIA GeForce RTX 4070 Ti, 12282MiB)
Fusing layers...
Model summary: 157 layers, 7236673 parameters, 0 gradients, 16.5 GFLOPs
Speed: 1.0ms pre-process, 52.0ms inference, 46.1ms NMS per image at shape (1, 3, 640, 640)
Results saved to runs\detect\exp25
}}
+「detect2.py」で推論実行(動画)~
・学習結果モデルを指定する~
#codeprettify(){{
(py_learn) python detect2.py --weights ./runs/train/ts_yolov5s_ep30/weights/best.pt --source data/images/traffic-sign-to-test.mp4
}}
#ref(traffic_test.gif,right,around,50%,traffic_test.gif)
・実行ログ(結果は「runs/detect/exp*」*は順次更新)~
#codeprettify(){{
(py_learn) python detect2.py --weights ./runs/train/ts_yolov5s_ep30/weights/best.pt --source data/images/traffic-sign-to-test.mp4
detect2: weights=['./runs/train/ts_yolov5s_ep30/weights/best.pt'], source=data/images/traffic-sign-to-test.mp4, data=data\coco128.yaml, imgsz=[640, 640], conf_thres=0.25, iou_thres=0.45, max_det=1000, device=, view_img=False, save_txt=False, save_csv=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, vid_stride=1
YOLOv5 v7.0-294-gdb125a20 Python-3.11.8 torch-2.2.1+cu121 CUDA:0 (NVIDIA GeForce RTX 4070 Ti, 12282MiB)
Fusing layers...
Model summary: 157 layers, 7236673 parameters, 0 gradients, 16.5 GFLOPs
Speed: 0.2ms pre-process, 5.1ms inference, 5.0ms NMS per image at shape (1, 3, 640, 640)
Results saved to runs\detect\exp32
}}
*** 実行結果を使って推論(日本語表示) [#k1f3a1bc]
*** 実行結果を使って推論(日本語表示) [#ha837e67]
+ ラベルファイルを作成する~
・「ts_names_jp」日本語(「coco.names_jp」をコピーし編集)~
#codeprettify(){{
人
自転車
車
:
ヘアドライヤー
歯ブラシ
標識-禁止
標識-危険
標識-必須
標識-その他
}}
・「ts_names」英語(「coco.names」をコピーし編集)~
#codeprettify(){{
person
bicycle
car
:
toothbrush
prohibitory
danger
mandatory
other
}}
+「detect2_yolov5.py」で推論実行(静止画)~
・学習結果モデルを指定する~
#codeprettify(){{
(py_learn) python detect2_yolov5.py -m ./runs/train/ts_yolov5s_ep30/weights/best.pt -i data/ts_dataset/images/val/00001.jpg -l ts_names_jp
}}
#ref(ts_result_s.jpg,right,around,30%,ts_result_s.jpg)
・実行ログ~
#codeprettify(){{
(py_learn) python detect2_yolov5.py -m ./runs/train/ts_yolov5s_ep30/weights/best.pt -i data/ts_dataset/images/val/00001.jpg -l ts_names_jp
Object detection YoloV5 in PyTorch Ver. 0.05: Starting application...
OpenCV virsion : 4.9.0
- Image File : data/ts_dataset/images/val/00001.jpg
- YOLO v5 : ultralytics/yolov5
- Pretrained : ./runs/train/ts_yolov5s_ep30/weights/best.pt
- Confidence lv: 0.25
- Label file : ts_names_jp
- Program Title: y
- Speed flag : y
- Processed out: non
- Use device : cuda:0
Using cache found in C:\Users\izuts/.cache\torch\hub\ultralytics_yolov5_master
YOLOv5 2024-4-9 Python-3.11.8 torch-2.2.1+cu121 CUDA:0 (NVIDIA GeForce RTX 4070 Ti, 12282MiB)
Fusing layers...
Model summary: 157 layers, 7236673 parameters, 0 gradients, 16.5 GFLOPs
Adding AutoShape...
FPS average: 7.90
Finished.
}}
+「detect2_yolov5.py」で推論実行(動画)~
・学習結果モデルを指定する~
#codeprettify(){{
(py_learn) python detect2_yolov5.py -m ./runs/train/ts_yolov5s_ep30/weights/best.pt -i data/images/traffic-sign-to-test.mp4 -l ts_names_jp
}}
#ref(ts_result.gif,right,around,50%,ts_result.gif)
・実行ログ~
#codeprettify(){{
(py_learn) python detect2_yolov5.py -m ./runs/train/ts_yolov5s_ep30/weights/best.pt -i data/images/traffic-sign-to-test.mp4 -l ts_names_jp
Object detection YoloV5 in PyTorch Ver. 0.05: Starting application...
OpenCV virsion : 4.9.0
- Image File : data/images/traffic-sign-to-test.mp4
- YOLO v5 : ultralytics/yolov5
- Pretrained : ./runs/train/ts_yolov5s_ep30/weights/best.pt
- Confidence lv: 0.25
- Label file : ts_names_jp
- Program Title: y
- Speed flag : y
- Processed out: non
- Use device : cuda:0
Using cache found in C:\Users\izuts/.cache\torch\hub\ultralytics_yolov5_master
YOLOv5 2024-4-9 Python-3.11.8 torch-2.2.1+cu121 CUDA:0 (NVIDIA GeForce RTX 4070 Ti, 12282MiB)
Fusing layers...
Model summary: 157 layers, 7236673 parameters, 0 gradients, 16.5 GFLOPs
Adding AutoShape...
FPS average: 52.70
Finished.
}}
*** 結果から見た疑問点 [#t55e4beb]
*** 結果から見た疑問点 [#m0a566f7]
-「元々の cocoデータセット 80クラスに追加学習して 84のクラスとなった学習済みモデル」で「新たに追加した4クラスしか識別できない」のはなぜか?~
#ref(exp8_bus_m.jpg,right,around,15%,exp8_bus_m.jpg)
・追加学習モデルを使っての検出(84クラス)ログ~
#codeprettify(){{
(py_learn) python detect2.py --weights ./runs/train/ts_yolov5s_ep30/weights/best.pt --source data/images/bus.jpg
detect2: weights=['./runs/train/ts_yolov5s_ep30/weights/best.pt'], source=data/images/bus.jpg, data=data\coco128.yaml, imgsz=[640, 640], conf_thres=0.25, iou_thres=0.45, max_det=1000, device=, view_img=False, save_txt=False, save_csv=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, vid_stride=1
YOLOv5 v7.0-294-gdb125a20 Python-3.11.8 torch-2.2.1+cu121 CUDA:0 (NVIDIA GeForce RTX 4070 Ti, 12282MiB)
Fusing layers...
Model summary: 157 layers, 7236673 parameters, 0 gradients, 16.5 GFLOPs
Speed: 1.0ms pre-process, 50.0ms inference, 45.1ms NMS per image at shape (1, 3, 640, 640)
Results saved to runs\detect\exp8
}}
#ref(YOLOv5/yolov5_bus_result.jpg,right,around,15%,yolov5_bus_result.jpg)
・元々の yolov5s.pt モデルでの検出(80クラス)ログ~
#codeprettify(){{
(py_learn) python detect2.py --source data/images/bus.jpg
detect2: weights=yolov5s.pt, source=data/images/bus.jpg, data=data\coco128.yaml, imgsz=[640, 640], conf_thres=0.25, iou_thres=0.45, max_det=1000, device=, view_img=False, save_txt=False, save_csv=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, vid_stride=1
YOLOv5 v7.0-294-gdb125a20 Python-3.11.8 torch-2.2.1+cu121 CUDA:0 (NVIDIA GeForce RTX 4070 Ti, 12282MiB)
Fusing layers...
YOLOv5s summary: 213 layers, 7225885 parameters, 0 gradients, 16.4 GFLOPs
Speed: 0.0ms pre-process, 51.9ms inference, 47.0ms NMS per image at shape (1, 3, 640, 640)
Results saved to runs\detect\exp9
}}
- 追加学習で元のクラスの識別機能を保持したまま、新しくクラスを追加することはできないか?~
・『学習済みのディープニューラルネットワークの最終層を除去し、その上で新しい 4クラスを学習できるように調整を行っているため』らしい~
・『学習済みのディープニューラルネットワークの最終層を保持したまま新しいクラスを追加するような学習方法はあるか?~
*** 疑問点についての考察 [#mbe0e05c]
*** 疑問点についての考察 [#edaf41b9]
#ref(bus_result_ex0_ucr.jpg,right,around,15%,bus_result_ex0_ucr.jpg)
-「追加学習」で解決すべき問題でないかもしれない~
・元の学習済みのモデルで推論を行った後追加の学習させたモデルで推論を行うことで目的を達成できる →~
・元の 80クラスの識別結果と左上に追加モデルでの『標識』が識別できているのがわかる~
~
- この結果から見るに上記の学習で「Traffic Signs Dataset」データセットのクラス番号(ID) を「0, 1, 2, 3」→「80, 81, 82, 83」とシフトする意味はないと考える~
・追加学習する「Traffic Signs Dataset」データセットには cocoデータセットに使用されているクラス番号に相当するアノテーションデータは含まれていない~
・推論結果で必要に応じて対応すればよいことである~
#clear
***「Traffic Signs Dataset」を再学習 [#b8e51a55]
***「Traffic Signs Dataset」を再学習 [#i50b9154]
+ クラス番号(ID) を変更しないデータセット「ts0_dataset」を作成する~
+ エポック数 30 で実行する~
・実行ディレクトリは「workspace_pylearn/yolov5/」~
・学習モデルはデフォールト設定「yolov7s」を使用する~
・学習結果フォルダ名は「ts0_yolov5s_ep30」とする
#codeprettify(){{
(py_learn) python train.py --data data/ts0_dataset/ts.yaml --weights yolov5s.pt --img 640 --epochs 30 --name ts0_yolov5s_ep30
}}
・GPU を使用しない場合は以下のコマンドを実行する~
#codeprettify(){{
(py_learn) python train.py --data data/ts0_dataset/ts.yaml --weights yolov5s.pt --img 640 --epochs 30 --name ts0_yolov5s_ep30 --device cpu
}}
+ 学習の終了~
#codeprettify(){{
:
Validating runs\train\ts0_yolov5s_ep30\weights\best.pt...
Fusing layers...
Model summary: 157 layers, 7020913 parameters, 0 gradients, 15.8 GFLOPs
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 5/5 [00:01<0
all 150 230 0.924 0.89 0.929 0.683
prohibitory 150 108 0.96 0.944 0.988 0.793
danger 150 38 0.973 0.945 0.951 0.691
mandatory 150 35 0.85 0.812 0.887 0.621
other 150 49 0.911 0.857 0.889 0.627
Results saved to runs\train\ts0_yolov5s_ep30
}}
・学習結果モデルは「runs/train/ts0_dataset_ep30/weights」評価指標は「runs/train/ts0_dataset_ep30/」~
|CENTER:F1 curve|CENTER:P curve|CENTER:PR curve|CENTER:R curve|h
|#ref(ts0_F1_curve_m.jpg,left,around,15%,F1_curve_m.jpg)|#ref(ts0_P_curve_m.jpg,left,around,15%,P_curve_m.jpg)|#ref(ts0_PR_curve_m.jpg,left,around,15%,PR_curve_m.jpg)|#ref(ts0_R_curve_m.jpg,left,around,15%,R_curve_m.jpg)|
#ref(ts0_results_m.jpg,left,around,40%,resuls_m.jpg)
#ref(ts0_confusion_matrix_m.jpg,left,around,25%,confusion_matrix_m.jpg)
#clear
#ref(ts0_labels_correlogram_m.jpg,left,around,15%,labels_correlogram.jpg)
#ref(ts0_labels_m.jpg,left,around,15%,labels.jpg)
#ref(ts0_train_batch0_m.jpg,left,around,10%,train_batch0.jpg)
#ref(ts0_train_batch1_m.jpg,left,around,10%,train_batch1.jpg)
#ref(ts0_train_batch2_m.jpg,left,around,10%,train_batch2.jpg)
#clear
#ref(ts0_val_batch0_labels_m.jpg,left,around,10%,val_batch0_labels.jpg)
#ref(ts0_val_batch0_pred_m.jpg,left,around,10%,val_batch0_pred.jpg)
#ref(ts0_val_batch1_labels_m.jpg,left,around,10%,val_batch1_labels.jpg)
#ref(ts0_val_batch1_pred_m.jpg,left,around,10%,val_batch1_pred.jpg)
#ref(ts0_val_batch2_labels_m.jpg,left,around,10%,val_batch2_labels.jpg)
#ref(ts0_val_batch2_pred_m.jpg,left,around,10%,val_batch2_pred.jpg)
#clear
*** 2つまでの学習済みモデルを指定できる YOLO V5 物体検出プログラム「detect3_yolov5.py」 [#z88382d3]
*** 2つまでの学習済みモデルを指定できる YOLO V5 物体検出プログラム「detect3_yolov5.py」 [#u0a7aa2e]
#ref(d3_00001_s.jpg,right,around,30%,d3_00001_s.jpg)
#ref(d3_00001_ucr_s.jpg,right,around,30%,d3_00001_ucr_s.jpg)
- 作成プログラムの仕様~
・''前述の「detect2_yolov5.py」改良版で以前のコマンドはそのまま動作する''~
・オンライン/オフライン(ローカル)どちらでも動作する~
・検出された オブジェクトを領域と文字で表示する~
・複数のモデルを指定した場合は最初のモデルの最終クラスID の次に自動的にシフトする~
最初のモデル(0~79) 次のモデル(0~3) → (80~83)~
最初のモデル(0~79) を次のモデルが包括する場合(0~83)はそのままのクラスID を使用する~
・文字の表示は「日本語/英語」の表記が可能~
・オブジェクトの種類によって色分け表示する(Ultralytics オリジナル配色の指定も可能)~
・入力ソースは「WEBカメラ(0~9)/動画ファイル/静止画ファイル」に対応する。~
・結果を画像出力できる~
~
-「yolov5」ディレクトリ直下に統合したラベルファイルを用意しておく~
・「ts_names_jp」日本語~
#codeprettify(){{
人 ← coco データ ID: 0
自転車
車
:
ヘアドライヤー
歯ブラシ ← coco データ ID:79
標識-禁止 ← Traffic Signs データ ID:80 (0)
標識-危険
標識-必須
標識-その他 ← Traffic Signs データ ID:83 (3)
}}
・「ts_names」英語~
#codeprettify(){{
person ← coco データ ID: 0
bicycle
car
:
toothbrush ← coco データ ID:79
prohibitory ← Traffic Signs データ ID:80 (0)
danger
mandatory
other ← Traffic Signs データ ID:83 (3)
}}
~
- コマンドパラメータ~
|LEFT:|CENTER:|LEFT:|c
|CENTER:コマンドオプション|初期値|CENTER:意味|h
|BGCOLOR(lightyellow): -i , --image|BGCOLOR(lightyellow):'../../Videos/car_m.mp4'|BGCOLOR(lightyellow):入力ソースのパス またはカメラ(cam/cam0~cam9)|
|BGCOLOR(lightyellow): -y , --yolov5|BGCOLOR(lightyellow):'ultralytics/yolov5'|BGCOLOR(lightyellow):yolov5ディレクトリのパス(ローカルの場合は yolov5 のパス)|
|BGCOLOR(lightyellow): -m , --models|BGCOLOR(lightyellow):'yolov5s'|BGCOLOR(lightyellow):モデル名(ローカルの場合は モデルファイルのパス)※1|
|BGCOLOR(lightyellow): -ms , --models2|BGCOLOR(lightyellow):''|BGCOLOR(lightyellow):2番目に推論するモデル名(モデルファイルのパス)|
|BGCOLOR(lightyellow): -l , --labels|BGCOLOR(lightyellow):'coco.names_jp'|BGCOLOR(lightyellow):ラベルファイルのパス(coco.name, coco_name_jp)|
| -c , --conf|0.25|オブジェクト検出レベルの閾値|
| -t , --title|'y'|タイトルの表示(y/n)|
| -s , --speed|'y'|速度の表示(y/n)|
| -o , --out|'non'|出力結果の保存パス <path/filename> ※2|
| -cpu|-|CPUフラグ(指定すれば 常に CPU動作)|
| --log|3|ログ出力レベル (0/1/2/3/4/5)|
|BGCOLOR(lightyellow): --ucr|BGCOLOR(lightyellow):-|BGCOLOR(lightyellow):配色フラグ(指定すれば Ultralytics カラー)|
※1 オンライン動作の場合の指定できるモデルの種類「yolov5n」「yolov5s」「yolov5m」「yolov5l」「yolov5x」~
※2 出力ファイル名までのディレクトリ・パスは必ず存在すること(存在しない場合は保存しない)~
~
・「-y , --yolov5」パラメータ指定の例~
#codeprettify(){{
-y ultralytics/yolov5 ← オンライン(TorchHub)<default>
-y ./ ← オフライン(ローカル)
}}
※ 初回起動時にキャッシュにダウンロードされ以後はキャッシュで動作する~
~
・「-m , --models」パラメータ指定の例~
#codeprettify(){{
-m yolov5s ← オンライン(TorchHub)<default>
-m ./test/yolov5s.pt ← オフライン(ローカル)
}}
※ モデルが指定場所にない場合は、初回実行時に自動的にダウンロードされる~
~
#divregion( コマンドパラメータ詳細)
#codeprettify(){{
(py_learn) python detect3_yolov5.py -h
usage: detect3_yolov5.py [-h] [-i IMAGE_FILE] [-y YOLOV5] [-m MODELS] [-ms MODELS2] [-c CONFIDENCE] [-l LABELS]
[-t TITLE] [-s SPEED] [-o IMAGE_OUT] [-cpu] [--log LOG] [--ucr]
options:
-h, --help show this help message and exit
-i IMAGE_FILE, --image IMAGE_FILE
Absolute path to image file or cam/cam0/cam1 for camera stream.
-y YOLOV5, --yolov5 YOLOV5
YOLO V5 directry absolute path.
-m MODELS, --models MODELS
yolov5n/yolov5m/yolov5l/yolov5x or model file absolute path.
-ms MODELS2, --models2 MODELS2
second model file absolute path.
-c CONFIDENCE, --conf CONFIDENCE
confidences labels Default value is 0.25
-l LABELS, --labels LABELS
Language.(jp/en) Default value is 'jp'
-t TITLE, --title TITLE
Program title flag.(y/n) Default value is 'y'
-s SPEED, --speed SPEED
Speed display flag.(y/n) Default calue is 'y'
-o IMAGE_OUT, --out IMAGE_OUT
Processed image file path. Default value is 'non'
-cpu Optional. CPU only!
--log LOG Log level(-1/0/1/2/3/4/5) Default value is '3'
--ucr use Ultralytics color
}}
#enddivregion
~
- オンライン実行例~
#codeprettify(){{
(py_learn) python detect3_yolov5.py -m yolov5s.pt -ms runs/train/ts0_yolov5s_ep30/weights/best.pt -i data/images/drive003_s.mp4 -l ts_names_jp
}}
・実行結果~
#ref(drive003_ts0_s.gif,right,around,100%,drive003_ts0_s.gif)
#codeprettify(){{
(py_learn) python detect3_yolov5.py -m yolov5s.pt -ms runs/train/ts0_yolov5s_ep30/weights/best.pt -i data/images/drive003_s.mp4 -l ts_names_jp
Starting..
Object detection YoloV5 in PyTorch Ver. 0.06: Starting application...
OpenCV virsion : 4.9.0
- Image File : data/images/drive003_s.mp4
- YOLO v5 : ultralytics/yolov5
- Pretrained : yolov5s.pt
- Pretrained 2 : runs/train/ts0_yolov5s_ep30/weights/best.pt
- Confidence lv: 0.25
- Label file : ts_names_jp
- Program Title: y
- Speed flag : y
- Processed out: non
- Use device : cuda:0
- Log Level : 3
Using cache found in C:\Users\<USER>/.cache\torch\hub\ultralytics_yolov5_master
YOLOv5 2024-4-9 Python-3.11.8 torch-2.2.1+cu121 CUDA:0 (NVIDIA GeForce RTX 4070 Ti, 12282MiB)
Fusing layers...
YOLOv5s summary: 213 layers, 7225885 parameters, 0 gradients, 16.4 GFLOPs
Adding AutoShape...
Using cache found in C:\Users\<USER>/.cache\torch\hub\ultralytics_yolov5_master
YOLOv5 2024-4-9 Python-3.11.8 torch-2.2.1+cu121 CUDA:0 (NVIDIA GeForce RTX 4070 Ti, 12282MiB)
Fusing layers...
Model summary: 157 layers, 7020913 parameters, 0 gradients, 15.8 GFLOPs
Adding AutoShape...
FPS average: 22.00
Finished.
}}
#clear
- オフライン実行例~
#codeprettify(){{
(py_learn) python detect3_yolov5.py -m yolov5s.pt -ms runs/train/ts0_yolov5s_ep30/weights/best.pt -i data/images/drive003_s.mp4 -l ts_names_jp -y ./
}}
・実行結果~
#codeprettify(){{
(py_learn) python detect3_yolov5.py -m yolov5s.pt -ms runs/train/ts0_yolov5s_ep30/weights/best.pt -i data/images/drive003_s.mp4 -l ts_names_jp -y ./
Starting..
Object detection YoloV5 in PyTorch Ver. 0.06: Starting application...
OpenCV virsion : 4.9.0
- Image File : data/images/drive003_s.mp4
- YOLO v5 : ./
- Pretrained : yolov5s.pt
- Pretrained 2 : runs/train/ts0_yolov5s_ep30/weights/best.pt
- Confidence lv: 0.25
- Label file : ts_names_jp
- Program Title: y
- Speed flag : y
- Processed out: non
- Use device : cuda:0
- Log Level : 3
YOLOv5 v7.0-294-gdb125a20 Python-3.11.8 torch-2.2.1+cu121 CUDA:0 (NVIDIA GeForce RTX 4070 Ti, 12282MiB)
Fusing layers...
YOLOv5s summary: 213 layers, 7225885 parameters, 0 gradients, 16.4 GFLOPs
Adding AutoShape...
YOLOv5 v7.0-294-gdb125a20 Python-3.11.8 torch-2.2.1+cu121 CUDA:0 (NVIDIA GeForce RTX 4070 Ti, 12282MiB)
Fusing layers...
Model summary: 157 layers, 7020913 parameters, 0 gradients, 15.8 GFLOPs
Adding AutoShape...
FPS average: 22.60
Finished.
}}
- ドライブレコーダの画像で認識してみる~
~
&tinyvideo(https://izutsu.aa0.netvolante.jp/video/ai_result/drive001_ts0_s.mp4,400 225,controls,loop,muted,autoplay);
&tinyvideo(https://izutsu.aa0.netvolante.jp/video/ai_result/drive005_ts0_s.mp4,400 225,controls,loop,muted,autoplay);~
cocoデータセットのオブジェクトと交通標識が検出できている。~
#clear
- ソースコード~
#divregion(「detect3_yolov5.py」)
#codeprettify(){{
# -*- coding: utf-8 -*-
# -*- coding: utf-8 -*-
##------------------------------------------
## 【復習】「PyTorch で始める AI開発」
## Chapter 04 / Extra edition Ver. 0.6
## Chapter 04 / Extra edition Ver. 0.7
## YoloV5 in PyTorch による物体検出
##
## 2024.09.13 Masahiro Izutsu
##------------------------------------------
## detect3_yolov5.py (detect3_yolov5.py を改良)
## Ver. 0.03 2024/04/09 classID=119 まで対応
## Ver. 0.04 2024/04/13 クラウド/ローカル切り替え
## Ver. 0.05 2024/04/15 confidence 閾値設定/カメラ入力(cam0-cam9)
## Ver. 0.06 2024/04/15 プログラム名変更 2つ目のモデル追加/ログ出力
## Ver. 0.07 2024/04/30 ラベルファイルなしの対応
# -y <YOLOv5> -m <Pretrained model>
# 'ultralytics/yolov5' 'yolov5s' [yolov5n][yolov5m][yolov5l][yolov5x] Torch Hub on line
# '/anaconda_win/workspace_pylearn/yolov5' '/anaconda_win/workspace_pylearn/yolov5/yolov5s' off line
#
# 例:Windows
# python detect2_yolov5.py (Torch Hub on line )
# python detect2_yolov5.py -y '/anaconda_win/workspace_pylearn/yolov5' -m '/anaconda_win/workspace_pylearn/yolov5/yolov5s'
#
# 例:Linux
# python detect2_yolov5.py (Torch Hub on line)
# python detect2_yolov5.py -y '~/workspace_pylearn/yolov5' -m '~/workspace_pylearn/yolov5/yolov5s'
# Color Escape Code
GREEN = '\033[1;32m'
RED = '\033[1;31m'
NOCOLOR = '\033[0m'
YELLOW = '\033[1;33m'
# 定数定義
WINDOW_WIDTH = 640
from os.path import expanduser
INPUT_DEF = expanduser('../../Videos/car_m.mp4')
LANG_DEF = 'coco.names_jp' # 2024/04/09
# import処理
import sys
import cv2
import numpy as np
import argparse
import torch
from torch import nn
from torchvision import transforms, models
from PIL import Image
import platform
import my_puttext # my library 2024.03.13
import my_fps # my library 2024.03.13
import my_color80 # my library 2024.03.13
import my_logging
import my_puttext # 2024/03/13 my library
import my_fps # 2024/03/13 my library
import my_color80 # 2024/03/13 my library
import my_logging # 2024/04/15
from os.path import isfile # 2024/04/30 Ver. 0.06
from ultralytics.utils.plotting import colors
TEXT_COLOR = my_color80.CR_white
# タイトル
title = 'Object detection YoloV5 in PyTorch Ver. 0.06'
title = 'Object detection YoloV5 in PyTorch Ver. 0.07'
# Parses arguments for the application
def parse_args():
parser = argparse.ArgumentParser()
parser.add_argument('-i', '--image', metavar = 'IMAGE_FILE', type=str,
default = INPUT_DEF,
help = 'Absolute path to image file or cam/cam0/cam1 for camera stream.')
parser.add_argument('-y', '--yolov5', metavar = 'YOLOV5', type=str,
default = 'ultralytics/yolov5',
help = 'YOLO V5 directry absolute path.')
parser.add_argument('-m', '--models', metavar = 'MODELS', type=str,
default = 'yolov5s',
help = 'yolov5n/yolov5m/yolov5l/yolov5x or model file absolute path.')
parser.add_argument('-ms', '--models2', metavar = 'MODELS2', type=str,
default = '',
help = 'second model file absolute path.')
parser.add_argument('-c', '--conf', metavar = 'CONFIDENCE',
default = 0.25, # 2024/04/14
help = 'confidences labels Default value is 0.25')
parser.add_argument('-l', '--labels', metavar = 'LABELS',
default = LANG_DEF, # 2024/04/09
help = 'Language.(jp/en) Default value is \'jp\'')
parser.add_argument('-t', '--title', metavar = 'TITLE',
default = 'y',
help = 'Program title flag.(y/n) Default value is \'y\'')
parser.add_argument('-s', '--speed', metavar = 'SPEED',
default = 'y',
help = 'Speed display flag.(y/n) Default calue is \'y\'')
parser.add_argument('-o', '--out', metavar = 'IMAGE_OUT',
default = 'non',
help = 'Processed image file path. Default value is \'non\'')
parser.add_argument("-cpu", default = False, action = 'store_true',
help="Optional. CPU only!")
parser.add_argument('--log', metavar = 'LOG', default = '3',
help = 'Log level(-1/0/1/2/3/4/5) Default value is \'3\'')
parser.add_argument("--ucr", default=False, action="store_true",
help="use Ultralytics color")
return parser
# モデル基本情報の表示
def display_info(args, image, yolov5, models, models2, conf, labels, titleflg, speedflg, outpath, use_device, log):
print('\n' + GREEN + title + ': Starting application...' + NOCOLOR)
print(' OpenCV virsion :',cv2.__version__)
print('\n - ' + YELLOW + 'Image File : ' + NOCOLOR, image)
print(' - ' + YELLOW + 'YOLO v5 : ' + NOCOLOR, yolov5)
print(' - ' + YELLOW + 'Pretrained : ' + NOCOLOR, models)
if models2 != '':
print(' - ' + YELLOW + 'Pretrained 2 : ' + NOCOLOR, models2)
print(' - ' + YELLOW + 'Confidence lv: ' + NOCOLOR, conf)
print(' - ' + YELLOW + 'Label file : ' + NOCOLOR, labels)
print(' - ' + YELLOW + 'Program Title: ' + NOCOLOR, titleflg)
print(' - ' + YELLOW + 'Speed flag : ' + NOCOLOR, speedflg)
print(' - ' + YELLOW + 'Processed out: ' + NOCOLOR, outpath)
print(' - ' + YELLOW + 'Use device : ' + NOCOLOR, use_device)
if args.ucr:
print(' - ' + YELLOW + 'Class color : ' + NOCOLOR, 'Ultralytics')
print(' - ' + YELLOW + 'Log Level : ' + NOCOLOR, log, '\n')
# 画像の種類を判別する
# 戻り値: 'jeg''png'... 画像ファイル
# 'None' 画像ファイル以外 (動画ファイル)
# 'NotFound' ファイルが存在しない
import os
def is_pict(filename):
'''
try:
imgtype = imghdr.what(filename)
except FileNotFoundError as e:
imgtype = 'NotFound'
return str(imgtype)
'''
if not os.path.isfile(filename):
return 'NotFound'
types = ['.bmp','.png','.jpg','.jpeg','.JPG','.tif']
for ss in types:
if filename.endswith(ss):
return ss
return 'None'
# TorchHubからモデルを読み込む (クラウド/ローカル切り替え) 2024/04/15
def load_model(yolov5, models):
cust = 'custom' if 0 < models.find('yolo') else ''
if yolov5 == 'ultralytics/yolov5':
if cust == '':
if -1 == models.find('.'):
model = torch.hub.load(yolov5, models)
else:
model = torch.hub.load(yolov5, 'custom', models)
else:
model = torch.hub.load(yolov5, cust, models)
else:
if cust == '':
if -1 == models.find('.'):
model = torch.hub.load(yolov5, models, source='local')
else:
model = torch.hub.load(yolov5, 'custom', models, source='local')
else:
model = torch.hub.load(yolov5, cust, models, source='local')
return model
# ** main関数 **
def main():
# 日本語フォント指定
fontPIL = my_puttext.get_font() # 2024.03.13
# Argument parsing and parameter setting
args = parse_args().parse_args()
input_stream = args.image
labels = args.labels # 2024/04/09
titleflg = args.title
speedflg = args.speed
# アプリケーション・ログ設定
module = os.path.basename(__file__)
module_name = os.path.splitext(module)[0]
logger = my_logging.get_module_logger_sel(module_name, int(args.log))
logger.info(' Starting..')
# 入力 cam/cam0-cam9 対応 # 2024/04/15
if input_stream.find('cam') == 0 and len(input_stream) < 5:
input_stream = 0 if input_stream == 'cam' else int(input_stream[3])
isstream = True
else:
filetype = is_pict(input_stream)
isstream = filetype == 'None'
if (filetype == 'NotFound'):
print(RED + "\ninput file Not found." + NOCOLOR)
quit()
outpath = args.out
conf = args.conf
yolov5 = args.yolov5 if platform.system()=='Windows' else expanduser(args.yolov5)
models = args.models if platform.system()=='Windows' else expanduser(args.models)
models2 = args.models2 if platform.system()=='Windows' else expanduser(args.models2)
# 判定ラベル
with open(labels, 'r', encoding="utf-8") as labels_file:
label_list = labels_file.read().splitlines()
# GPUが使用できるか調べる
use_device = 'cuda:0' if not args.cpu and torch.cuda.is_available() else 'cpu'
# 情報表示
display_info(args, input_stream, yolov5, models, models2, conf, labels, titleflg, speedflg, outpath, use_device, args.log)
# TorchHubからモデルを読み込む
model = load_model(yolov5, models)
# モデルを推論用に設定する
model.eval()
model.to(use_device)
class_num = len(model.names)
class_ofs = 0
# 判定ラベル # 2024/04/30 Ver. 0.07
if isfile(labels):
with open(labels, 'r', encoding="utf-8") as labels_file:
label_list = labels_file.read().splitlines()
else:
label_list = model.names
# 2つ目のモデル指定がある場合
model2 = None
if models2 != '':
model2 = load_model(yolov5, models2)
model2.eval()
model2.to(use_device)
class_ofs = class_num
# 2番目のモデルのクラスID が1番目のクラスにすべて含まれているかチェック
key = list(model.names)
val = list(model.names.values())
eq = True
for i in range(len(key)):
if (key[i], val[i]) not in model2.names.items():
eq = False
if eq:
class_ofs = 0 # ID はすべて含んでいる
class_ofs = 0 # ID はすべて含んでいる
if not isfile(labels): # 2024/04/30 Ver. 0.07 2番目のモデルのラベルを追加
for i in range(len(model2.names)):
label_list[i + class_ofs] = model2.names[i]
# 入力準備
if (isstream):
# カメラ
cap = cv2.VideoCapture(input_stream)
ret, frame = cap.read()
loopflg = cap.isOpened()
else:
# 画像ファイル読み込み
frame = cv2.imread(input_stream)
if frame is None:
print(RED + "\nUnable to read the input." + NOCOLOR)
quit()
# アスペクト比を固定してリサイズ
img_h, img_w = frame.shape[:2]
if (img_w > WINDOW_WIDTH):
height = round(img_h * (WINDOW_WIDTH / img_w))
frame = cv2.resize(frame, dsize = (WINDOW_WIDTH, height))
loopflg = True # 1回ループ
# 処理結果の記録 step1
if (outpath != 'non'):
if (isstream):
fps = int(cap.get(cv2.CAP_PROP_FPS))
out_w = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
out_h = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
fourcc = cv2.VideoWriter_fourcc('m', 'p', '4', 'v')
outvideo = cv2.VideoWriter(outpath, fourcc, fps, (out_w, out_h))
# 計測値初期化
fpsWithTick = my_fps.fpsWithTick()
fps_total = 0
fpsWithTick.get() # fps計測開始
# メインループ
while (loopflg):
if frame is None:
print(RED + "\nUnable to read the input." + NOCOLOR)
quit()
# ニューラルネットワークを実行する
results = model(frame, size=640)
message = [] # 表示メッセージ
bbox = results.xyxy[0].detach().cpu().numpy()
if models2 != '': # 2つ目のモデル指定がある場合
results2 = model2(frame, size=640)
bbox2 = results2.xyxy[0].detach().cpu().numpy()
for i in range(len(bbox2)):
bbox2[i][5] += class_ofs # クラスID の調整
bbox = np.append(bbox, bbox2, axis=0) # 結果を追加する
logger.debug(bbox)
for preds in bbox:
xmin = int(preds[0])
ymin = int(preds[1])
xmax = int(preds[2])
ymax = int(preds[3])
confidence = preds[4]
class_id = int(preds[5])
color_id = class_id if class_id < 80 else class_id - 40 # 2024/04/09
if (confidence > conf): # 低い確率を除外
# オブジェクト別の色指定 # 2024/04/16
if args.ucr:
BOX_COLOR = colors(color_id, True)
LABEL_BG_COLOR = BOX_COLOR
else:
BOX_COLOR = my_color80.get_boder_bgr80(color_id)
LABEL_BG_COLOR = my_color80.get_back_bgr80(color_id)
# ラベル描画領域を得る
x0,y0,x1,y1 = my_puttext.cv2_putText(img = frame,
text = label_list[class_id] + ': %.2f' % confidence,
org = (xmin+5, ymin+18), fontFace = fontPIL,
fontScale = 14,
color = TEXT_COLOR,
mode = 0,
areaf=True)
xx = xmax if xmax > x1 else x1 # 横が領域を超える場合は超えた値にする
cv2.rectangle(frame,(xmin, ymin), (xx, ymin+20), LABEL_BG_COLOR, -1)
my_puttext.cv2_putText(img = frame,
text = label_list[class_id] + ': %.2f' % confidence,
org = (xmin+5, ymin+18), fontFace = fontPIL,
fontScale = 14,
color = TEXT_COLOR,
mode = 0)
# 画像に枠を描く
cv2.rectangle(frame, (xmin, ymin), (xmax, ymax), BOX_COLOR, 2)
# FPSを計算する
fps = fpsWithTick.get()
st_fps = 'fps: {:>6.2f}'.format(fps)
if (speedflg == 'y'):
cv2.rectangle(frame, (10, 38), (95, 55), (90, 90, 90), -1)
cv2.putText(frame, st_fps, (15, 50), cv2.FONT_HERSHEY_DUPLEX, fontScale=0.4, color=(255, 255, 255), lineType=cv2.LINE_AA)
# タイトル描画
if (titleflg == 'y'):
cv2.putText(frame, title, (12, 32), cv2.FONT_HERSHEY_DUPLEX, fontScale=0.8, color=(0, 0, 0), lineType=cv2.LINE_AA)
cv2.putText(frame, title, (10, 30), cv2.FONT_HERSHEY_DUPLEX, fontScale=0.8, color=(200, 200, 0), lineType=cv2.LINE_AA)
# 画像表示
window_name = title + " (hit 'q' or 'esc' key to exit)"
cv2.namedWindow(window_name, flags=cv2.WINDOW_AUTOSIZE | cv2.WINDOW_GUI_NORMAL)
cv2.imshow(window_name, frame)
# 処理結果の記録 step2
if (outpath != 'non'):
if (isstream):
outvideo.write(frame)
else:
cv2.imwrite(outpath, frame)
# 何らかのキーが押されたら終了
breakflg = False
while(True):
key = cv2.waitKey(1)
prop_val = cv2.getWindowProperty(window_name, cv2.WND_PROP_ASPECT_RATIO)
if cv2.getWindowProperty(window_name, cv2.WND_PROP_VISIBLE) < 1:
print('\n Window close !!')
sys.exit(0)
if key == 27 or key == 113 or (prop_val < 0.0): # 'esc' or 'q'
breakflg = True
break
if (isstream):
break
if ((breakflg == False) and isstream):
# 次のフレームを読み出す
ret, frame = cap.read()
if ret == False:
break
loopflg = cap.isOpened()
else:
loopflg = False
# 終了処理
if (isstream):
cap.release()
# 処理結果の記録 step3
if (outpath != 'non'):
if (isstream):
outvideo.release()
cv2.destroyAllWindows()
print('\nFPS average: {:>10.2f}'.format(fpsWithTick.get_average()))
print('\n Finished.')
# main関数エントリーポイント(実行開始)
if __name__ == "__main__":
sys.exit(main())
}}
#enddivregion
#br
** オープンデータセットによる学習「マスク着用の判定」 [#z12627d1]
** オープンデータセットによる学習「マスク着用の判定」 [#d594a393]
- ''引用サイト'' → [[Face Mask Detection)>https://github.com/spacewalk01/yolov5-face-mask-detection?tab=readme-ov-file]]~
- PascalVOC形式のオープンデータセット [[Face Mask Detection Dataset>+https://www.kaggle.com/datasets/andrewmvd/face-mask-detectiona]] を使用する~
[[Mask Wearing Dataset>+https://public.roboflow.com/object-detection/mask-wearing]] から YOLO形式のデータセットを入手可能だが、データ数が少ないのと、以前使用したので、今回は違うものを使ってみる~
*** 前準備 [#l66fb3f9]
*** 前準備 [#g16d5e9f]
#ref(yolov5_train03_m.jpg,right,around,15%,yolov5_train03_m.jpg)
+ ''データセットと変換ツールのダウンロード''~
(1) [[Face Mask Detection Dataset>+https://www.kaggle.com/datasets/andrewmvd/face-mask-detectiona]] のページを開く~
(2)「Download」ボタンを押す~
Kaggleへ登録するか,Google アカウントなどでサインインする~
(3) ダウンロードした「archive.zip」を解凍する~
~
(4)「workspace_pylearn」の下に「p2y_conv」フォルダを作成する~
#codeprettify(){{
(py_learn) PS > cd /anaconda_win/workspace_pylearn/
(py_learn) PS > mkdir p2y_conv
(py_learn) PS > cd p2y_conv
}}
(5) [[P2Y Converter>+https://github.com/rihib/p2y-converter]] サイトから「main.py」をダウンロードし、「p2y_conv」ディレクトリ内に配置する~
(6) (3)で解凍してできた「archive/」フォルダ内の「annotations」「images」を「p2y_conv」ディレクトリ内にコピー(移動)する~
#clear
~
+ ''PascalVOC形式のアノテーションデータ(.xml)を YOLO形式(.txt)にフォーマット変換''~
・ 以下の作業は「p2y_conv/」ディレクトリ内でおこなう~
(1)「main.py」を「p2y.py」としてコピーし環境に対応した変更をる~
#codeprettify(){{
p2y.py(main.py)
:
PPATH = '/anaconda_win/workspace_pylearn/p2y_conv/'
absolutepath_of_directory_with_xmlfiles = PPATH + 'annotations/'
absolutepath_of_directory_with_imgfiles = PPATH + 'images/'
absolutepath_of_directory_with_yolofiles = PPATH + 'format_yolo/'
absolutepath_of_directory_with_classes_txt = PPATH
absolutepath_of_directory_with_error_txt = PPATH + 'error/'
:
}}
(2) 作業用のディレクトリを作成する~
#codeprettify(){{
mkdir format_yolo
mkdir error
}}
#codeprettify(){{
p2y_conv/
├─annotations
├─error
├─format_yolo
├─images
├─main.py
└─p2y.py
}}
(3)「lxml」ライブラリをインストールする~
#codeprettify(){{
(py_learn) PS > pip install lxml
Collecting lxml
Downloading lxml-5.2.1-cp311-cp311-win_amd64.whl.metadata (3.5 kB)
Downloading lxml-5.2.1-cp311-cp311-win_amd64.whl (3.8 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3.8/3.8 MB 11.1 MB/s eta 0:00:00
Installing collected packages: lxml
Successfully installed lxml-5.2.1
}}
(4) フォーマット変換を実行する~
#codeprettify(){{
(py_learn) python p2y.py
libpng warning: iCCP: Not recognizing known sRGB profile that has been edited
}}
+ ''データセットのまとめ''~
(1) データセットのディレクトリを作成する~
・以下のコマンドを実行~
#codeprettify(){{
mkdir -p mask_dataset/images/train
mkdir -p mask_dataset/images/val
mkdir -p mask_dataset/labels/train
mkdir -p mask_dataset/labels/val
}}
・作成結果~
#codeprettify(){{
(py_learn) PS > tree
p2y_conv/
├─annotations
├─error
├─format_yolo
├─images
└─mask_dataset
├─images
│ ├─train
│ └─val
└─labels
├─train
└─val
}}
(2)「mask_dataset」ディレクトリに画像ファイルとラベルファイルを配置する~
検証用(val):学習用(train) がおよそ 8:2 になるようにする~
・検証用はファイル名の末尾が 1 (86個), 5 (85個) のもの計171個を移動~
#codeprettify(){{
move format_yolo/*1.txt mask_dataset/labels/val
move format_yolo/*5.txt mask_dataset/labels/val
move images/*1.png mask_dataset/images/val
move images/*5.png mask_dataset/images/val
}}
・学習用は残りのファイルを移動{853-171 = 682個)~
#codeprettify(){{
move format_yolo/*.txt mask_dataset/labels/train
move images/*.png mask_dataset/images/train
}}
(3)「mask_dataset/」フォルダ内にファイル mask.yaml を作成~
・データセットの配置場所は「yolov5/data/」フォルダとする~
#codeprettify(){{
train: data/mask_dataset/images/train
val: data/mask_dataset/images/val
nc: 3
names:
0: without_mask
1: with_mask
2: mask_weared_incorrect
3: motorcycle
}}
(4)「mask_dataset/」フォルダを「yolov5/data/」内にコピー(移動)する~
*** 学習の実行 [#u8437838]
*** 学習の実行 [#p2ec5663]
+ エポック数 100 で実行する~
・実行ディレクトリは「workspace_pylearn/yolov5/」~
・学習モデルはデフォールト設定「yolov7s」を使用する~
・学習結果フォルダ名は「mask_yolov5s」とする~
#codeprettify(){{
(py_learn) python train.py --epochs 100 --data data/mask_dataset/mask.yaml --weights yolov5s.pt --name mask_yolov5s
}}
・GPU を使用しない場合は以下のコマンドを実行する~
#codeprettify(){{
(py_learn) python train.py --epochs 100 --data data/mask_dataset/mask.yaml --weights yolov5s.pt --name mask_yolov5s --device cpu
}}
+ 学習の終了~
#codeprettify(){{
(py_learn) python train.py --epochs 100 --data data/mask_dataset/mask.yaml --weights yolov5s.pt --name mask_yolov5s
train: weights=yolov5s.pt, cfg=, data=data/mask_dataset/mask.yaml, hyp=data\hyps\hyp.scratch-low.yaml, epochs=100, batch_size=16, imgsz=640, rect=False, resume=False, nosave=False, noval=False, noautoanchor=False, noplots=False, evolve=None, evolve_population=data\hyps, resume_evolve=None, bucket=, cache=None, image_weights=False, device=, multi_scale=False, single_cls=False, optimizer=SGD, sync_bn=False, workers=8, project=runs\train, name=mask_yolov5s, exist_ok=False, quad=False, cos_lr=False, label_smoothing=0.0, patience=100, freeze=[0], save_period=-1, seed=0, local_rank=-1, entity=None, upload_dataset=False, bbox_interval=-1, artifact_alias=latest, ndjson_console=False, ndjson_file=False
github: YOLOv5 is out of date by 3 commits. Use 'git pull' or 'git clone https://github.com/ultralytics/yolov5' to update.
YOLOv5 v7.0-294-gdb125a20 Python-3.11.8 torch-2.2.1+cu121 CUDA:0 (NVIDIA GeForce RTX 4070 Ti, 12282MiB)
hyperparameters: lr0=0.01, lrf=0.01, 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
Comet: run 'pip install comet_ml' to automatically track and visualize YOLOv5 runs in Comet
TensorBoard: Start with 'tensorboard --logdir runs\train', view at http://localhost:6006/
Overriding model.yaml nc=80 with nc=4
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]
:
Starting training for 100 epochs...
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
0/99 3.35G 0.1051 0.06055 0.03577 79 640: 100%|██████████| 43/43 [00:04<00:00, 9.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.69 0.0704 0.0216 0.00536
:
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
99/99 4.41G 0.01885 0.01993 0.001163 75 640: 100%|██████████| 43/43 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.848 0.814 0.86 0.59
100 epochs completed in 0.143 hours.
Optimizer stripped from runs\train\mask_yolov5s\weights\last.pt, 14.4MB
Optimizer stripped from runs\train\mask_yolov5s\weights\best.pt, 14.4MB
Validating runs\train\mask_yolov5s\weights\best.pt...
Fusing layers...
Model summary: 157 layers, 7020913 parameters, 0 gradients, 15.8 GFLOPs
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.859 0.849 0.888 0.609
without_mask 171 122 0.773 0.885 0.899 0.59
with_mask 171 630 0.932 0.931 0.965 0.684
mask_weared_incorrect 171 26 0.872 0.731 0.801 0.554
Results saved to runs\train\mask_yolov5s
}}
#divregion(「train.py」実行ログ詳細)
#codeprettify(){{
(py_learn) python train.py --epochs 100 --data data/mask_dataset/mask.yaml --weights yolov5s.pt --name mask_yolov5s
train: weights=yolov5s.pt, cfg=, data=data/mask_dataset/mask.yaml, hyp=data\hyps\hyp.scratch-low.yaml, epochs=100, batch_size=16, imgsz=640, rect=False, resume=False, nosave=False, noval=False, noautoanchor=False, noplots=False, evolve=None, evolve_population=data\hyps, resume_evolve=None, bucket=, cache=None, image_weights=False, device=, multi_scale=False, single_cls=False, optimizer=SGD, sync_bn=False, workers=8, project=runs\train, name=mask_yolov5s, exist_ok=False, quad=False, cos_lr=False, label_smoothing=0.0, patience=100, freeze=[0], save_period=-1, seed=0, local_rank=-1, entity=None, upload_dataset=False, bbox_interval=-1, artifact_alias=latest, ndjson_console=False, ndjson_file=False
github: YOLOv5 is out of date by 3 commits. Use 'git pull' or 'git clone https://github.com/ultralytics/yolov5' to update.
YOLOv5 v7.0-294-gdb125a20 Python-3.11.8 torch-2.2.1+cu121 CUDA:0 (NVIDIA GeForce RTX 4070 Ti, 12282MiB)
hyperparameters: lr0=0.01, lrf=0.01, 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
Comet: run 'pip install comet_ml' to automatically track and visualize YOLOv5 runs in Comet
TensorBoard: Start with 'tensorboard --logdir runs\train', view at http://localhost:6006/
Overriding model.yaml nc=80 with nc=4
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 24273 models.yolo.Detect [4, [[10, 13, 16, 30, 33, 23], [30, 61, 62, 45, 59, 119], [116, 90, 156, 198, 373, 326]], [128, 256, 512]]
Model summary: 214 layers, 7030417 parameters, 7030417 gradients, 16.0 GFLOPs
Transferred 343/349 items from yolov5s.pt
AMP: checks passed
optimizer: SGD(lr=0.01) with parameter groups 57 weight(decay=0.0), 60 weight(decay=0.0005), 60 bias
train: Scanning C:\anaconda_win\workspace_pylearn\yolov5\data\mask_dataset\labels\train... 682 images, 0 backgrounds, 0
train: WARNING Cache directory C:\anaconda_win\workspace_pylearn\yolov5\data\mask_dataset\labels is not writeable: [WinError 183] : 'C:\\anaconda_win\\workspace_pylearn\\yolov5\\data\\mask_dataset\\labels\\train.cache.npy' -> 'C:\\anaconda_win\\workspace_pylearn\\yolov5\\data\\mask_dataset\\labels\\train.cache'
val: Scanning C:\anaconda_win\workspace_pylearn\yolov5\data\mask_dataset\labels\val... 171 images, 0 backgrounds, 0 cor
val: WARNING Cache directory C:\anaconda_win\workspace_pylearn\yolov5\data\mask_dataset\labels is not writeable: [WinError 183] : 'C:\\anaconda_win\\workspace_pylearn\\yolov5\\data\\mask_dataset\\labels\\val.cache.npy' -> 'C:\\anaconda_win\\workspace_pylearn\\yolov5\\data\\mask_dataset\\labels\\val.cache'
AutoAnchor: 5.55 anchors/target, 0.999 Best Possible Recall (BPR). Current anchors are a good fit to dataset
Plotting labels to runs\train\mask_yolov5s\labels.jpg...
Image sizes 640 train, 640 val
Using 8 dataloader workers
Logging results to runs\train\mask_yolov5s
Starting training for 100 epochs...
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
0/99 3.35G 0.1051 0.06055 0.03577 79 640: 100%|██████████| 43/43 [00:04<00:00, 9.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.69 0.0704 0.0216 0.00536
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
1/99 4.41G 0.08192 0.04846 0.02121 67 640: 100%|██████████| 43/43 [00:03<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.769 0.19 0.0995 0.032
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
2/99 4.41G 0.07935 0.04207 0.01834 83 640: 100%|██████████| 43/43 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.769 0.183 0.112 0.0377
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
3/99 4.41G 0.07218 0.03915 0.01724 60 640: 100%|██████████| 43/43 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.544 0.416 0.283 0.0952
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
4/99 4.41G 0.06119 0.03696 0.0145 89 640: 100%|██████████| 43/43 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.565 0.475 0.338 0.122
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
5/99 4.41G 0.05579 0.03693 0.01203 90 640: 100%|██████████| 43/43 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.682 0.447 0.396 0.176
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
6/99 4.41G 0.05158 0.03469 0.01042 68 640: 100%|██████████| 43/43 [00:03<00:00, 10.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.761 0.496 0.48 0.234
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
7/99 4.41G 0.04887 0.03386 0.009272 68 640: 100%|██████████| 43/43 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.753 0.509 0.474 0.211
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
8/99 4.41G 0.04631 0.03263 0.00888 207 640: 100%|██████████| 43/43 [00:03<00:00, 10.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.905 0.503 0.564 0.273
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
9/99 4.41G 0.04507 0.03335 0.008373 78 640: 100%|██████████| 43/43 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.929 0.554 0.613 0.358
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
10/99 4.41G 0.04216 0.0299 0.00798 142 640: 100%|██████████| 43/43 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.901 0.542 0.597 0.285
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
11/99 4.41G 0.04115 0.0307 0.008121 72 640: 100%|██████████| 43/43 [00:03<00:00, 10.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.886 0.553 0.607 0.322
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
12/99 4.41G 0.04034 0.03206 0.007108 119 640: 100%|██████████| 43/43 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.905 0.557 0.609 0.324
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
13/99 4.41G 0.03864 0.0303 0.007133 91 640: 100%|██████████| 43/43 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.923 0.548 0.61 0.341
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
14/99 4.41G 0.03765 0.03079 0.006593 91 640: 100%|██████████| 43/43 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:00<0
all 171 778 0.912 0.56 0.618 0.314
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
15/99 4.41G 0.03754 0.03185 0.006909 109 640: 100%|██████████| 43/43 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.896 0.567 0.607 0.33
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
16/99 4.41G 0.03702 0.03072 0.006434 115 640: 100%|██████████| 43/43 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.935 0.573 0.629 0.374
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
17/99 4.41G 0.03657 0.02973 0.006558 68 640: 100%|██████████| 43/43 [00:03<00:00, 10.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.929 0.578 0.644 0.395
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
18/99 4.41G 0.03636 0.03259 0.006621 164 640: 100%|██████████| 43/43 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.926 0.558 0.638 0.381
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
19/99 4.41G 0.03474 0.02924 0.006014 73 640: 100%|██████████| 43/43 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.925 0.568 0.663 0.404
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
20/99 4.41G 0.03353 0.03008 0.005776 48 640: 100%|██████████| 43/43 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.939 0.546 0.638 0.4
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
21/99 4.41G 0.03369 0.02975 0.006082 131 640: 100%|██████████| 43/43 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.943 0.563 0.656 0.4
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
22/99 4.41G 0.03419 0.02884 0.005488 59 640: 100%|██████████| 43/43 [00:03<00:00, 10.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.934 0.553 0.668 0.417
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
23/99 4.41G 0.03338 0.02761 0.005553 44 640: 100%|██████████| 43/43 [00:03<00:00, 10.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.952 0.567 0.675 0.407
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
24/99 4.41G 0.03331 0.02906 0.005624 104 640: 100%|██████████| 43/43 [00:03<00:00, 10.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.94 0.571 0.672 0.415
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
25/99 4.41G 0.03239 0.02725 0.005505 79 640: 100%|██████████| 43/43 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.948 0.573 0.702 0.44
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
26/99 4.41G 0.03184 0.02699 0.005355 95 640: 100%|██████████| 43/43 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.818 0.642 0.676 0.401
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
27/99 4.41G 0.03124 0.02666 0.005242 42 640: 100%|██████████| 43/43 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.675 0.647 0.695 0.431
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
28/99 4.41G 0.0308 0.02896 0.005306 85 640: 100%|██████████| 43/43 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.659 0.662 0.687 0.437
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
29/99 4.41G 0.03131 0.02665 0.005278 49 640: 100%|██████████| 43/43 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.885 0.634 0.688 0.44
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
30/99 4.41G 0.0304 0.02694 0.004846 66 640: 100%|██████████| 43/43 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.616 0.682 0.688 0.444
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
31/99 4.41G 0.02945 0.02757 0.004831 51 640: 100%|██████████| 43/43 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.763 0.675 0.676 0.405
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
32/99 4.41G 0.02965 0.02752 0.00461 130 640: 100%|██████████| 43/43 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.762 0.733 0.762 0.497
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
33/99 4.41G 0.02996 0.02561 0.004403 75 640: 100%|██████████| 43/43 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.838 0.716 0.763 0.489
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
34/99 4.41G 0.02936 0.02624 0.003965 107 640: 100%|██████████| 43/43 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.766 0.745 0.775 0.501
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
35/99 4.41G 0.02946 0.02683 0.004163 53 640: 100%|██████████| 43/43 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.731 0.735 0.772 0.494
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
36/99 4.41G 0.02868 0.02562 0.003824 51 640: 100%|██████████| 43/43 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.74 0.751 0.761 0.471
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
37/99 4.41G 0.02841 0.02709 0.003661 91 640: 100%|██████████| 43/43 [00:03<00:00, 10.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.909 0.683 0.759 0.491
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
38/99 4.41G 0.02946 0.02841 0.00366 92 640: 100%|██████████| 43/43 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.768 0.764 0.798 0.518
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
39/99 4.41G 0.02856 0.02682 0.003546 77 640: 100%|██████████| 43/43 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.809 0.717 0.779 0.504
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
40/99 4.41G 0.02754 0.0259 0.003536 48 640: 100%|██████████| 43/43 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.829 0.774 0.818 0.523
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
41/99 4.41G 0.02746 0.02545 0.003263 75 640: 100%|██████████| 43/43 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.795 0.784 0.814 0.522
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
42/99 4.41G 0.02789 0.02589 0.00354 80 640: 100%|██████████| 43/43 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.866 0.734 0.805 0.519
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
43/99 4.41G 0.02785 0.02654 0.003272 65 640: 100%|██████████| 43/43 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.765 0.77 0.797 0.515
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
44/99 4.41G 0.02648 0.02617 0.003113 60 640: 100%|██████████| 43/43 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.882 0.791 0.85 0.55
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
45/99 4.41G 0.02703 0.02565 0.003004 78 640: 100%|██████████| 43/43 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.872 0.769 0.848 0.54
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
46/99 4.41G 0.02704 0.02547 0.002782 75 640: 100%|██████████| 43/43 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.836 0.78 0.823 0.528
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
47/99 4.41G 0.0269 0.02641 0.002753 90 640: 100%|██████████| 43/43 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.836 0.767 0.805 0.523
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
48/99 4.41G 0.02615 0.02451 0.002561 88 640: 100%|██████████| 43/43 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.827 0.79 0.837 0.551
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
49/99 4.41G 0.0259 0.02599 0.002557 69 640: 100%|██████████| 43/43 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.84 0.793 0.85 0.565
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
50/99 4.41G 0.0261 0.02376 0.002365 121 640: 100%|██████████| 43/43 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.846 0.794 0.84 0.548
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
51/99 4.41G 0.02553 0.0248 0.002372 78 640: 100%|██████████| 43/43 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.852 0.794 0.855 0.57
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
52/99 4.41G 0.02561 0.02417 0.002499 63 640: 100%|██████████| 43/43 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.875 0.789 0.865 0.562
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
53/99 4.41G 0.02539 0.025 0.002371 74 640: 100%|██████████| 43/43 [00:03<00:00, 10.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.872 0.771 0.84 0.564
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
54/99 4.41G 0.02514 0.02344 0.002231 136 640: 100%|██████████| 43/43 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.87 0.754 0.844 0.559
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
55/99 4.41G 0.02519 0.02457 0.002228 63 640: 100%|██████████| 43/43 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.884 0.781 0.843 0.564
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
56/99 4.41G 0.0242 0.02459 0.00215 67 640: 100%|██████████| 43/43 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.852 0.796 0.854 0.56
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
57/99 4.41G 0.02431 0.02375 0.001989 98 640: 100%|██████████| 43/43 [00:03<00:00, 10.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.84 0.802 0.854 0.581
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
58/99 4.41G 0.02462 0.02456 0.001973 74 640: 100%|██████████| 43/43 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.876 0.809 0.871 0.583
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
59/99 4.41G 0.02505 0.02474 0.001895 92 640: 100%|██████████| 43/43 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.911 0.789 0.87 0.576
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
60/99 4.41G 0.02398 0.0228 0.002016 48 640: 100%|██████████| 43/43 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.842 0.788 0.85 0.581
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
61/99 4.41G 0.02351 0.02405 0.00177 54 640: 100%|██████████| 43/43 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.938 0.803 0.871 0.592
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
62/99 4.41G 0.02383 0.02467 0.00173 112 640: 100%|██████████| 43/43 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.911 0.773 0.851 0.581
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
63/99 4.41G 0.02386 0.024 0.001924 99 640: 100%|██████████| 43/43 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.877 0.825 0.872 0.579
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
64/99 4.41G 0.02275 0.02339 0.001726 62 640: 100%|██████████| 43/43 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.895 0.804 0.865 0.587
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
65/99 4.41G 0.02288 0.02347 0.001597 111 640: 100%|██████████| 43/43 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.859 0.849 0.888 0.607
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
66/99 4.41G 0.02258 0.0216 0.001675 52 640: 100%|██████████| 43/43 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.873 0.829 0.876 0.589
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
67/99 4.41G 0.02268 0.0237 0.001742 82 640: 100%|██████████| 43/43 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.857 0.875 0.876 0.587
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
68/99 4.41G 0.02201 0.02348 0.001615 113 640: 100%|██████████| 43/43 [00:03<00:00, 10.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.831 0.85 0.858 0.573
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
69/99 4.41G 0.02263 0.02294 0.001527 60 640: 100%|██████████| 43/43 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.875 0.78 0.846 0.562
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
70/99 4.41G 0.02162 0.0219 0.001599 53 640: 100%|██████████| 43/43 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.88 0.816 0.874 0.599
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
71/99 4.41G 0.02186 0.02351 0.001494 70 640: 100%|██████████| 43/43 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.873 0.812 0.855 0.582
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
72/99 4.41G 0.02196 0.02211 0.001572 77 640: 100%|██████████| 43/43 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.88 0.773 0.85 0.58
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
73/99 4.41G 0.02145 0.02341 0.001484 95 640: 100%|██████████| 43/43 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.88 0.807 0.854 0.576
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
74/99 4.41G 0.02171 0.02345 0.001453 66 640: 100%|██████████| 43/43 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.845 0.836 0.862 0.581
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
75/99 4.41G 0.02128 0.02272 0.001519 67 640: 100%|██████████| 43/43 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.864 0.821 0.867 0.584
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
76/99 4.41G 0.02094 0.02281 0.001223 40 640: 100%|██████████| 43/43 [00:03<00:00, 10.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.845 0.833 0.868 0.593
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
77/99 4.41G 0.02102 0.02174 0.00133 102 640: 100%|██████████| 43/43 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.848 0.834 0.87 0.59
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
78/99 4.41G 0.02105 0.02172 0.001171 59 640: 100%|██████████| 43/43 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.886 0.814 0.867 0.594
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
79/99 4.41G 0.02107 0.02259 0.001177 106 640: 100%|██████████| 43/43 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.93 0.801 0.871 0.594
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
80/99 4.41G 0.02067 0.02213 0.001498 161 640: 100%|██████████| 43/43 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.843 0.816 0.861 0.592
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
81/99 4.41G 0.02095 0.02207 0.00136 55 640: 100%|██████████| 43/43 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.883 0.815 0.862 0.586
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
82/99 4.41G 0.02013 0.02178 0.001258 84 640: 100%|██████████| 43/43 [00:03<00:00, 10.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.866 0.834 0.861 0.595
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
83/99 4.41G 0.02068 0.02235 0.001233 103 640: 100%|██████████| 43/43 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.81 0.859 0.859 0.59
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
84/99 4.41G 0.01991 0.02144 0.00116 88 640: 100%|██████████| 43/43 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.909 0.781 0.86 0.597
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
85/99 4.41G 0.01994 0.02198 0.001115 71 640: 100%|██████████| 43/43 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.883 0.813 0.853 0.575
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
86/99 4.41G 0.01994 0.02229 0.001158 46 640: 100%|██████████| 43/43 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.888 0.823 0.851 0.581
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
87/99 4.41G 0.02001 0.02167 0.001083 45 640: 100%|██████████| 43/43 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.866 0.809 0.849 0.586
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
88/99 4.41G 0.01939 0.02168 0.0009812 77 640: 100%|██████████| 43/43 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.855 0.813 0.856 0.585
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
89/99 4.41G 0.01946 0.02135 0.001199 51 640: 100%|██████████| 43/43 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.859 0.825 0.861 0.589
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
90/99 4.41G 0.01931 0.02054 0.001064 85 640: 100%|██████████| 43/43 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.885 0.803 0.869 0.585
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
91/99 4.41G 0.01965 0.02123 0.0009763 106 640: 100%|██████████| 43/43 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.891 0.805 0.869 0.586
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
92/99 4.41G 0.0197 0.02175 0.001261 83 640: 100%|██████████| 43/43 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.862 0.808 0.871 0.598
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
93/99 4.41G 0.01915 0.02116 0.0009928 105 640: 100%|██████████| 43/43 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.906 0.765 0.861 0.592
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
94/99 4.41G 0.01909 0.02033 0.0009784 105 640: 100%|██████████| 43/43 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.859 0.801 0.858 0.59
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
95/99 4.41G 0.01901 0.02131 0.0009813 70 640: 100%|██████████| 43/43 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.831 0.831 0.859 0.586
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
96/99 4.41G 0.01892 0.02219 0.0009219 105 640: 100%|██████████| 43/43 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.921 0.781 0.865 0.593
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
97/99 4.41G 0.01874 0.02093 0.0008694 54 640: 100%|██████████| 43/43 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.855 0.812 0.862 0.592
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
98/99 4.41G 0.01946 0.02096 0.001002 101 640: 100%|██████████| 43/43 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.872 0.8 0.864 0.592
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
99/99 4.41G 0.01885 0.01993 0.001163 75 640: 100%|██████████| 43/43 [00:03<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.848 0.814 0.86 0.59
100 epochs completed in 0.143 hours.
Optimizer stripped from runs\train\mask_yolov5s\weights\last.pt, 14.4MB
Optimizer stripped from runs\train\mask_yolov5s\weights\best.pt, 14.4MB
Validating runs\train\mask_yolov5s\weights\best.pt...
Fusing layers...
Model summary: 157 layers, 7020913 parameters, 0 gradients, 15.8 GFLOPs
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 6/6 [00:01<0
all 171 778 0.859 0.849 0.888 0.609
without_mask 171 122 0.773 0.885 0.899 0.59
with_mask 171 630 0.932 0.931 0.965 0.684
mask_weared_incorrect 171 26 0.872 0.731 0.801 0.554
Results saved to runs\train\mask_yolov5s
}}
#enddivregion
~
+ メッセージの最後「Results saved to runs\train\mask_yolov5s」を確認~
・学習結果モデルは「runs/train/mask_yolov5s/weights」評価指標は「runs/train/mask_yolov5s/」~
|CENTER:F1 curve|CENTER:P curve|CENTER:PR curve|CENTER:R curve|h
|#ref(mask_F1_curve_m.jpg,left,around,15%,F1_curve_m.jpg)|#ref(mask_P_curve_m.jpg,left,around,15%,P_curve_m.jpg)|#ref(mask_PR_curve_m.jpg,left,around,15%,PR_curve_m.jpg)|#ref(mask_R_curve_m.jpg,left,around,15%,R_curve_m.jpg)|
#ref(mask_results_m.jpg,left,around,40%,resuls_m.jpg)
#ref(mask_confusion_matrix_m.jpg,left,around,25%,confusion_matrix_m.jpg)
#clear
#ref(mask_labels_correlogram_m.jpg,left,around,15%,labels_correlogram.jpg)
#ref(mask_labels_m.jpg,left,around,15%,labels.jpg)
#ref(mask_train_batch0_m.jpg,left,around,10%,train_batch0.jpg)
#ref(mask_train_batch1_m.jpg,left,around,10%,train_batch1.jpg)
#ref(mask_train_batch2_m.jpg,left,around,10%,train_batch2.jpg)
#clear
#ref(mask_val_batch0_labels_m.jpg,left,around,10%,val_batch0_labels.jpg)
#ref(mask_val_batch0_pred_m.jpg,left,around,10%,val_batch0_pred.jpg)
#ref(mask_val_batch1_labels_m.jpg,left,around,10%,val_batch1_labels.jpg)
#ref(mask_val_batch1_pred_m.jpg,left,around,10%,val_batch1_pred.jpg)
#ref(mask_val_batch2_labels_m.jpg,left,around,10%,val_batch2_labels.jpg)
#ref(mask_val_batch2_pred_m.jpg,left,around,10%,val_batch2_pred.jpg)
#clear
*** 実行結果を使って推論 [#xf9cb2fb]
*** 実行結果を使って推論 [#a170ebb8]
+「detect2.py」で推論実行(静止画)~
・学習結果モデルを指定する~
#codeprettify(){{
(py_learn) python detect2.py --weights ./runs/train/mask_yolov5s/weights/best.pt --source ../../Images/mask-test.jpg --view-img
}}
#ref(mask-test_s.jpg,right,around,30%,mask-test_s.jpg)
・実行ログ(結果は「runs/detect/exp*」*は順次更新)~
#codeprettify(){{
(py_learn) python detect2.py --weights ./runs/train/mask_yolov5s/weights/best.pt --source ../../Images/mask-test.jpg --view-img
detect2: weights=['./runs/train/mask_yolov5s/weights/best.pt'], source=../../Images/mask-test.jpg, data=data\coco128.yaml, imgsz=[640, 640], conf_thres=0.25, iou_thres=0.45, max_det=1000, device=, view_img=True, save_txt=False, save_csv=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, vid_stride=1
YOLOv5 v7.0-294-gdb125a20 Python-3.11.8 torch-2.2.1+cu121 CUDA:0 (NVIDIA GeForce RTX 4070 Ti, 12282MiB)
Fusing layers...
Model summary: 157 layers, 7020913 parameters, 0 gradients, 15.8 GFLOPs
Speed: 1.0ms pre-process, 49.2ms inference, 42.0ms NMS per image at shape (1, 3, 640, 640)
Results saved to runs\detect\exp10
}}
+「detect2.py」で推論実行(動画)~
・学習結果モデルを指定する~
#codeprettify(){{
(py_learn) python detect2.py --weights ./runs/train/mask_yolov5s/weights/best.pt --source ../../Videos/mask.mov --view-img
}}
#ref(mask.gif,right,around,60%,mask.gif)
・実行ログ(結果は「runs/detect/exp*」*は順次更新)~
#codeprettify(){{
(py_learn) python detect2.py --weights ./runs/train/mask_yolov5s/weights/best.pt --source ../../Videos/mask.mov --view-img
detect2: weights=['./runs/train/mask_yolov5s/weights/best.pt'], source=../../Videos/mask.mov, data=data\coco128.yaml, imgsz=[640, 640], conf_thres=0.25, iou_thres=0.45, max_det=1000, device=, view_img=True, save_txt=False, save_csv=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, vid_stride=1
YOLOv5 v7.0-294-gdb125a20 Python-3.11.8 torch-2.2.1+cu121 CUDA:0 (NVIDIA GeForce RTX 4070 Ti, 12282MiB)
Fusing layers...
Model summary: 157 layers, 7020913 parameters, 0 gradients, 15.8 GFLOPs
Speed: 0.6ms pre-process, 6.4ms inference, 1.0ms NMS per image at shape (1, 3, 640, 640)
Results saved to runs\detect\exp12
}}
+「detect2.py」その他の実行例~
#codeprettify(){{
(py_learn) python detect2.py --weights ./runs/train/mask_yolov5s/weights/best.pt --source ../../Images/mask.jpg --view-img
(py_learn) python detect2.py --weights ./runs/train/mask_yolov5s/weights/best.pt --source ../../Videos/mask2.mp4 --view-img
(py_learn) python detect2.py --weights ./runs/train/mask_yolov5s/weights/best.pt --source ../../Videos/mask-test.mp4 --view-img
}}
#ref(mask_s.jpg,left,around,15%,mask_s.jpg)
#ref(mask2.gif,left,around,60%,mask2.gif)
#ref(mask-test.gif,left,around,60%,mask-test.gif)
#clear
*** 実行結果を使って推論(日本語表示) [#i02f72e7]
*** 実行結果を使って推論(日本語表示) [#sf395b7b]
+ ラベルファイルを作成する~
・「ts_names_jp」日本語(「coco.names_jp」をコピーし編集)~
#codeprettify(){{
マスクなし
マスクあり
マスク着用 _不正確
}}
・「ts_names」英語(「coco.names」をコピーし編集)~
#codeprettify(){{
without_mask
with_mask
mask_weared_incorrect
}}
+「detect2_yolov5.py」で推論実行(静止画)~
・学習結果モデルを指定する~
#codeprettify(){{
(py_learn) python detect2_yolov5.py -m ./runs/train/mask_yolov5s/weights/best.pt -i ../../Images/mask-test.jpg -l mask_names_jp
}}
#ref(mask-test_jp_s.jpg,right,around,30%,mask-test_jp_s.jpg)
・実行ログ~
#codeprettify(){{
(py_learn) python detect2_yolov5.py -m ./runs/train/mask_yolov5s/weights/best.pt -i ../../Images/mask-test.jpg -l mask_names_jp
Object detection YoloV5 in PyTorch Ver. 0.02: Starting application...
OpenCV virsion : 4.9.0
- Image File : ../../Images/mask-test.jpg
- YOLO v5 : ultralytics/yolov5
- Pretrained : ./runs/train/mask_yolov5s/weights/best.pt
- Label file : mask_names_jp
- Program Title: y
- Speed flag : y
- Processed out: non
- Use device : cuda:0
Using cache found in C:\Users\izuts/.cache\torch\hub\ultralytics_yolov5_master
YOLOv5 2024-4-9 Python-3.11.8 torch-2.2.1+cu121 CUDA:0 (NVIDIA GeForce RTX 4070 Ti, 12282MiB)
Fusing layers...
Model summary: 157 layers, 7020913 parameters, 0 gradients, 15.8 GFLOPs
Adding AutoShape...
FPS average: 9.00
Finished.
}}
+「detect2_yolov5.py」で推論実行(動画)~
・学習結果モデルを指定する~
#codeprettify(){{
(py_learn) python detect2_yolov5.py -m ./runs/train/mask_yolov5s/weights/best.pt -i ../../Videos/mask.mov -l mask_names_jp
}}
#ref(mask_jp.gif,right,around,60%,mask_jp.gif)
・実行ログ~
#codeprettify(){{
(py_learn) python detect2_yolov5.py -m ./runs/train/mask_yolov5s/weights/best.pt -i ../../Videos/mask.mov -l mask_names_jp
Object detection YoloV5 in PyTorch Ver. 0.02: Starting application...
OpenCV virsion : 4.9.0
- Image File : ../../Videos/mask.mov
- YOLO v5 : ultralytics/yolov5
- Pretrained : ./runs/train/mask_yolov5s/weights/best.pt
- Label file : mask_names_jp
- Program Title: y
- Speed flag : y
- Processed out: non
- Use device : cuda:0
Using cache found in C:\Users\izuts/.cache\torch\hub\ultralytics_yolov5_master
YOLOv5 2024-4-9 Python-3.11.8 torch-2.2.1+cu121 CUDA:0 (NVIDIA GeForce RTX 4070 Ti, 12282MiB)
Fusing layers...
Model summary: 157 layers, 7020913 parameters, 0 gradients, 15.8 GFLOPs
Adding AutoShape...
FPS average: 45.70
Finished.
}}
+「detect2_yolov5.py」その他の実行例~
#codeprettify(){{
(py_learn) python detect2.py --weights ./runs/train/mask_yolov5s/weights/best.pt --source ../../Images/mask.jpg --view-img
(py_learn) python detect2.py --weights ./runs/train/mask_yolov5s/weights/best.pt --source ../../Videos/mask2.mp4 --view-img
(py_learn) python detect2.py --weights ./runs/train/mask_yolov5s/weights/best.pt --source ../../Videos/mask-test.mp4 --view-img
(py_learn) python detect2_yolov5.py -m ./runs/train/mask_yolov5s/weights/best.pt -i ../../Images/mask.jpg -l mask_names_jp
(py_learn) python detect2_yolov5.py -m ./runs/train/mask_yolov5s/weights/best.pt -i ../../Videos/mask2.mp4 -l mask_names_jp
(py_learn) python detect2_yolov5.py -m ./runs/train/mask_yolov5s/weights/best.pt -i ../../Videos/mask-test.mp4 -l mask_names_jp
}}
#ref(mask_jp_s.jpg,left,around,25%,mask_jp_s.jpg)
#ref(mask2_jp.gif,left,around,60%,mask2_jp.gif)
#ref(mask-test_jp.gif,left,around,60%,mask-test_jp.gif)
#clear
#br
** カスタムセットによる学習「じゃんけんの判定」 [#acd4f4b0]
** カスタムセットによる学習「じゃんけんの判定」 [#x9f8cc93]
#ref(yolov5_train04_m.jpg,right,around,15%,yolov5_train04_m.jpg)
- 以前に [[カスタムデータによる学習4「じゃんけんの判定(その3)」>+https://izutsu.aa0.netvolante.jp/pukiwiki/?YOLOv7_Colab5]] で作成した自前のデータセットを使用する~
- 「YOLOv7」用に作成したものはそのまま利用可能~
*** 前準備 [#wb6f5c5d]
*** 前準備 [#yd6b79cd]
+ ''データセットの配置''~
「janken4_dataset/」フォルダを「yolov5/data/」内にコピー(移動)する~
*** 学習の実行 [#p8d2f8f1]
*** 学習の実行 [#a31548f0]
+ エポック数 100 で実行する~
・実行ディレクトリは「workspace_pylearn/yolov5/」~
・学習モデルはデフォールト設定「yolov7s」を使用する~
・学習結果フォルダ名は「janken4_yolov5s」とする~
#codeprettify(){{
(py_learn) python train.py --epochs 100 --data data/janken4_dataset/janken4_dataset.yaml --weights yolov5s.pt --name janken4_yolov5s
}}
・GPU を使用しない場合は以下のコマンドを実行する~
#codeprettify(){{
(py_learn) python train.py --epochs 100 --data data/janken4_dataset/janken4_dataset.yaml --weights yolov5s.pt --name janken4_yolov5s --device cpu
}}
+ 学習の終了~
#codeprettify(){{
(py_learn) python train.py --epochs 100 --data data/mask_dataset/mask.yaml --weights yolov5s.pt --name mask_yolov5s --device cpu
}}
+ 学習の終了~
#codeprettify(){{
(py_learn) python train.py --epochs 100 --data data/janken4_dataset/janken4_dataset.yaml --weights yolov5s.pt --name janken4_yolov5s
train: weights=yolov5s.pt, cfg=, data=data/janken4_dataset/janken4_dataset.yaml, hyp=data\hyps\hyp.scratch-low.yaml, epochs=100, batch_size=16, imgsz=640, rect=False, resume=False, nosave=False, noval=False, noautoanchor=False, noplots=False, evolve=None, evolve_population=data\hyps, resume_evolve=None, bucket=, cache=None, image_weights=False, device=, multi_scale=False, single_cls=False, optimizer=SGD, sync_bn=False, workers=8, project=runs\train, name=janken4_yolov5s, exist_ok=False, quad=False, cos_lr=False, label_smoothing=0.0, patience=100, freeze=[0], save_period=-1, seed=0, local_rank=-1, entity=None, upload_dataset=False, bbox_interval=-1, artifact_alias=latest, ndjson_console=False, ndjson_file=False
github: YOLOv5 is out of date by 3 commits. Use 'git pull' or 'git clone https://github.com/ultralytics/yolov5' to update.
YOLOv5 v7.0-294-gdb125a20 Python-3.11.8 torch-2.2.1+cu121 CUDA:0 (NVIDIA GeForce RTX 4070 Ti, 12282MiB)
hyperparameters: lr0=0.01, lrf=0.01, 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
Comet: run 'pip install comet_ml' to automatically track and visualize YOLOv5 runs in Comet
TensorBoard: Start with 'tensorboard --logdir runs\train', view at http://localhost:6006/
Overriding model.yaml nc=80 with nc=3
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]
:
Starting training for 100 epochs...
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
0/99 3.35G 0.08231 0.02932 0.03379 37 640: 100%|██████████| 30/30 [00:03<00:00, 9.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.00334 0.992 0.0603 0.0182
:
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
99/99 3.98G 0.01874 0.009725 0.00775 38 640: 100%|██████████| 30/30 [00:02<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.993 0.992 0.995 0.787
100 epochs completed in 0.093 hours.
Optimizer stripped from runs\train\janken4_yolov5s\weights\last.pt, 14.4MB
Optimizer stripped from runs\train\janken4_yolov5s\weights\best.pt, 14.4MB
Validating runs\train\janken4_yolov5s\weights\best.pt...
Fusing layers...
Model summary: 157 layers, 7018216 parameters, 0 gradients, 15.8 GFLOPs
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.993 0.992 0.995 0.788
goo 120 40 0.984 1 0.995 0.754
choki 120 40 1 0.977 0.995 0.755
par 120 40 0.994 1 0.995 0.855
Results saved to runs\train\janken4_yolov5s
}}
#divregion(「train.py」実行ログ詳細)
#codeprettify(){{
(py_learn) python train.py --epochs 100 --data data/janken4_dataset/janken4_dataset.yaml --weights yolov5s.pt --name janken4_yolov5s
train: weights=yolov5s.pt, cfg=, data=data/janken4_dataset/janken4_dataset.yaml, hyp=data\hyps\hyp.scratch-low.yaml, epochs=100, batch_size=16, imgsz=640, rect=False, resume=False, nosave=False, noval=False, noautoanchor=False, noplots=False, evolve=None, evolve_population=data\hyps, resume_evolve=None, bucket=, cache=None, image_weights=False, device=, multi_scale=False, single_cls=False, optimizer=SGD, sync_bn=False, workers=8, project=runs\train, name=janken4_yolov5s, exist_ok=False, quad=False, cos_lr=False, label_smoothing=0.0, patience=100, freeze=[0], save_period=-1, seed=0, local_rank=-1, entity=None, upload_dataset=False, bbox_interval=-1, artifact_alias=latest, ndjson_console=False, ndjson_file=False
github: YOLOv5 is out of date by 3 commits. Use 'git pull' or 'git clone https://github.com/ultralytics/yolov5' to update.
YOLOv5 v7.0-294-gdb125a20 Python-3.11.8 torch-2.2.1+cu121 CUDA:0 (NVIDIA GeForce RTX 4070 Ti, 12282MiB)
hyperparameters: lr0=0.01, lrf=0.01, 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
Comet: run 'pip install comet_ml' to automatically track and visualize YOLOv5 runs in Comet
TensorBoard: Start with 'tensorboard --logdir runs\train', view at http://localhost:6006/
Overriding model.yaml nc=80 with nc=3
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 21576 models.yolo.Detect [3, [[10, 13, 16, 30, 33, 23], [30, 61, 62, 45, 59, 119], [116, 90, 156, 198, 373, 326]], [128, 256, 512]]
Model summary: 214 layers, 7027720 parameters, 7027720 gradients, 16.0 GFLOPs
Transferred 343/349 items from yolov5s.pt
AMP: checks passed
optimizer: SGD(lr=0.01) with parameter groups 57 weight(decay=0.0), 60 weight(decay=0.0005), 60 bias
train: Scanning C:\anaconda_win\workspace_pylearn\yolov5\data\janken4_dataset\train\labels... 480 images, 0 backgrounds
train: New cache created: C:\anaconda_win\workspace_pylearn\yolov5\data\janken4_dataset\train\labels.cache
val: Scanning C:\anaconda_win\workspace_pylearn\yolov5\data\janken4_dataset\valid\labels... 120 images, 0 backgrounds,
val: New cache created: C:\anaconda_win\workspace_pylearn\yolov5\data\janken4_dataset\valid\labels.cache
AutoAnchor: 3.12 anchors/target, 1.000 Best Possible Recall (BPR). Current anchors are a good fit to dataset
Plotting labels to runs\train\janken4_yolov5s\labels.jpg...
Image sizes 640 train, 640 val
Using 8 dataloader workers
Logging results to runs\train\janken4_yolov5s
Starting training for 100 epochs...
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
0/99 3.35G 0.08231 0.02932 0.03379 37 640: 100%|██████████| 30/30 [00:03<00:00, 9.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.00334 0.992 0.0603 0.0182
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
1/99 3.98G 0.0572 0.02576 0.03066 39 640: 100%|██████████| 30/30 [00:02<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.183 0.392 0.2 0.0732
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
2/99 3.98G 0.04957 0.02153 0.02791 45 640: 100%|██████████| 30/30 [00:02<00:00, 13.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.164 0.358 0.145 0.0422
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
3/99 3.98G 0.0485 0.02054 0.02889 37 640: 100%|██████████| 30/30 [00:02<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.364 0.433 0.401 0.136
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
4/99 3.98G 0.04405 0.01775 0.02909 37 640: 100%|██████████| 30/30 [00:02<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.244 0.56 0.344 0.121
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
5/99 3.98G 0.04293 0.01668 0.02636 33 640: 100%|██████████| 30/30 [00:02<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.301 0.675 0.393 0.2
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
6/99 3.98G 0.04271 0.01557 0.02331 42 640: 100%|██████████| 30/30 [00:02<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.398 0.786 0.629 0.245
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
7/99 3.98G 0.03947 0.01544 0.01986 38 640: 100%|██████████| 30/30 [00:02<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.427 0.85 0.631 0.355
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
8/99 3.98G 0.03792 0.01511 0.02048 35 640: 100%|██████████| 30/30 [00:02<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.495 0.825 0.698 0.353
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
9/99 3.98G 0.03979 0.01469 0.02054 42 640: 100%|██████████| 30/30 [00:02<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.579 0.93 0.802 0.442
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
10/99 3.98G 0.03555 0.01413 0.0197 35 640: 100%|██████████| 30/30 [00:02<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.669 0.775 0.806 0.458
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
11/99 3.98G 0.033 0.01385 0.0217 45 640: 100%|██████████| 30/30 [00:02<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.705 0.594 0.721 0.365
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
12/99 3.98G 0.03321 0.01327 0.01911 35 640: 100%|██████████| 30/30 [00:02<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.69 0.739 0.799 0.421
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
13/99 3.98G 0.03502 0.01387 0.02147 43 640: 100%|██████████| 30/30 [00:02<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.833 0.875 0.917 0.531
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
14/99 3.98G 0.02933 0.01338 0.01939 46 640: 100%|██████████| 30/30 [00:02<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.893 0.848 0.957 0.617
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
15/99 3.98G 0.0358 0.01393 0.01933 38 640: 100%|██████████| 30/30 [00:02<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.954 0.953 0.979 0.604
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
16/99 3.98G 0.03375 0.01295 0.01561 41 640: 100%|██████████| 30/30 [00:02<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.855 0.913 0.911 0.523
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
17/99 3.98G 0.03741 0.01303 0.01721 41 640: 100%|██████████| 30/30 [00:02<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.911 0.928 0.988 0.602
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
18/99 3.98G 0.0341 0.01311 0.01504 36 640: 100%|██████████| 30/30 [00:02<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.979 0.958 0.986 0.605
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
19/99 3.98G 0.0325 0.01296 0.01394 44 640: 100%|██████████| 30/30 [00:02<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.838 0.948 0.931 0.567
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
20/99 3.98G 0.03098 0.01276 0.01328 38 640: 100%|██████████| 30/30 [00:02<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.784 0.636 0.723 0.397
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
21/99 3.98G 0.02741 0.01282 0.0139 33 640: 100%|██████████| 30/30 [00:02<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.807 0.867 0.925 0.55
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
22/99 3.98G 0.0297 0.0124 0.01551 42 640: 100%|██████████| 30/30 [00:02<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.965 0.975 0.993 0.709
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
23/99 3.98G 0.03286 0.01236 0.01528 36 640: 100%|██████████| 30/30 [00:02<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.881 0.951 0.973 0.648
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
24/99 3.98G 0.0304 0.01237 0.01601 36 640: 100%|██████████| 30/30 [00:02<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.706 0.599 0.627 0.219
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
25/99 3.98G 0.03226 0.01292 0.01424 41 640: 100%|██████████| 30/30 [00:02<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.926 0.925 0.958 0.534
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
26/99 3.98G 0.03152 0.01266 0.01315 32 640: 100%|██████████| 30/30 [00:02<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.988 0.992 0.995 0.675
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
27/99 3.98G 0.03078 0.01273 0.01316 47 640: 100%|██████████| 30/30 [00:02<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.923 0.914 0.973 0.634
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
28/99 3.98G 0.02773 0.01226 0.01355 43 640: 100%|██████████| 30/30 [00:02<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.689 0.682 0.738 0.446
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
29/99 3.98G 0.02957 0.012 0.01376 35 640: 100%|██████████| 30/30 [00:02<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.927 0.833 0.952 0.599
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
30/99 3.98G 0.02811 0.01192 0.01414 42 640: 100%|██████████| 30/30 [00:02<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.99 0.995 0.995 0.718
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
31/99 3.98G 0.02548 0.01237 0.01207 37 640: 100%|██████████| 30/30 [00:02<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.961 0.975 0.988 0.66
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
32/99 3.98G 0.03024 0.01172 0.01306 37 640: 100%|██████████| 30/30 [00:02<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.985 0.985 0.993 0.687
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
33/99 3.98G 0.02691 0.01125 0.01007 38 640: 100%|██████████| 30/30 [00:02<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.954 0.98 0.993 0.732
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
34/99 3.98G 0.02743 0.01169 0.01167 43 640: 100%|██████████| 30/30 [00:02<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.986 0.988 0.994 0.706
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
35/99 3.98G 0.0286 0.01179 0.0153 38 640: 100%|██████████| 30/30 [00:02<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.945 0.979 0.976 0.663
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
36/99 3.98G 0.02537 0.01211 0.0127 43 640: 100%|██████████| 30/30 [00:02<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.98 0.972 0.994 0.715
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
37/99 3.98G 0.02837 0.01169 0.01206 35 640: 100%|██████████| 30/30 [00:02<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.974 0.967 0.983 0.698
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
38/99 3.98G 0.02573 0.01186 0.01277 44 640: 100%|██████████| 30/30 [00:02<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.988 1 0.995 0.708
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
39/99 3.98G 0.02653 0.01211 0.01424 45 640: 100%|██████████| 30/30 [00:02<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.989 0.982 0.99 0.752
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
40/99 3.98G 0.02987 0.01177 0.0129 31 640: 100%|██████████| 30/30 [00:02<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.996 0.998 0.995 0.754
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
41/99 3.98G 0.02421 0.01095 0.008913 35 640: 100%|██████████| 30/30 [00:02<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.956 0.969 0.992 0.712
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
42/99 3.98G 0.02611 0.01091 0.01266 35 640: 100%|██████████| 30/30 [00:02<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.896 0.914 0.976 0.683
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
43/99 3.98G 0.02356 0.01097 0.01029 40 640: 100%|██████████| 30/30 [00:02<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.993 0.988 0.994 0.707
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
44/99 3.98G 0.02585 0.01176 0.01273 35 640: 100%|██████████| 30/30 [00:02<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.989 0.998 0.995 0.741
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
45/99 3.98G 0.02214 0.01103 0.009593 33 640: 100%|██████████| 30/30 [00:02<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.984 0.968 0.994 0.731
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
46/99 3.98G 0.02429 0.01134 0.01229 37 640: 100%|██████████| 30/30 [00:02<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.972 0.997 0.995 0.696
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
47/99 3.98G 0.02669 0.01131 0.0113 42 640: 100%|██████████| 30/30 [00:02<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.979 0.99 0.993 0.728
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
48/99 3.98G 0.02624 0.01117 0.01391 35 640: 100%|██████████| 30/30 [00:02<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.981 0.991 0.994 0.731
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
49/99 3.98G 0.0216 0.01082 0.01195 40 640: 100%|██████████| 30/30 [00:02<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.979 0.997 0.994 0.749
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
50/99 3.98G 0.02802 0.01135 0.01317 35 640: 100%|██████████| 30/30 [00:02<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.987 0.992 0.995 0.753
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
51/99 3.98G 0.02481 0.01129 0.01008 33 640: 100%|██████████| 30/30 [00:02<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.979 1 0.995 0.734
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
52/99 3.98G 0.02087 0.01088 0.00971 39 640: 100%|██████████| 30/30 [00:02<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.991 0.976 0.995 0.742
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
53/99 3.98G 0.02397 0.0108 0.01014 38 640: 100%|██████████| 30/30 [00:02<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.965 0.987 0.993 0.737
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
54/99 3.98G 0.02143 0.01047 0.01007 39 640: 100%|██████████| 30/30 [00:02<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.999 0.968 0.994 0.76
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
55/99 3.98G 0.02357 0.01063 0.01068 35 640: 100%|██████████| 30/30 [00:02<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.982 0.965 0.992 0.732
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
56/99 3.98G 0.02155 0.01041 0.009341 32 640: 100%|██████████| 30/30 [00:02<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.997 0.997 0.995 0.734
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
57/99 3.98G 0.02413 0.01099 0.01143 43 640: 100%|██████████| 30/30 [00:02<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.992 0.998 0.995 0.741
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
58/99 3.98G 0.02416 0.01015 0.01208 46 640: 100%|██████████| 30/30 [00:02<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.989 1 0.995 0.752
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
59/99 3.98G 0.02315 0.01038 0.009973 36 640: 100%|██████████| 30/30 [00:02<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.99 0.993 0.995 0.755
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
60/99 3.98G 0.02194 0.01087 0.008395 41 640: 100%|██████████| 30/30 [00:02<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.991 0.984 0.995 0.767
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
61/99 3.98G 0.02366 0.01112 0.01098 38 640: 100%|██████████| 30/30 [00:02<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.988 0.996 0.995 0.757
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
62/99 3.98G 0.02109 0.01104 0.008866 32 640: 100%|██████████| 30/30 [00:02<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.998 0.998 0.995 0.75
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
63/99 3.98G 0.02194 0.01008 0.01025 37 640: 100%|██████████| 30/30 [00:02<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.995 1 0.995 0.767
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
64/99 3.98G 0.01991 0.0104 0.009375 42 640: 100%|██████████| 30/30 [00:02<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.986 1 0.995 0.773
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
65/99 3.98G 0.02214 0.01088 0.008747 38 640: 100%|██████████| 30/30 [00:02<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.997 0.989 0.995 0.764
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
66/99 3.98G 0.02282 0.01059 0.01417 27 640: 100%|██████████| 30/30 [00:02<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.987 0.992 0.994 0.74
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
67/99 3.98G 0.02407 0.01053 0.01109 40 640: 100%|██████████| 30/30 [00:02<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.995 0.99 0.995 0.754
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
68/99 3.98G 0.02182 0.01021 0.008963 40 640: 100%|██████████| 30/30 [00:02<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.999 0.991 0.994 0.745
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
69/99 3.98G 0.02283 0.01069 0.008686 41 640: 100%|██████████| 30/30 [00:02<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.959 0.993 0.993 0.746
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
70/99 3.98G 0.02077 0.01068 0.008957 39 640: 100%|██████████| 30/30 [00:02<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.96 0.987 0.994 0.754
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
71/99 3.98G 0.02087 0.01011 0.00913 27 640: 100%|██████████| 30/30 [00:02<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.986 0.992 0.993 0.749
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
72/99 3.98G 0.02065 0.01047 0.01085 42 640: 100%|██████████| 30/30 [00:02<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.946 0.961 0.985 0.713
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
73/99 3.98G 0.02052 0.01022 0.008233 46 640: 100%|██████████| 30/30 [00:02<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.993 0.992 0.995 0.765
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
74/99 3.98G 0.02427 0.01052 0.01263 39 640: 100%|██████████| 30/30 [00:02<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.976 0.997 0.993 0.744
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
75/99 3.98G 0.01907 0.009838 0.006526 36 640: 100%|██████████| 30/30 [00:02<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.996 0.999 0.995 0.767
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
76/99 3.98G 0.02121 0.01021 0.008985 38 640: 100%|██████████| 30/30 [00:02<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.997 0.993 0.995 0.771
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
77/99 3.98G 0.01806 0.01032 0.009292 37 640: 100%|██████████| 30/30 [00:02<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.993 0.999 0.995 0.767
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
78/99 3.98G 0.0211 0.009842 0.008575 42 640: 100%|██████████| 30/30 [00:02<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.994 1 0.995 0.759
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
79/99 3.98G 0.02148 0.0103 0.009642 38 640: 100%|██████████| 30/30 [00:02<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.995 1 0.995 0.759
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
80/99 3.98G 0.01837 0.009587 0.007205 33 640: 100%|██████████| 30/30 [00:02<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.993 1 0.995 0.773
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
81/99 3.98G 0.0206 0.01032 0.007889 44 640: 100%|██████████| 30/30 [00:02<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.995 1 0.995 0.775
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
82/99 3.98G 0.02004 0.0102 0.007953 34 640: 100%|██████████| 30/30 [00:02<00:00, 11.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.996 1 0.995 0.768
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
83/99 3.98G 0.01952 0.009843 0.008777 28 640: 100%|██████████| 30/30 [00:02<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.997 1 0.995 0.764
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
84/99 3.98G 0.01898 0.009601 0.006989 33 640: 100%|██████████| 30/30 [00:02<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.993 0.999 0.995 0.777
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
85/99 3.98G 0.02144 0.009912 0.009352 37 640: 100%|██████████| 30/30 [00:02<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.995 0.992 0.995 0.775
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
86/99 3.98G 0.02084 0.0103 0.01001 32 640: 100%|██████████| 30/30 [00:02<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.991 1 0.995 0.77
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
87/99 3.98G 0.01999 0.009585 0.007808 33 640: 100%|██████████| 30/30 [00:02<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.995 0.999 0.995 0.78
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
88/99 3.98G 0.01913 0.01006 0.009588 31 640: 100%|██████████| 30/30 [00:02<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.997 0.993 0.995 0.779
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
89/99 3.98G 0.02166 0.009986 0.008898 34 640: 100%|██████████| 30/30 [00:02<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.993 0.992 0.995 0.777
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
90/99 3.98G 0.01914 0.009491 0.007874 40 640: 100%|██████████| 30/30 [00:02<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.991 0.992 0.995 0.771
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
91/99 3.98G 0.01811 0.009106 0.007113 35 640: 100%|██████████| 30/30 [00:02<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.988 0.992 0.995 0.774
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
92/99 3.98G 0.0193 0.009321 0.008117 47 640: 100%|██████████| 30/30 [00:02<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.993 0.992 0.995 0.778
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
93/99 3.98G 0.01848 0.009137 0.008004 32 640: 100%|██████████| 30/30 [00:02<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.991 0.991 0.995 0.781
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
94/99 3.98G 0.01892 0.009626 0.007458 34 640: 100%|██████████| 30/30 [00:02<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.993 0.992 0.995 0.774
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
95/99 3.98G 0.01856 0.009444 0.007062 35 640: 100%|██████████| 30/30 [00:02<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.992 0.999 0.995 0.776
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
96/99 3.98G 0.01887 0.009591 0.007504 35 640: 100%|██████████| 30/30 [00:02<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.996 0.993 0.995 0.784
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
97/99 3.98G 0.01569 0.009341 0.00873 46 640: 100%|██████████| 30/30 [00:02<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.995 0.992 0.995 0.776
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
98/99 3.98G 0.01845 0.009881 0.007536 36 640: 100%|██████████| 30/30 [00:02<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.993 0.992 0.995 0.783
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
99/99 3.98G 0.01874 0.009725 0.00775 38 640: 100%|██████████| 30/30 [00:02<00:00, 12.
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.993 0.992 0.995 0.787
100 epochs completed in 0.093 hours.
Optimizer stripped from runs\train\janken4_yolov5s\weights\last.pt, 14.4MB
Optimizer stripped from runs\train\janken4_yolov5s\weights\best.pt, 14.4MB
Validating runs\train\janken4_yolov5s\weights\best.pt...
Fusing layers...
Model summary: 157 layers, 7018216 parameters, 0 gradients, 15.8 GFLOPs
Class Images Instances P R mAP50 mAP50-95: 100%|██████████| 4/4 [00:00<0
all 120 120 0.993 0.992 0.995 0.788
goo 120 40 0.984 1 0.995 0.754
choki 120 40 1 0.977 0.995 0.755
par 120 40 0.994 1 0.995 0.855
Results saved to runs\train\janken4_yolov5s
}}
#enddivregion
~
+ メッセージの最後「Results saved to runs\train\janken4_yolov5s」を確認~
・学習結果モデルは「runs/train/janken4_yolov5s/weights」評価指標は「runs/train/janken4_yolov5s/」~
|CENTER:F1 curve|CENTER:P curve|CENTER:PR curve|CENTER:R curve|h
|#ref(janken_F1_curve_m.jpg,left,around,15%,F1_curve_m.jpg)|#ref(janken_P_curve_m.jpg,left,around,15%,P_curve_m.jpg)|#ref(janken_PR_curve_m.jpg,left,around,15%,PR_curve_m.jpg)|#ref(janken_R_curve_m.jpg,left,around,15%,R_curve_m.jpg)|
#ref(janken_results_m.jpg,left,around,40%,resuls_m.jpg)
#ref(janken_confusion_matrix_m.jpg,left,around,25%,confusion_matrix_m.jpg)
#clear
#ref(janken_labels_correlogram_m.jpg,left,around,15%,labels_correlogram.jpg)
#ref(janken_labels_m.jpg,left,around,15%,labels.jpg)
#ref(janken_train_batch0_m.jpg,left,around,10%,train_batch0.jpg)
#ref(janken_train_batch1_m.jpg,left,around,10%,train_batch1.jpg)
#ref(janken_train_batch2_m.jpg,left,around,10%,train_batch2.jpg)
#clear
#ref(janken_val_batch0_labels_m.jpg,left,around,10%,val_batch0_labels.jpg)
#ref(janken_val_batch0_pred_m.jpg,left,around,10%,val_batch0_pred.jpg)
#ref(janken_val_batch1_labels_m.jpg,left,around,10%,val_batch1_labels.jpg)
#ref(janken_val_batch1_pred_m.jpg,left,around,10%,val_batch1_pred.jpg)
#ref(janken_val_batch2_labels_m.jpg,left,around,10%,val_batch2_labels.jpg)
#ref(janken_val_batch2_pred_m.jpg,left,around,10%,val_batch2_pred.jpg)
#clear
*** 実行結果を使って推論 [#i8abe672]
*** 実行結果を使って推論 [#ud4039ea]
+「detect2.py」で推論実行(静止画)~
・学習結果モデルを指定する~
#codeprettify(){{
(py_learn) python detect2.py --weights ./runs/train/janken4_yolov5s/weights/best.pt --source ../../Images/janken3.jpg --view-img
}}
#ref(janken3_s.jpg,right,around,30%,janken3_s.jpg)
・実行ログ(結果は「runs/detect/exp*」*は順次更新)~
#codeprettify(){{
(py_learn) python detect2.py --weights ./runs/train/janken4_yolov5s/weights/best.pt --source ../../Images/janken3.jpg --view-img
detect2: weights=['./runs/train/janken4_yolov5s/weights/best.pt'], source=../../Images/janken3.jpg, data=data\coco128.yaml, imgsz=[640, 640], conf_thres=0.25, iou_thres=0.45, max_det=1000, device=, view_img=True, save_txt=False, save_csv=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, vid_stride=1
YOLOv5 v7.0-294-gdb125a20 Python-3.11.8 torch-2.2.1+cu121 CUDA:0 (NVIDIA GeForce RTX 4070 Ti, 12282MiB)
Fusing layers...
Model summary: 157 layers, 7018216 parameters, 0 gradients, 15.8 GFLOPs
Speed: 0.0ms pre-process, 53.6ms inference, 42.0ms NMS per image at shape (1, 3, 640, 640)
Results saved to runs\detect\exp23
}}
+「detect2.py」で推論実行(動画)~
・学習結果モデルを指定する~
#codeprettify(){{
(py_learn) python detect2.py --weights ./runs/train/janken4_yolov5s/weights/best.pt --source ../../Videos/janken_test2.mp4 --view-img
}}
#ref(janken_test2.gif,right,around,60%,janken_test2.gif)
・実行ログ(結果は「runs/detect/exp*」*は順次更新)~
#codeprettify(){{
(py_learn) python detect2.py --weights ./runs/train/janken4_yolov5s/weights/best.pt --source ../../Videos/janken_test2.mp4 --view-img
detect2: weights=['./runs/train/janken4_yolov5s/weights/best.pt'], source=../../Videos/janken_test2.mp4, data=data\coco128.yaml, imgsz=[640, 640], conf_thres=0.25, iou_thres=0.45, max_det=1000, device=, view_img=True, save_txt=False, save_csv=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, vid_stride=1
YOLOv5 v7.0-294-gdb125a20 Python-3.11.8 torch-2.2.1+cu121 CUDA:0 (NVIDIA GeForce RTX 4070 Ti, 12282MiB)
Fusing layers...
Model summary: 157 layers, 7018216 parameters, 0 gradients, 15.8 GFLOPs
Speed: 0.7ms pre-process, 8.4ms inference, 1.0ms NMS per image at shape (1, 3, 640, 640)
Results saved to runs\detect\exp24
}}
+「detect2.py」その他の実行例~
#codeprettify(){{
(py_learn) python detect2.py --weights ./runs/train/janken4_yolov5s/weights/best.pt --source ../../Images/janken.jpg --view-img
(py_learn) python detect2.py --weights ./runs/train/janken4_yolov5s/weights/best.pt --source ../../Images/janken2.jpg --view-img
}}
#ref(janken_s.jpg,left,around,25%,janken_s.jpg)
#ref(janken2_s.jpg,left,around,25%,janken2_s.jpg)
#clear
*** 実行結果を使って推論(日本語表示) [#ke218932]
*** 実行結果を使って推論(日本語表示) [#x98a8691]
+ ラベルファイルを準備する~
・「janken.names_jp」日本語~
#codeprettify(){{
グー
チョキ
パー
}}
・「jankennames」英語~
#codeprettify(){{
gook
choki
par
}}
+「detect2_yolov5.py」で推論実行(静止画)~
・学習結果モデルを指定する~
#codeprettify(){{
(py_learn) python detect2_yolov5.py -m ./runs/train/janken4_yolov5s/weights/best.pt -i ../../Images/janken3.jpg -l janken.names_jp
}}
#ref(janken3_jp_s.jpg,right,around,30%,janken3_jp_s.jpg)
・実行ログ~
#codeprettify(){{
(py_learn) python detect2_yolov5.py -m ./runs/train/janken4_yolov5s/weights/best.pt -i ../../Images/janken3.jpg -l janken.names_jp
Object detection YoloV5 in PyTorch Ver. 0.02: Starting application...
OpenCV virsion : 4.9.0
- Image File : ../../Images/janken3.jpg
- YOLO v5 : ultralytics/yolov5
- Pretrained : ./runs/train/janken4_yolov5s/weights/best.pt
- Label file : janken.names_jp
- Program Title: y
- Speed flag : y
- Processed out: non
- Use device : cuda:0
Using cache found in C:\Users\izuts/.cache\torch\hub\ultralytics_yolov5_master
YOLOv5 2024-4-9 Python-3.11.8 torch-2.2.1+cu121 CUDA:0 (NVIDIA GeForce RTX 4070 Ti, 12282MiB)
Fusing layers...
Model summary: 157 layers, 7018216 parameters, 0 gradients, 15.8 GFLOPs
Adding AutoShape...
FPS average: 7.90
Finished.
}}
+「detect2_yolov5.py」で推論実行(動画)~
・学習結果モデルを指定する~
#codeprettify(){{
(py_learn) python detect2_yolov5.py -m ./runs/train/janken4_yolov5s/weights/best.pt -i ../../Videos/janken_test2.mp4 -l janken.names_jp
}}
#ref(janken_test2_jp.gif,right,around,60%,janken_test2_jp.gif)
・実行ログ~
#codeprettify(){{
(py_learn) python detect2_yolov5.py -m ./runs/train/janken4_yolov5s/weights/best.pt -i ../../Videos/janken_test2.mp4 -l janken.names_jp
Object detection YoloV5 in PyTorch Ver. 0.02: Starting application...
OpenCV virsion : 4.9.0
- Image File : ../../Videos/janken_test2.mp4
- YOLO v5 : ultralytics/yolov5
- Pretrained : ./runs/train/janken4_yolov5s/weights/best.pt
- Label file : janken.names_jp
- Program Title: y
- Speed flag : y
- Processed out: non
- Use device : cuda:0
Using cache found in C:\Users\izuts/.cache\torch\hub\ultralytics_yolov5_master
YOLOv5 2024-4-9 Python-3.11.8 torch-2.2.1+cu121 CUDA:0 (NVIDIA GeForce RTX 4070 Ti, 12282MiB)
Fusing layers...
Model summary: 157 layers, 7018216 parameters, 0 gradients, 15.8 GFLOPs
Adding AutoShape...
FPS average: 47.30
Finished.
}}
+「detect2_yolov5.py」その他の実行例~
#codeprettify(){{
(py_learn) python detect2_yolov5.py -m ./runs/train/janken4_yolov5s/weights/best.pt -i ../../Images/janken.jpg -l janken.names_jp
(py_learn) python detect2_yolov5.py -m ./runs/train/janken4_yolov5s/weights/best.pt -i ../../Images/janken2.jpg -l janken.names_jp
}}
#ref(janken_jp_s.jpg,left,around,25%,janken_jp_s.jpg)
#ref(janken2_jp_s.jpg,left,around,25%,janken2_jp_s.jpg)
#clear
#br
** Official YOLOv5 まとめ [#a4bd7240]
*** 各プログラムの機能 [#rfdd06e1]
** Official YOLOv5 まとめ [#ne613710]
*** 各プログラムの機能 [#j7dd7077]
- 主なコマンドオプション(詳しくは各項参照)~
|CENTER:プログラム名|CENTER:主なコマンドオプション|CENTER:初期値|CENTER:機能|CENTER:種別|h
|detect2.py|--weights|yolov7s.pt|入力ソースを物体検出(推論)|YOLOv5 添付&br;detect.py 修正版|
|~|--source|data/images|~|~|
|~|--device|(cuda:0)|~|~|
|~|--view-img|False|~|~|
|BGCOLOR(lightyellow):detect3_yolov5.py|BGCOLOR(lightyellow):-i , --image|BGCOLOR(lightyellow):'../../Videos/car_m.mp4'|BGCOLOR(lightyellow):PyTorch による&br;入力ソースの物体検出(推論)&br;複数モデル/日本語表示対応|BGCOLOR(lightyellow):新規作成|
|~|BGCOLOR(lightyellow):-y , --yolov5|BGCOLOR(lightyellow):'ultralytics/yolov5'|~|~|
|~|BGCOLOR(lightyellow):-m , --models|BGCOLOR(lightyellow)::'yolov5s'|~|~|
|~|BGCOLOR(lightyellow):-ms , --models2|BGCOLOR(lightyellow):''|~|~|
|~|BGCOLOR(lightyellow):-l , --labels|BGCOLOR(lightyellow)::'coco.names_jp'|~|~|
|BGCOLOR(lightyellow):yolov5_OV2.py|BGCOLOR(lightyellow):-i, --input|BGCOLOR(lightyellow):cam|BGCOLOR(lightyellow):OpenVINO™ による&br;入力ソースの物体検出(推論)&br;日本語表示対応|BGCOLOR(lightyellow):新規作成|
|~|BGCOLOR(lightyellow):-m, --model|BGCOLOR(lightyellow):yolov5s_v7.xml|~|~|
|~|BGCOLOR(lightyellow):-d, --device|BGCOLOR(lightyellow):CPU|~|~|
|~|BGCOLOR(lightyellow):-l, --label|BGCOLOR(lightyellow):coco.names_jp|~|~|
|export.py|--include|必須指定|学習済みモデルのフォーマット変換|YOLOv5 添付|
|train.py|--weights|yolov7s.pt|学習プログラム|YOLOv5 添付|
|~|--cfg||~|~|
|~|--data|data/coco.yaml|~|~|
|~|--epochs|300|~|~|
|~|--batch-size|16|~|~|
|~|--device|(cuda:0)|~|~|
|~|--project|runs/train|~|~|
|~|--name|project/name|~|~|
- 利用できる 事前トレーニングモデル~
|LEFT:|RIGHT:|RIGHT:|RIGHT:|RIGHT:|RIGHT:|RIGHT:|RIGHT:|RIGHT:|c
|CENTER:Model|CENTER:size&br;(pixels)|CENTER:mAPval&br;50-95|CENTER:mAPval&br;50|CENTER:Speed&br;CPU b1&br;(ms)|CENTER:Speed&br;V100 b1&br;(ms)|CENTER:Speed&br;V100 b32&br;(ms)|CENTER:params&br;(M)|CENTER:FLOPs&br;@640 (B)|h
|YOLOv5n|640|28.0|45.7|45|6.3|0.6|1.9|4.5|
|BGCOLOR(lightyellow):YOLOv5s|BGCOLOR(lightyellow):640|BGCOLOR(lightyellow):37.4|BGCOLOR(lightyellow):56.8|BGCOLOR(lightyellow):98|BGCOLOR(lightyellow):6.4|BGCOLOR(lightyellow):0.9|BGCOLOR(lightyellow):7.2|BGCOLOR(lightyellow):16.5|
|YOLOv5m|640|45.4|64.1|224|8.2|1.7|21.2|49.0|
|YOLOv5l|640|49.0|67.3|430|10.1|2.7|46.5|109.1|
|YOLOv5x|640|50.7|68.9|766|12.1|4.8|86.7|205.7|
[[&size(12){※ YOLOv5:Pretrained Checkpoints より転載};>https://github.com/ultralytics/yolov5#pretrained-checkpoints]]~
*** 学習(Training) [#tba52119]
*** 学習(Training) [#kafdf914]
- 学習にかかった時間 '''GPU: GeForce RTX 4070 Ti 12GB'''~
|LEFT:|CENTER:|CENTER:100|CENTER:100|CENTER:100|CENTER:|c
|CENTER:データセット|データ数|>|>|yolov5s 学習回数|yolov5x 学習回数|h
|~|~|30|100|300|100|h
|交通標識 (Traffic Signs Dataset)|741|2分30秒|7分1秒|20分36秒||
|マスク着用 (Mask Wearing Dataset)|853||8分35秒|||
|じゃんけん (janken Dataset)|600||5分35秒||124分41秒※|
※テストしたマシンは共有GPUメモリー 32GB で、専用GPUメモリー 12GB を超えても共有サイズまでは動作するが速度は極端に低下する~
高速動作のためには 専用GPUメモリーサイズ内で動作させる必要がある~
→ [[&size(12){※ GPUメモリ(VRAM)とは?| グラフィックボードのメモリの役割、システムメモリとの違い!【簡単な言葉で解説!!】};>https://btopcs.jp/basic/parts/gpumemory/]]~
- ハードウェアによる学習時間の違い~
|CENTER:|CENTER:80|CENTER:80|CENTER:80|CENTER:80|CENTER:80|CENTER:80|c
|OS|>|GPU|>|>|>|CPU|h
|~|RTX 4070|GTX 1050|i9-13900|i7-1260P|i7-1185G7|i7-6700|h
|Windows11/10|BGCOLOR(lightyellow):2分30秒|BGCOLOR(lightyellow):16分48秒|59分17秒|113分46秒|×|246分7秒|
|Ubuntu22.04/20.04|BGCOLOR(lightyellow):1分40秒|BGCOLOR(lightyellow):×||×|122分17秒|×|
・学習済みモデル: yolov5s~
・追加学習データ: Traffic Signs Dataset (交通標識)~
・学習回数 : 30~
#br
** 対処したエラー詳細 [#h2db8968]
*** '''OMP: Error #15: Initializing libiomp5md.dll, but found libiomp5md.dll already initialized.''' [#xc32b73c]
** 対処したエラー詳細 [#n2d07279]
*** '''OMP: Error #15: Initializing libiomp5md.dll, but found libiomp5md.dll already initialized.''' [#a4be2364]
- エラー内容~
#codeprettify(){{
(py_learn) python train.py --data data/ts_dataset/ts.yaml --weights yolov5s.pt --img 640 --epochs 30
train: weights=yolov5s.pt, cfg=, data=data/ts_dataset/ts.yaml, hyp=data\hyps\hyp.scratch-low.yaml, epochs=30, batch_size=16, imgsz=640, rect=False, resume=False, nosave=False, noval=False, noautoanchor=False, noplots=False, evolve=None, evolve_population=data\hyps, resume_evolve=None, bucket=, cache=None, image_weights=False, device=, multi_scale=False, single_cls=False, optimizer=SGD, sync_bn=False, workers=8, project=runs\train, name=exp, exist_ok=False, quad=False, cos_lr=False, label_smoothing=0.0, patience=100, freeze=[0], save_period=-1, seed=0, local_rank=-1, entity=None, upload_dataset=False, bbox_interval=-1, artifact_alias=latest, ndjson_console=False, ndjson_file=False
remote: Enumerating objects: 8, done.
remote: Counting objects: 100% (6/6), done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 8 (delta 3), reused 5 (delta 3), pack-reused 2
Unpacking objects: 100% (8/8), 3.77 KiB | 226.00 KiB/s, done.
From https://github.com/ultralytics/yolov5
db125a20..ae4ef3b2 master -> origin/master
github: YOLOv5 is out of date by 2 commits. Use 'git pull' or 'git clone https://github.com/ultralytics/yolov5' to update.
YOLOv5 v7.0-294-gdb125a20 Python-3.11.8 torch-2.2.1+cu121 CUDA:0 (NVIDIA GeForce RTX 4070 Ti, 12282MiB)
:
Plotting labels to runs\train\exp\labels.jpg...
OMP: Error #15: Initializing libiomp5md.dll, but found libiomp5md.dll already initialized.
OMP: Hint This means that multiple copies of the OpenMP runtime have been linked into the program. That is dangerous, since it can degrade performance or cause incorrect results. The best thing to do is to ensure that only a single OpenMP runtime is linked into the process, e.g. by avoiding static linking of the OpenMP runtime in any library. As an unsafe, unsupported, undocumented workaround you can set the environment variable KMP_DUPLICATE_LIB_OK=TRUE to allow the program to continue to execute, but that may cause crashes or silently produce incorrect results. For more information, please see http://www.intel.com/software/products/support/.
}}
#ref(yolov5_train02_m.jpg,right,around,25%,yolov5_train02_m.jpg)
- 対処方法~
1. C:\Users\<USER>\anaconda3\envs\py_learn で「libiomp5md.dll」を検索~
#codeprettify(){{
"C:\Users\<USER>\anaconda3\envs\py_learn\Lib\site-packages\torch\lib\libiomp5md.dll"
"C:\Users\<USER>\anaconda3\envs\py_learn\Library\bin\libiomp5md.dll"
}}
2. 2つ目の「libiomp5md.dll」を「temp/」(どこでもよい)へ移動~
~
3. 再度実行する~
- コメント~
「libiomp5md.dll」が複数存在する場合に起こるらしい~
- 参考サイト:~
・https://www.programmersought.com/article/53286415201/~
#clear
*** '''libpng warning: iCCP: Not recognizing known sRGB profile that has been edited''' [#j9dd68c4]
*** '''libpng warning: iCCP: Not recognizing known sRGB profile that has been edited''' [#p2af885f]
- エラー内容~
#codeprettify(){{
(py_learn) python train.py --epochs 100 --data data/mask_dataset/mask.yaml --weights yolov5s.pt --name mask_yolov5s
:
Starting training for 100 epochs...
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
0/99 3.35G 0.1201 0.0557 0.04686 158 640: 12%|█▏ | 5/43 [00:01<00:06, 6.1libpng warning: iCCP: Not recognizing known sRGB profile that has been edited
0/99 3.35G 0.1187 0.05642 0.0466 156 640: 28%|██▊ | 12/43 [00:01<00:03, 9.libpng warning: iCCP: Not recognizing known sRGB profile that has been edited
0/99 3.35G 0.1165 0.05713 0.04507 126 640: 40%|███▉ | 17/43 [00:02<00:02, 9.libpng warning: iCCP: Not recognizing known sRGB profile that has been edited
:
}}
- 対処方法~
1.「ImageMagic」をインストールする~
[[画像処理ソフト ImageMagick 7, 動画像処理ソフト FFmpeg のインストール(Windows 上)>+https://www.kkaneko.jp/tools/win/imagemagick7.html]]~
2. インストールの確認~
適当なフォルダ(temp/)にテスト用画像ファイルを置いてコマンドプロンプトで実行する~
#codeprettify(){{
> cd temp
> magick mogrify -identify *.png
image01.png PNG 512x366 512x366+0+0 8-bit TrueColor sRGB 329899B 0.007u 0:00.006
9mage02.png PNG 301x400 301x400+0+0 8-bit TrueColorAlpha sRGB 181960B 0.006u 0:00.005
}}
・[[Imagemagickで画像の情報を取得する>+https://imagemagick.biz/archives/916]]~
~
3.「png」ファイルのプロファイルを削除する~
#codeprettify(){{
> cd train
> magick mogrify -strip *.png
> cd train
> magick mogrify -strip *.png
}}
- 参考サイト:~
・[[dvipdfmxで「warning: iCCP: known incorrect sRGB profile」というエラーが出る場合の対処方法>+https://qiita.com/takahashim/items/39534bd820f7fd71a5bb]]~
・[[warning: pdflatex>libpng warning: iCCP: known incorrect sRGB profile (警告: pdflatex libpng 警告: iCCP: 既知の不正な sRGB プロファイル>+https://tex.stackexchange.com/questions/125612/warning-pdflatex-libpng-warning-iccp-known-incorrect-srgb-profile]]~
・[[【ImageMagick】コマンドで画像を一括処理(形式変換・リサイズ)する方法【Windows11対応】>+https://hontabisatori.com/imagemagick-command/]]~
- コメント~
「libpngl」の問題だそうで画像ファイル内に付属の プロファイルやその他のメタデータ を削除するとエラーが出なくなる~
*** '''github: ⚠️ YOLOv5 is out of date by 6 commits. Use 'git pull' or 'git clone https://github.com/ultralytics/yolov5' to update.''' [#u32d75e4]
*** '''github: ⚠️ YOLOv5 is out of date by 6 commits. Use 'git pull' or 'git clone https://github.com/ultralytics/yolov5' to update.''' [#j2795104]
- エラー内容~
#codeprettify(){{
:
github: ⚠️ YOLOv5 is out of date by 6 commits. Use 'git pull' or 'git clone https://github.com/ultralytics/yolov5' to update.
YOLOv5 v7.0-297-gd07d0cf6 Python-3.11.7 torch-2.2.0+cu121 CUDA:0 (NVIDIA GeForce RTX 4070 Ti, 11987MiB)
:
}}
- 対処方法~
+ リモート(GitHub)の情報を確認する~
#codeprettify(){{
(py_learn) git remote -v
origin https://github.com/ultralytics/yolov5 (fetch)
origin https://github.com/ultralytics/yolov5 (push)
(py_learn) git branch -vv
* master d07d0cf6 [origin/master: behind 6] Create cla.yml (#12899)
}}
+ pull を実行する~
#codeprettify(){{
(py_learn) git pull
Updating d07d0cf6..cf8b67b7
Fast-forward
.github/workflows/merge-main-into-prs.yml | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
pyproject.toml | 2 +-
2 files changed, 57 insertions(+), 1 deletion(-)
create mode 100644 .github/workflows/merge-main-into-prs.yml
}}
- 参考サイト:~
・[[gitのremote URLを確認する>+https://zenn.dev/iga3/articles/843edd1ab31d02]]~
・[[【Git&GitHub】リモート(GitHub)の情報を確認する(git remoteコマンド)>+https://phoeducation.work/entry/20210819/1629327480#google_vignette]]~
・[[git pullとは>+https://zenn.dev/advn/articles/e102d5f50c4673]]~
・[[Git - リモートの最新情報をローカルに反映する(fetchとpull)>+https://forest-valley17.hatenablog.com/entry/2018/12/06/223807]]~
*** '''NotImplementedError: cannot instantiate 'WindowsPath' on your system''' [#a19dd9ab]
*** '''NotImplementedError: cannot instantiate 'WindowsPath' on your system''' [#lbc11d75]
- エラー内容 (Linux で発生)~
#codeprettify(){{
(py_learn) python detect2.py --weights 'runs/train/ts_yolov5s_ep30/weights/best.pt' --source data/ts_dataset/images/val/00001.jpg
detect2: weights=['runs/train/ts_yolov5s_ep30/weights/best.pt'], source=data/ts_dataset/images/val/00001.jpg, data=data/coco128.yaml, imgsz=[640, 640], conf_thres=0.25, iou_thres=0.45, max_det=1000, device=, view_img=False, save_txt=False, save_csv=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, vid_stride=1
YOLOv5 v7.0-304-g22361691 Python-3.11.8 torch-2.2.1+cpu CPU
Traceback (most recent call last):
File "/home/mizutu/workspace_pylearn/yolov5/detect2.py", line 340, in <module>
File "/home/mizutu/workspace_pylearn/yolov5/detect2.py", line 335, in main
File "/home/mizutu/anaconda3/envs/py_learn/lib/python3.11/site-packages/torch/utils/_contextlib.py", line 115, in decorate_context
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "/home/mizutu/workspace_pylearn/yolov5/detect2.py", line 127, in run
File "/home/mizutu/workspace_pylearn/yolov5/models/common.py", line 467, in __init__
model = attempt_load(weights if isinstance(weights, list) else w, device=device, inplace=True, fuse=fuse)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/mizutu/workspace_pylearn/yolov5/models/experimental.py", line 98, in attempt_load
ckpt = torch.load(attempt_download(w), map_location="cpu") # load
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/mizutu/anaconda3/envs/py_learn/lib/python3.11/site-packages/torch/serialization.py", line 1026, in load
return _load(opened_zipfile,
^^^^^^^^^^^^^^^^^^^^^
File "/home/mizutu/anaconda3/envs/py_learn/lib/python3.11/site-packages/torch/serialization.py", line 1438, in _load
result = unpickler.load()
^^^^^^^^^^^^^^^^
File "/home/mizutu/anaconda3/envs/py_learn/lib/python3.11/pathlib.py", line 873, in __new__
raise NotImplementedError("cannot instantiate %r on your system"
NotImplementedError: cannot instantiate 'WindowsPath' on your system
}}
#ref(yolov5_train05_m.jpg,right,around,20%,yolov5_train05_m.jpg)
- 対処方法~
・ubuntu で学習した学習済みモデルに入れ替える~
・モデルファイルの中に「windowsP`ath」「PosixPath」のデータがそれぞれに含まれているよう~
・モデルファイルの中に「windowsPath」「PosixPath」のデータがそれぞれに含まれているよう~
- コメント~
・理由不明 CPU動作の場合のみ発生する~
・cuda環境下での CPU動作(-cpu オプション)では発生しない~
・一時的なシステムのバグのように思われる(2024/04/19 現在)~
#clear
#br
** 更新履歴 [#o3e7ba20]
** 更新履歴 [#c31bcee1]
- 2024/04/05 初版
- 2024/04/18 学習内容追加
#br
* 参考資料 [#k66fda34]
* 参考資料 [#x7038ed3]
- [[【復習】物体検出アルゴリズム「YOLO V5」>+https://izutsu.aa0.netvolante.jp/pukiwiki/?RevYOLOv5]]~
- YOLO V5~
-- [[YOLOV5 By Ultralytics>+https://pytorch.org/hub/ultralytics_yolov5/]]~
-- [[''PyTorch Hub -Ultralytics YOLOv8 ドキュメント''>+https://docs.ultralytics.com/ja/yolov5/tutorials/pytorch_hub_model_loading/]]~
-- [[YOLOv5 -Ultralytics YOLOv8 ドキュメント>+https://docs.ultralytics.com/ja/models/yolov5/]]~
-- [[【物体検出】YOLOとは? PyTorchでYOLOv5を動作させよう!>+https://aiacademy.jp/media/?p=2954]]~
-- [[YOLOv5 で物体検出をしてみよう>+https://rinsaka.com/python/yolov5/index.html]]~
- YOLO V5 training~
-- [[物体検出,物体検出のための追加学習の実行(YOLOv5,PyTorch,Python を使用)(Windows 上)>+https://www.kkaneko.jp/ai/win/yolov5.html]]~
-- [[AIを使っての画像認識による物体検出をYOLOv5を使ってやってみた>+https://sakura-system.com/?p=3814]]~
-- [[YOLOv5を使った物体検出>+https://www.alpha.co.jp/blog/202108_02/]]~
-- [[YOLOv5の学習時に指定可能なオプションについての解説>+https://qiita.com/shinya_sun_sun/items/8c368f3024bf5b0d14aa]]~
-- [[Face Mask Detection>+https://github.com/spacewalk01/yolov5-face-mask-detection?tab=readme-ov-file]]~
-- [[【物体検出2022】YOLOv7まとめ第1回 マスク着用をリアルタイムに判定>+https://tt-tsukumochi.com/archives/3197]]~
-- [[AI を自分好みに調整できる、追加学習まとめ (その1 : 概要)>+https://note.com/te_ftef/n/n48926bfae747]]~
-- [[転移学習とは?ファインチューニングとの違いや活用例をご紹介>+https://biz.hipro-job.jp/column/corporation/transfer-learning/]]~
-- [[転移学習とは?AI実装でよく聞くファインチューニングとの違いも紹介>+https://aismiley.co.jp/ai_news/transfer-learning/]]~
-- [[実装方法から読み解くファインチューニングと転移学習の違いとは>+https://tech.datafluct.com/entry/20220511/1652194800]]~
- ImageMagick~
-- [[画像処理ソフト ImageMagick 7, 動画像処理ソフト FFmpeg のインストール(Windows 上)>+https://www.kkaneko.jp/tools/win/imagemagick7.html]]~
-- [[Imagemagickで画像の情報を取得する>+https://imagemagick.biz/archives/916]]~
-- [[【ImageMagick】コマンドで画像を一括処理(形式変換・リサイズ)する方法【Windows11対応】>+https://hontabisatori.com/imagemagick-command/]]~
- Dataset~
-- [[Traffic Signs Dataset>+https://www.kaggle.com/datasets/valentynsichkar/traffic-signs-dataset-in-yolo-format?resource=downloa]]~
-- [[Face Mask Detection Dataset>+https://www.kaggle.com/datasets/andrewmvd/face-mask-detectiona]]~
-- [[Mask Wearing Dataset>+https://public.roboflow.com/object-detection/mask-wearing]]~
-- [[PascalVOC形式のファイルをYOLO形式に変換>+https://qiita.com/rihib/items/e163d90c009f4fe12782]]~
#br