Skip to content

Commit

Permalink
chore: Added some descriptions
Browse files Browse the repository at this point in the history
  • Loading branch information
Joachim committed Apr 25, 2024
1 parent 07dd231 commit c51b8cd
Show file tree
Hide file tree
Showing 5 changed files with 74 additions and 7 deletions.
30 changes: 28 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ Package to train object detection model for biological problems
## Start the training

1) Go to `projects/<PROJECT NAME>/data.yaml` and enter the labels of your training data.
2) Execute `start-training.sh`
2) Execute `start-training.sh`or `start-seg-training.sh`


# Faster training with GPU
Expand All @@ -53,7 +53,7 @@ sudo systemctl restart docker
```

- When starting the docker container add `--gpus=all` argument
- Add the argument `--device 0` to the `start-training.sh`
- Add the argument `--device 0` to the `start-training.sh` and `start-seg-training.sh`

Use `nvtop` to show gpu usage

Expand All @@ -68,3 +68,29 @@ https://blog.paperspace.com/train-yolov5-custom-data/
https://github.com/ultralytics/yolov5/issues/475




## Metrics


Klassenbezogene Metriken
Einer der Abschnitte der Ausgabe ist die klassenweise Aufschlüsselung der Leistungsmetriken. Diese detaillierten Informationen sind nützlich, wenn du herausfinden willst, wie gut das Modell für jede einzelne Klasse abschneidet, vor allem in Datensätzen mit einer Vielzahl von Objektkategorien. Für jede Klasse im Datensatz wird Folgendes angegeben:

Klasse: Dies bezeichnet den Namen der Objektklasse, z. B. "Person", "Auto" oder "Hund".

Bilder: Diese Metrik zeigt dir die Anzahl der Bilder im Validierungsset, die die Objektklasse enthalten.

Instanzen: Hier wird gezählt, wie oft die Klasse in allen Bildern des Validierungssatzes vorkommt.

Box(P, R, mAP50, mAP50-95): Diese Metrik gibt Aufschluss über die Leistung des Modells bei der Erkennung von Objekten:

P (Präzision): Die Genauigkeit der erkannten Objekte, die angibt, wie viele Erkennungen richtig waren.

R (Recall): Die Fähigkeit des Modells, alle Instanzen von Objekten in den Bildern zu identifizieren.

mAP50: Mittlere durchschnittliche Genauigkeit, berechnet bei einem Schwellenwert von 0,50 für die Überschneidung über die Vereinigung (IoU). Er ist ein Maß für die Genauigkeit des Modells, das nur die "einfachen" Erkennungen berücksichtigt.

mAP50-95: Der Durchschnitt der durchschnittlichen Genauigkeit, die bei verschiedenen IoU-Schwellenwerten zwischen 0,50 und 0,95 berechnet wurde. Er gibt einen umfassenden Überblick über die Leistung des Modells bei verschiedenen Schwierigkeitsgraden.


https://docs.ultralytics.com/de/guides/yolo-performance-metrics/#how-to-calculate-metrics-for-yolov8-model
26 changes: 26 additions & 0 deletions convert_pb_to_onnx.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@


#python -m tf2onnx.convert --input `pwd`/projects/bio_zoo/nucleus/saved_model.pb --output bio_zoo_nucleus.onnx --opset 12

#saved_model_cli show --dir `pwd`/projects/bio_zoo/nucleus/TF_SavedModel/ --all
# Look for signature_def inputs/outputs
# --inputs X:0[1,28,28,3]

python -m tf2onnx.convert --saved-model ./TF_SavedModel --opset 12 --output model.onnx --inputs input:0
#python -m onnxruntime.tools.make_dynamic_shape_fixed -h 640

# OpenCV just supports fixed shape models
# https://onnxruntime.ai/docs/tutorials/mobile/helpers/make-dynamic-shape-fixed.html




python -m onnxruntime.tools.make_dynamic_shape_fixed --dim_param batch --dim_value 3 model.onnx model.fixed.onnx


#python -m onnxruntime.tools.make_dynamic_shape_fixed --input_name input --input_shape 1,3,640,640 model.onnx model.fixed.onnx




python -m onnxruntime.tools.make_dynamic_shape_fixed --input_name input:0 --input_shape 1,3,640,640 model.onnx model.fixed.onnx
7 changes: 6 additions & 1 deletion docker/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,9 @@ RUN pip install --upgrade pip
RUN ln -s /usr/bin/python3 /usr/bin/python
RUN git clone -b v1.0.0-alpha01 https://github.com/joda01/yolov5.git &&\
cd yolov5/ &&\
pip install -r requirements.txt
pip install -r requirements.txt

#RUN pip install tensorflow
#RUN pip install tf2onnx
#RUN pip install onnxruntime

12 changes: 10 additions & 2 deletions start-seg-training.sh
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,17 @@ cd /workspaces/open-bio-image-trainer

#python /yolov5/segment/train.py --model yolov5m-seg.pt --data coco128-seg.yaml --epochs 5 --img 640

python /yolov5/segment/train.py --img 640 --batch 1 --epochs 256 --data `pwd`/projects/$projectname/data.yaml --weights yolov5m-seg.pt --cfg yolov5m-seg.yaml --device cpu --workers 1 --project `pwd`/projects/$projectname --name result --device 0
python /yolov5/segment/train.py --img 640 --batch 1 --epochs 256 --data `pwd`/projects/$projectname/data.yaml --weights yolov5m-seg.pt --cfg yolov5m-seg.yaml --device 0 --workers 1 --project `pwd`/projects/$projectname --name result

#
# Convert to ONNX
#
#python /yolov5/export.py --weights `pwd`/projects/nucleus02/result2/weights/best.pt --include torchscript onnx --opset 12
#python /yolov5/export.py --weights `pwd`/projects/nucleus02/result2/weights/best.pt --include torchscript onnx --opset 12

#python /yolov5/export.py --weights `pwd`/projects/cell_detection/result5/weights/best.pt --include torchscript onnx --opset 12


#python /yolov5/export.py --weights `pwd`/projects/cell-brightfield-01/result3/weights/best.pt --include torchscript onnx --opset 12

#python /yolov5/export.py --weights `pwd`/projects/cell-brightfield-02/result4/weights/best.pt --include torchscript onnx --opset 12
#python /yolov5/export.py --weights `pwd`/projects/cell-brightfield-02/result5/weights/best.pt --include torchscript onnx --opset 12
6 changes: 4 additions & 2 deletions start-training.sh
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,13 @@ cd /yolov5
export PYTHONPATH=$PYTHONPATH:`pwd`:`pwd`/slim
cd /workspaces/open-bio-image-trainer

python /yolov5/train.py --img 640 --batch 16 --epochs 256 --data `pwd`/projects/$projectname/data.yaml --weights yolov5m.pt --cfg yolov5m.yaml --device cpu --workers 1 --project `pwd`/projects/$projectname --name result --device 0
python /yolov5/train.py --img 640 --batch 8 --epochs 256 --data `pwd`/projects/$projectname/data.yaml --weights yolov5m.pt --cfg yolov5m.yaml --device cpu --workers 1 --project `pwd`/projects/$projectname --name result --device 0



#
# Convert to ONNX
#
#python /yolov5/export.py --weights `pwd`/projects/nucleus02/result2/weights/best.pt --include torchscript onnx --opset 12
#python /yolov5/export.py --weights `pwd`/projects/nucleus02/result2/weights/best.pt --include torchscript onnx --opset 12

#python /yolov5/export.py --weights `pwd`/projects/cell-brightfield-02/result3/weights/best.pt --include torchscript onnx --opset 12

0 comments on commit c51b8cd

Please sign in to comment.