0. Directory structure:
Hens Tracking
├── data
│ ├── frames
│ │ └── frame_0.jpg, frame_1.jpg, ..., frame_204.jpg
│ └── video
│ └── video.mkv
│
├── train
│ ├── images
│ │ └── first 185 images
│ └── labels
│
├── val
│ ├── images
│ │ └── remaining 20 images
│ └── labels
│
├── annotate.py
│
├── get_stuff.py
│
├── track.py
│
└── data.yaml
ultralytics auto annotator
1. Annotated the frames using Run
python annotate.py
(See output annotate_output.txt
)
This creates a folder under data
named 'frames_auto_annotate_labels' and gives a .txt file for each frame containing the segmentations of the hens it detected.
2. Put the labels into a proper structure for training i.e. specify custom class (hen)
Run
python get_stuff.py
This will put all the necesaary files under train/labels
. Move the last 20 files to val/labels
for validation in the next stripped.
yolov8x-seg
3. The model is now trained using a pretrained Ensure that the directory path is good
Run
yolo task=segment mode=train model=yolov8x-seg data=data.yaml epochs=20 imgsz=640
in a terminal opened in the directory
(See output train_output.txt
)
This will create a runs
folder and all the metrics and model weights will be stored there.
4. Use the best weights as input model for tracking
Run
python track.py
(See output track_output.txt
, uncomment line no. 34 if you want to visualize the output alongside running)
The final tracking video would be saved under the directory.