Trainieren Sie Ihren eigenen Datensatz mit yolov7 auf einem Linux-Server

Vorwort

yolov7 war schon eine Weile draußen, bevor der Autor einen Blog geschrieben hat. Es gibt bereits viele Blogs im Internet, die die Innovationen ihrer Artikel und die Netzwerkstruktur von yolov7 beschreiben. Ich werde hier nicht auf Details eingehen. In diesem Blog wird hauptsächlich geschrieben, wie um mit yolov7 Ihren eigenen Datensatz zu trainieren.

Umgebungsaufbau

Laden Sie zuerst den gesamten Projektcode von der offiziellen Website von yolov7 [https://github.com/WongKinYiu/yolov7] herunter und erstellen Sie dann eine virtuelle Conda-Umgebung auf dem Server. Ich verwende hier die Python3.7-Version

	```
	conda create -n yolo7 python=3.7
	```

Aktivieren Sie dann die virtuelle Umgebung, geben Sie den Ordner yolov7-main ein und führen Sie den folgenden Befehl aus

	```
	pip install -r requirements.txt  -i https://pypi.tuna.tsinghua.edu.cn/simple/ 
	```

Hier wird die Quelle der Tsinghua-Universität verwendet, um die entsprechende Abhängigkeitsbibliothek von Python zu installieren, was viel schneller geht.
Wenn im Installationsprozess kein Fehler auftritt, kann diese Umgebung direkt verwendet werden. Wenn während der Installation ein Paketinstallationsfehler gemeldet wird Führen Sie den Vorgang durch und installieren Sie ihn erneut mit dem Pip-Beutel auf der Leine

Abschließend können Sie den Befehl zum Modelltraining ausführen. Wenn kein Fehler gemeldet wird, bedeutet dies, dass die Umgebung vollständig eingerichtet ist.

	```
	python train.py --workers 8 --device 0 --batch-size 32 --data data/coco.yaml --img 640 640 --cfg cfg/training/yolov7.yaml --weights '' --name yolov7 --hyp data/hyp.scratch.p5.yaml
	```

Ändern Sie die Konfigurationsdatei

Verwenden Sie basierend auf der Einrichtung der Umgebung Ihren eigenen Datensatz für das Training. Konvertieren Sie ihn hauptsächlich nach der Beschriftung Ihres eigenen Datensatzes in das Coco-Datenformat (es gibt viele Online-Tutorials, daher werde ich hier nicht auf Details eingehen). Aufgrund der Vorbereitung der Daten müssen Sie nur einige Konfigurationsdateien ändern, um normal trainieren zu können. Ich verwende denselben Coco-Datensatz wie den offiziellen. Wenn es sich um Ihren eigenen Datensatz handelt, sollten Sie die folgenden Punkte beachten Änderungen:
(1) In cfg/training/yolov7.yaml muss die Anzahl der Kategorien geändert werden

	```
	# parameters
	nc: 80  # number of classes  ##类别的数量需要进行修改
	depth_multiple: 1.0  # model depth multiple
	width_multiple: 1.0  # layer channel multiple
	```

(2) In data/coco.yaml müssen die relevanten Informationen der gelesenen Daten geändert werden

	```	
# download command/URL (optional)
#download: bash ./scripts/get_coco.sh

# train and val data as 1) directory: path/images/, 2) file: path/images.txt, or 3) list: [path1/images/, path2/images/]
train: /data/benchmark/COCO2017/coco/train2017.txt  # 118287 images ## 需要修改
val: /data/benchmark/COCO2017/coco/val2017.txt  # 5000 images  ## 需要修改
test: /data/benchmark/COCO2017/coco/test-dev2017.txt  #    ## 需要修改

# number of classes
nc: 80    #需要修改

# class names 
names: [ 'person', 'bicycle', 'car', 'motorcycle', 'airplane', 'bus', 'train', 'truck', 'boat', 'traffic light',
     'fire hydrant', 'stop sign', 'parking meter', 'bench', 'bird', 'cat', 'dog', 'horse', 'sheep', 'cow',
     'elephant', 'bear', 'zebra', 'giraffe', 'backpack', 'umbrella', 'handbag', 'tie', 'suitcase', 'frisbee',
     'skis', 'snowboard', 'sports ball', 'kite', 'baseball bat', 'baseball glove', 'skateboard', 'surfboard',
     'tennis racket', 'bottle', 'wine glass', 'cup', 'fork', 'knife', 'spoon', 'bowl', 'banana', 'apple',
     'sandwich', 'orange', 'broccoli', 'carrot', 'hot dog', 'pizza', 'donut', 'cake', 'chair', 'couch',
     'potted plant', 'bed', 'dining table', 'toilet', 'tv', 'laptop', 'mouse', 'remote', 'keyboard', 'cell phone',
     'microwave', 'oven', 'toaster', 'sink', 'refrigerator', 'book', 'clock', 'vase', 'scissors', 'teddy bear',
     'hair drier', 'toothbrush' ]   ##需要修改
	```

zu guter Letzt

Nachdem Sie den oben genannten zugehörigen Inhalt geändert haben, können Sie den Modelltrainingsbefehl direkt ausführen, um das Modell zu trainieren

Der Autor hat die Einzelkarten-V100-Batchgröße auf 32 eingestellt, um yolov7 für insgesamt 300 Epochen zu trainieren, was etwa 2 Wochen dauerte. Schließlich sind die Änderungen der drei Verluste im Trainingssatz wie folgt: box_loss beträgt etwa 0,026, cls_loss beträgt reduziert auf 0,0065,
Transformation von Trainingsverlusten
obj_loss Etwa 0,024

Das Metrik-Trenddiagramm für den Trainingssatz sieht ungefähr wie folgt aus:
Genauigkeitstransformation des Trainingssatzes

Ich denke du magst

Origin blog.csdn.net/weixin_42280271/article/details/127752851
Empfohlen
Rangfolge