Mercurial > repos > bgruening > json2yolosegment
annotate yolov8.py @ 4:f6990d85161c draft default tip
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
author | bgruening |
---|---|
date | Mon, 21 Jul 2025 15:51:13 +0000 |
parents | 97bc82ee2a61 |
children |
rev | line source |
---|---|
0
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
1 import argparse |
4
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
2 import csv |
0
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
3 import os |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
4 import pathlib |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
5 import time |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
6 from argparse import RawTextHelpFormatter |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
7 from collections import defaultdict |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
8 |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
9 import cv2 |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
10 import numpy as np |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
11 from termcolor import colored |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
12 from tifffile import imwrite |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
13 from ultralytics import YOLO |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
14 |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
15 # |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
16 # Input arguments |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
17 # |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
18 parser = argparse.ArgumentParser( |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
19 description='train/predict dataset with YOLOv8', |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
20 epilog="""USAGE EXAMPLE:\n\n~~~~Prediction~~~~\n\ |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
21 python yolov8.py --test_path=/g/group/user/data --model_path=/g/cba/models --model_name=yolov8n --save_dir=/g/group/user/results --iou=0.7 --confidence=0.5 --image_size=320 --run_dir=/g/group/user/runs --foldername=batch --headless --num_classes=1 max_det=1 --class_names_file=/g/group/user/class_names.txt\n\ |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
22 \n~~~~Training~~~~ \n\ |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
23 python yolov8.py --train --yaml_path=/g/group/user/example.yaml --model_path=/g/cba/models --model_name=yolov8n --run_dir=/g/group/user/runs/ --image_size=320 --epochs=150 --scale=0.3 --hsv_v=0.5 --model_format=pt --degrees=180 --class_names_file=/g/group/user/class_names.txt""", formatter_class=RawTextHelpFormatter) |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
24 parser.add_argument("--dir_path", |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
25 help=( |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
26 "Path to the training data directory." |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
27 ), |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
28 type=str) |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
29 parser.add_argument("--yaml_path", |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
30 help=( |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
31 "YAML file with all the data paths" |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
32 " i.e. for train, test, valid data." |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
33 ), |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
34 type=str) |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
35 parser.add_argument("--test_path", |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
36 help=( |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
37 "Path to the prediction folder." |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
38 ), |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
39 type=str) |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
40 parser.add_argument("--save_dir", |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
41 help=( |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
42 "Path to the directory where bounding boxes text files" |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
43 " would be saved." |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
44 ), |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
45 type=str) |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
46 parser.add_argument("--run_dir", |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
47 help=( |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
48 "Path where overlaid images would be saved." |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
49 "For example: `RUN_DIR=projectName/results`." |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
50 "This should exist." |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
51 ), |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
52 type=str) |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
53 parser.add_argument("--foldername", |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
54 help=("Folder to save overlaid images.\n" |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
55 "For example: FOLDERNAME=batch.\n" |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
56 "This should not exist as a new folder named `batch`\n" |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
57 " will be created in RUN_DIR.\n" |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
58 " If it exists already then, a new folder named `batch1`\n" |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
59 " will be created automatically as it does not overwrite\n" |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
60 ), |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
61 type=str) |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
62 |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
63 # For selecting and loading model |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
64 parser.add_argument("--model_name", |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
65 help=("Models for task `detect` can be seen here:\n" |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
66 "https://docs.ultralytics.com/tasks/detect/#models \n\n" |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
67 "Models for task `segment` can be seen here:\n" |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
68 "https://docs.ultralytics.com/tasks/segment/#models \n\n" |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
69 " . Use `yolov8n` for `detect` tasks. " |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
70 "For custom model, use `best`" |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
71 ), |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
72 default='yolov8n', type=str) |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
73 parser.add_argument("--model_path", |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
74 help="Full absolute path to the model directory", |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
75 type=str) |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
76 parser.add_argument("--model_format", |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
77 help="Format of the YOLO model i.e pt, yaml etc.", |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
78 default='pt', type=str) |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
79 parser.add_argument("--class_names_file", |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
80 help="Path to the text file containing class names.", |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
81 type=str) |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
82 # For training the model and prediction |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
83 parser.add_argument("--mode", |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
84 help=( |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
85 "detection, segmentation, classification, and pose \n. " |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
86 " Only detection mode available currently i.e. `detect`" |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
87 ), default='detect', type=str) |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
88 parser.add_argument('--train', |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
89 help="Do training", |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
90 action='store_true') |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
91 parser.add_argument("--confidence", |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
92 help="Confidence value (0-1) for each detected bounding box", |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
93 default=0.5, type=float) |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
94 parser.add_argument("--epochs", |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
95 help="Number of epochs for training. Default: 100", |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
96 default=100, type=int) |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
97 parser.add_argument("--init_lr", |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
98 help="Number of epochs for training. Default: 100", |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
99 default=0.01, type=float) |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
100 parser.add_argument("--weight_decay", |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
101 help="Number of epochs for training. Default: 100", |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
102 default=0.0005, type=float) |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
103 |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
104 parser.add_argument("--num_classes", |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
105 help="Number of classes to be predicted. Default: 2", |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
106 default=2, type=int) |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
107 parser.add_argument("--iou", |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
108 help="Intersection over union (IoU) threshold for NMS", |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
109 default=0.7, type=float) |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
110 parser.add_argument("--image_size", |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
111 help=("Size of input image to be used only as integer of w,h. \n" |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
112 "For training choose <= 1000. \n\n" |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
113 "Prediction will be done on original image size" |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
114 ), |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
115 default=320, type=int) |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
116 parser.add_argument("--max_det", |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
117 help=("Maximum number of detections allowed per image. \n" |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
118 "Limits the total number of objects the model can detect in a single inference, \n" |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
119 "preventing excessive outputs in dense scenes.\n\n" |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
120 ), |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
121 default=300, type=int) |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
122 |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
123 # For tracking |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
124 parser.add_argument("--tracker_file", |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
125 help=("Path to the configuration file of the tracker used. \n"), |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
126 default='bytetrack.yaml', type=str) |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
127 |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
128 # For headless operation |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
129 parser.add_argument('--headless', action='store_true') |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
130 parser.add_argument('--nextflow', action='store_true') |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
131 |
4
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
132 |
0
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
133 # For data augmentation |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
134 parser.add_argument("--hsv_h", |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
135 help="(float) image HSV-Hue augmentation (fraction)", |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
136 default=0.015, type=float) |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
137 parser.add_argument("--hsv_s", |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
138 help="(float) image HSV-Saturation augmentation (fraction)", |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
139 default=0.7, type=float) |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
140 parser.add_argument("--hsv_v", |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
141 help="(float) image HSV-Value augmentation (fraction)", |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
142 default=0.4, type=float) |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
143 parser.add_argument("--degrees", |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
144 help="(float) image rotation (+/- deg)", |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
145 default=0.0, type=float) |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
146 parser.add_argument("--translate", |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
147 help="(float) image translation (+/- fraction)", |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
148 default=0.1, type=float) |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
149 parser.add_argument("--scale", |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
150 help="(float) image scale (+/- gain)", |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
151 default=0.5, type=float) |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
152 parser.add_argument("--shear", |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
153 help="(float) image shear (+/- deg)", |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
154 default=0.0, type=float) |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
155 parser.add_argument("--perspective", |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
156 help="(float) image perspective (+/- fraction), range 0-0.001", |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
157 default=0.0, type=float) |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
158 parser.add_argument("--flipud", |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
159 help="(float) image flip up-down (probability)", |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
160 default=0.0, type=float) |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
161 parser.add_argument("--fliplr", |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
162 help="(float) image flip left-right (probability)", |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
163 default=0.5, type=float) |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
164 parser.add_argument("--mosaic", |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
165 help="(float) image mosaic (probability)", |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
166 default=1.0, type=float) |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
167 parser.add_argument("--crop_fraction", |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
168 help="(float) crops image to a fraction of its size to " |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
169 "emphasize central features and adapt to object scales, " |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
170 "reducing background distractions", |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
171 default=1.0, type=float) |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
172 |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
173 |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
174 # Train a new model on the dataset mentioned in yaml file |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
175 def trainModel(model_path, model_name, yaml_filepath, **kwargs): |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
176 if "imgsz" in kwargs: |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
177 image_size = kwargs['imgsz'] |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
178 else: |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
179 image_size = 320 |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
180 |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
181 if "epochs" in kwargs: |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
182 n_epochs = kwargs['epochs'] |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
183 else: |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
184 n_epochs = 100 |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
185 |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
186 if "hsv_h" in kwargs: |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
187 aug_hsv_h = kwargs['hsv_h'] |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
188 else: |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
189 aug_hsv_h = 0.015 |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
190 |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
191 if "hsv_s" in kwargs: |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
192 aug_hsv_s = kwargs['hsv_s'] |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
193 else: |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
194 aug_hsv_s = 0.7 |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
195 |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
196 if "hsv_v" in kwargs: |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
197 aug_hsv_v = kwargs['hsv_v'] |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
198 else: |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
199 aug_hsv_v = 0.4 |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
200 |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
201 if "degrees" in kwargs: |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
202 aug_degrees = kwargs['degrees'] |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
203 else: |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
204 aug_degrees = 10.0 |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
205 |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
206 if "translate" in kwargs: |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
207 aug_translate = kwargs['translate'] |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
208 else: |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
209 aug_translate = 0.1 |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
210 |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
211 if "scale" in kwargs: |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
212 aug_scale = kwargs['scale'] |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
213 else: |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
214 aug_scale = 0.2 |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
215 |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
216 if "shear" in kwargs: |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
217 aug_shear = kwargs['shear'] |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
218 else: |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
219 aug_shear = 0.0 |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
220 |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
221 if "shear" in kwargs: |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
222 aug_shear = kwargs['shear'] |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
223 else: |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
224 aug_shear = 0.0 |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
225 |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
226 if "perspective" in kwargs: |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
227 aug_perspective = kwargs['perspective'] |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
228 else: |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
229 aug_perspective = 0.0 |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
230 |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
231 if "fliplr" in kwargs: |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
232 aug_fliplr = kwargs['fliplr'] |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
233 else: |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
234 aug_fliplr = 0.5 |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
235 |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
236 if "flipud" in kwargs: |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
237 aug_flipud = kwargs['flipud'] |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
238 else: |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
239 aug_flipud = 0.0 |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
240 |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
241 if "mosaic" in kwargs: |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
242 aug_mosaic = kwargs['mosaic'] |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
243 else: |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
244 aug_mosaic = 1.0 |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
245 |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
246 if "crop_fraction" in kwargs: |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
247 aug_crop_fraction = kwargs['crop_fraction'] |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
248 else: |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
249 aug_crop_fraction = 1.0 |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
250 |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
251 if "weight_decay" in kwargs: |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
252 weight_decay = kwargs['weight_decay'] |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
253 else: |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
254 weight_decay = 1.0 |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
255 |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
256 if "init_lr" in kwargs: |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
257 init_lr = kwargs['init_lr'] |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
258 else: |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
259 init_lr = 1.0 |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
260 |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
261 # Load a pretrained YOLO model (recommended for training) |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
262 if args.model_format == 'pt': |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
263 model = YOLO(os.path.join(model_path, model_name + "." + args.model_format)) |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
264 else: |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
265 model = YOLO(model_name + "." + args.model_format) |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
266 model.train(data=yaml_filepath, epochs=n_epochs, project=args.run_dir, |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
267 imgsz=image_size, verbose=True, hsv_h=aug_hsv_h, |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
268 hsv_s=aug_hsv_s, hsv_v=aug_hsv_v, degrees=aug_degrees, |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
269 translate=aug_translate, shear=aug_shear, scale=aug_scale, |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
270 perspective=aug_perspective, fliplr=aug_fliplr, |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
271 flipud=aug_flipud, mosaic=aug_mosaic, crop_fraction=aug_crop_fraction, |
4
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
272 weight_decay=weight_decay, lr0=init_lr) |
0
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
273 return model |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
274 |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
275 |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
276 # Validate the trained model |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
277 def validateModel(model): |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
278 metrics = model.val() # no args needed, dataset & settings remembered |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
279 metrics.box.map # map50-95 |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
280 metrics.box.map50 # map50 |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
281 metrics.box.map75 # map75 |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
282 metrics.box.maps # a list contains map50-95 of each category |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
283 |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
284 |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
285 # Do predictions on images/videos using trained/loaded model |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
286 def predict(model, source_datapath, **kwargs): |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
287 if "imgsz" in kwargs: |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
288 image_size = kwargs['imgsz'] |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
289 else: |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
290 image_size = 320 |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
291 |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
292 if "conf" in kwargs: |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
293 confidence = kwargs['conf'] |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
294 else: |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
295 confidence = 0.5 |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
296 |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
297 if "iou" in kwargs: |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
298 iou_value = kwargs['iou'] |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
299 else: |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
300 iou_value = 0.5 |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
301 |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
302 if "num_classes" in kwargs: |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
303 class_array = list(range(kwargs['num_classes'])) |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
304 else: |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
305 class_array = [0, 1] |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
306 |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
307 if "max_det" in kwargs: |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
308 maximum_detections = args.max_det |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
309 else: |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
310 maximum_detections = 300 |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
311 |
3
97bc82ee2a61
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 743c8acf1ea4e4b1e718743d3772b7e592646611
bgruening
parents:
2
diff
changeset
|
312 run_save_dir = kwargs['run_dir'] # For Galaxy, run_save_dir is always provided via xml wrapper |
0
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
313 if "foldername" in kwargs: |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
314 save_folder_name = kwargs['foldername'] |
4
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
315 |
0
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
316 # infer on a local image or directory containing images/videos |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
317 prediction = model.predict(source=source_datapath, save=True, stream=True, |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
318 conf=confidence, imgsz=image_size, |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
319 save_conf=True, iou=iou_value, max_det=maximum_detections, |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
320 classes=class_array, save_txt=False, |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
321 project=run_save_dir, name=save_folder_name, verbose=True) |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
322 return prediction |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
323 |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
324 |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
325 # Save bounding boxes |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
326 def save_yolo_bounding_boxes_to_txt(predictions, save_dir): |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
327 """ |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
328 Function to save YOLO bounding boxes to text files. |
4
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
329 |
0
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
330 Parameters: |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
331 - predictions: List of results from YOLO model inference. |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
332 - save_dir: Directory where the text files will be saved. |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
333 """ |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
334 for result in predictions: |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
335 result = result.to("cpu").numpy() |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
336 # Using bounding_boxes, confidence_scores, and class_num which are defined in the list |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
337 bounding_boxes = result.boxes.xyxy # Bounding boxes in xyxy format |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
338 confidence_scores = result.boxes.conf # Confidence scores |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
339 class_nums = result.boxes.cls # Class numbers |
4
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
340 |
0
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
341 # Create save directory if it doesn't exist |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
342 save_path = pathlib.Path(save_dir).absolute() |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
343 save_path.mkdir(parents=True, exist_ok=True) |
4
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
344 |
0
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
345 # Construct filename for the text file |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
346 image_filename = pathlib.Path(result.path).stem |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
347 text_filename = save_path / f"{image_filename}.txt" |
4
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
348 |
0
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
349 # Write bounding boxes info into the text file |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
350 with open(text_filename, 'w') as f: |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
351 for i in range(bounding_boxes.shape[0]): |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
352 x1, y1, x2, y2 = bounding_boxes[i] |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
353 confidence = confidence_scores[i] |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
354 class_num = int(class_nums[i]) |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
355 f.write(f'{class_num:01} {x1:06.2f} {y1:06.2f} {x2:06.2f} {y2:06.2f} {confidence:0.02} \n') |
4
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
356 print(colored(f"Bounding boxes saved in: {text_filename}", 'green')) |
0
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
357 |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
358 |
4
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
359 # Main code |
0
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
360 if __name__ == '__main__': |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
361 args = parser.parse_args() |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
362 os.environ["KMP_DUPLICATE_LIB_OK"] = "TRUE" |
4
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
363 |
0
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
364 # Train/load model |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
365 if (args.train): |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
366 model = trainModel(args.model_path, args.model_name, args.yaml_path, |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
367 imgsz=args.image_size, epochs=args.epochs, |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
368 hsv_h=args.hsv_h, hsv_s=args.hsv_s, hsv_v=args.hsv_v, |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
369 degrees=args.degrees, translate=args.translate, |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
370 shear=args.shear, scale=args.scale, |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
371 perspective=args.perspective, fliplr=args.fliplr, |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
372 flipud=args.flipud, mosaic=args.mosaic) |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
373 validateModel(model) |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
374 else: |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
375 t = time.time() |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
376 train_save_path = os.path.expanduser('~/runs/' + args.mode + '/') |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
377 if os.path.isfile(os.path.join(train_save_path, |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
378 "train", "weights", "best.pt")) and (args.model_name == 'sam'): |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
379 model = YOLO(os.path.join(train_save_path, |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
380 "train", "weights", "best.pt")) |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
381 else: |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
382 model = YOLO(os.path.join(args.model_path, |
4
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
383 args.model_name + ".pt")) |
0
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
384 model.info(verbose=True) |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
385 elapsed = time.time() - t |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
386 print(colored(f"\nYOLO model loaded in : '{elapsed}' sec \n", 'white', 'on_yellow')) |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
387 |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
388 if (args.save_dir): |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
389 # Do predictions (optionally show image results with bounding boxes) |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
390 t = time.time() |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
391 datapath_for_prediction = args.test_path |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
392 # Extracting class names from the model |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
393 class_names = model.names |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
394 predictions = predict(model, datapath_for_prediction, |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
395 imgsz=args.image_size, conf=args.confidence, |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
396 iou=args.iou, run_dir=args.run_dir, |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
397 foldername=args.foldername, num_classes=args.num_classes, max_det=args.max_det) |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
398 elapsed = time.time() - t |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
399 print(colored(f"\nYOLO prediction done in : '{elapsed}' sec \n", 'white', 'on_cyan')) |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
400 |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
401 if (args.mode == "detect"): |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
402 # Save bounding boxes |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
403 save_yolo_bounding_boxes_to_txt(predictions, args.save_dir) |
1
dfda27273ead
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 9685f843a52451b3416416094cc0e740f8825dcc
bgruening
parents:
0
diff
changeset
|
404 |
dfda27273ead
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 9685f843a52451b3416416094cc0e740f8825dcc
bgruening
parents:
0
diff
changeset
|
405 # Loop over each result |
dfda27273ead
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 9685f843a52451b3416416094cc0e740f8825dcc
bgruening
parents:
0
diff
changeset
|
406 for result in predictions: |
dfda27273ead
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 9685f843a52451b3416416094cc0e740f8825dcc
bgruening
parents:
0
diff
changeset
|
407 img = np.copy(result.orig_img) |
dfda27273ead
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 9685f843a52451b3416416094cc0e740f8825dcc
bgruening
parents:
0
diff
changeset
|
408 image_filename = pathlib.Path(result.path).stem |
dfda27273ead
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 9685f843a52451b3416416094cc0e740f8825dcc
bgruening
parents:
0
diff
changeset
|
409 overlay_path = os.path.join(args.save_dir, f"{image_filename}_overlay.jpg") |
dfda27273ead
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 9685f843a52451b3416416094cc0e740f8825dcc
bgruening
parents:
0
diff
changeset
|
410 |
dfda27273ead
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 9685f843a52451b3416416094cc0e740f8825dcc
bgruening
parents:
0
diff
changeset
|
411 for box, cls, conf in zip(result.boxes.xyxy, result.boxes.cls, result.boxes.conf): |
dfda27273ead
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 9685f843a52451b3416416094cc0e740f8825dcc
bgruening
parents:
0
diff
changeset
|
412 x1, y1, x2, y2 = map(int, box.tolist()) |
dfda27273ead
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 9685f843a52451b3416416094cc0e740f8825dcc
bgruening
parents:
0
diff
changeset
|
413 class_num = int(cls.item()) |
dfda27273ead
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 9685f843a52451b3416416094cc0e740f8825dcc
bgruening
parents:
0
diff
changeset
|
414 confidence = conf.item() |
dfda27273ead
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 9685f843a52451b3416416094cc0e740f8825dcc
bgruening
parents:
0
diff
changeset
|
415 label = f"{class_names[class_num]} {confidence:.2f}" if class_names else f"{class_num} {confidence:.2f}" |
dfda27273ead
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 9685f843a52451b3416416094cc0e740f8825dcc
bgruening
parents:
0
diff
changeset
|
416 |
dfda27273ead
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 9685f843a52451b3416416094cc0e740f8825dcc
bgruening
parents:
0
diff
changeset
|
417 cv2.rectangle(img, (x1, y1), (x2, y2), color=(0, 255, 0), thickness=2) |
dfda27273ead
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 9685f843a52451b3416416094cc0e740f8825dcc
bgruening
parents:
0
diff
changeset
|
418 cv2.putText(img, label, (x1, y1 - 10), cv2.FONT_HERSHEY_SIMPLEX, |
dfda27273ead
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 9685f843a52451b3416416094cc0e740f8825dcc
bgruening
parents:
0
diff
changeset
|
419 0.5, (0, 255, 0), thickness=1) |
dfda27273ead
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 9685f843a52451b3416416094cc0e740f8825dcc
bgruening
parents:
0
diff
changeset
|
420 |
dfda27273ead
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 9685f843a52451b3416416094cc0e740f8825dcc
bgruening
parents:
0
diff
changeset
|
421 cv2.imwrite(overlay_path, img) |
dfda27273ead
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 9685f843a52451b3416416094cc0e740f8825dcc
bgruening
parents:
0
diff
changeset
|
422 print(colored(f"Overlay image saved at: {overlay_path}", 'cyan')) |
0
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
423 elif (args.mode == "track"): |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
424 results = model.track(source=datapath_for_prediction, |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
425 tracker=args.tracker_file, |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
426 conf=args.confidence, |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
427 iou=args.iou, |
4
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
428 persist=True, |
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
429 show=False, |
0
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
430 save=True, |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
431 project=args.run_dir, |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
432 name=args.foldername) |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
433 # Store the track history |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
434 track_history = defaultdict(lambda: []) |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
435 |
4
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
436 tsv_path = os.path.join(args.save_dir, "tracks.tsv") |
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
437 with open(tsv_path, "w", newline="") as tsvfile: |
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
438 writer = csv.writer(tsvfile, delimiter='\t') |
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
439 writer.writerow(['track_id', 'frame', 'class', 'centroid_x', 'centroid_y']) |
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
440 frame_idx = 0 |
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
441 for result in results: |
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
442 # Get the boxes and track IDs |
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
443 if result.boxes and result.boxes.is_track: |
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
444 track_ids = result.boxes.id.int().cpu().tolist() |
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
445 labels = result.boxes.cls.int().cpu().tolist() if hasattr(result.boxes, "cls") else [0] * len(track_ids) |
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
446 # Prepare mask image |
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
447 img_shape = result.orig_shape if hasattr(result, "orig_shape") else result.orig_img.shape |
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
448 mask = np.zeros(img_shape[:2], dtype=np.uint16) |
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
449 # Check if polygons (masks) are available |
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
450 if hasattr(result, "masks") and result.masks is not None and hasattr(result.masks, "xy"): |
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
451 polygons = result.masks.xy |
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
452 for i, (track_id, label) in enumerate(zip(track_ids, labels)): |
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
453 if i < len(polygons): |
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
454 contour = polygons[i].astype(np.int32) |
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
455 contour = contour.reshape(-1, 1, 2) |
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
456 cv2.drawContours(mask, [contour], -1, int(track_id), cv2.FILLED) |
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
457 # Calculate centroid of the polygon |
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
458 M = cv2.moments(contour) |
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
459 if M["m00"] != 0: |
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
460 cx = float(M["m10"] / M["m00"]) |
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
461 cy = float(M["m01"] / M["m00"]) |
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
462 else: |
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
463 cx, cy = 0.0, 0.0 |
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
464 writer.writerow([track_id, frame_idx, label, cx, cy]) |
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
465 else: |
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
466 # Fallback to bounding boxes if polygons are not available |
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
467 boxes = result.boxes.xywh.cpu() |
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
468 xyxy_boxes = result.boxes.xyxy.cpu().numpy() |
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
469 for i, (box, xyxy, track_id, label) in enumerate(zip(boxes, xyxy_boxes, track_ids, labels)): |
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
470 x, y, w, h = box |
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
471 writer.writerow([track_id, frame_idx, label, float(x), float(y)]) |
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
472 x1, y1, x2, y2 = map(int, xyxy) |
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
473 cv2.rectangle(mask, (x1, y1), (x2, y2), int(track_id), thickness=-1) |
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
474 # Collect masks for TYX stack |
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
475 if frame_idx == 0: |
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
476 mask_stack = [] |
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
477 mask_stack.append(mask) |
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
478 frame_idx += 1 |
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
479 # Save TYX stack (T=frames, Y, X) |
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
480 if 'mask_stack' in locals() and len(mask_stack) > 0: |
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
481 tyx_array = np.stack(mask_stack, axis=0) |
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
482 # Remove string from last underscore in filename |
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
483 stem = pathlib.Path(result.path).stem |
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
484 stem = stem.rsplit('_', 1)[0] if '_' in stem else stem |
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
485 mask_save_as = str(pathlib.Path(os.path.join(args.save_dir, stem + "_mask.tiff")).absolute()) |
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
486 imwrite(mask_save_as, tyx_array) |
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
487 print(colored(f"TYX mask stack saved as : '{mask_save_as}'", 'magenta')) |
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
488 print(colored(f"Tracking results saved in : '{args.save_dir}' \n", 'green')) |
0
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
489 elif (args.mode == "segment"): |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
490 # Read class names from the file |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
491 with open(args.class_names_file, 'r') as f: |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
492 class_names = [line.strip() for line in f.readlines()] |
4
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
493 # Create a mapping from class names to indices |
0
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
494 class_to_index = {class_name: i for i, class_name in enumerate(class_names)} |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
495 |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
496 # Save polygon coordinates |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
497 for result in predictions: |
4
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
498 # Create binary mask |
0
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
499 img = np.copy(result.orig_img) |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
500 filename = pathlib.Path(result.path).stem |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
501 b_mask = np.zeros(img.shape[:2], np.uint8) |
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
502 mask_save_as = str(pathlib.Path(os.path.join(args.save_dir, filename + "_mask.tiff")).absolute()) |
4
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
503 # Define output file path for text file |
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
504 output_filename = os.path.splitext(filename)[0] + ".txt" |
0
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
505 txt_save_as = str(pathlib.Path(os.path.join(args.save_dir, filename + ".txt")).absolute()) |
4
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
506 instance_id = 1 # Start instance IDs from 1 |
0
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
507 for c, ci in enumerate(result): |
4
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
508 # Extract contour result |
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
509 contour = ci.masks.xy.pop() |
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
510 contour = contour.astype(np.int32) |
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
511 contour = contour.reshape(-1, 1, 2) |
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
512 # Draw contour onto mask with unique instance id |
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
513 _ = cv2.drawContours(b_mask, [contour], -1, instance_id, cv2.FILLED) |
0
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
514 |
4
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
515 # Normalized polygon points |
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
516 points = ci.masks.xyn.pop() |
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
517 confidence = result.boxes.conf.to("cpu").numpy()[c] |
0
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
518 |
4
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
519 with open(txt_save_as, 'a') as f: |
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
520 segmentation_points = ['{} {}'.format(points[i][0], points[i][1]) for i in range(len(points))] |
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
521 segmentation_points_string = ' '.join(segmentation_points) |
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
522 line = '{} {} {}\n'.format(instance_id, segmentation_points_string, confidence) |
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
523 f.write(line) |
0
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
524 |
4
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
525 instance_id += 1 # Increment for next object |
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
526 |
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
527 imwrite(mask_save_as, b_mask, imagej=True) # save label mask image |
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
528 print(colored(f"Saved label mask as : \n '{mask_save_as}' \n", 'magenta')) |
0
252fd085940d
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit 67e0e1d123bcfffb10bab8cc04ae67259caec557
bgruening
parents:
diff
changeset
|
529 print(colored(f"Polygon coordinates saved as : \n '{txt_save_as}' \n", 'cyan')) |
4
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
530 else: |
f6990d85161c
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools commit c6c9d43a4ecdc88ebdeaf3451453a550f159c506
bgruening
parents:
3
diff
changeset
|
531 raise Exception(("Currently only 'detect', 'segment' and 'track' modes are available")) |