Hello, in this article we're going to find a technique to solve Où est Charlie with AI.
I - Dataset
I found a dataset on the following github:
https://github.com/kiim29/Ou_est_charlie
The first step is to convert this data to Yolo v5 format.
To do this, I create the following directories:
yolov5/
├── train
│ ├── images
│ └── labels
└── val
├── images
└── labels
And put all images in the good folder.
For the annotation, I create a script to read the csv in the github and create the various label files with the position type transformation.
Beacause the format of yolov5 labels file is :
index_item (xmin + xmax) / 2 / width (ymin + ymax) / 2 / height (xmax - xmin) / width (ymax - ymin) / height
import pandas as pd
class Main:
def __init__(self):
csv = pd.read_csv("../annotations/annotations.csv")
for i in range(len(csv)):
filename = csv["filename"][i].split(".")[0]
width = csv["width"][i]
height = csv["height"][i]
xmin = csv["xmin"][i]
ymin = csv["ymin"][i]
xmax = csv["xmax"][i]
ymax = csv["ymax"][i]
x_center = (xmin + xmax) / 2 / width
y_center = (ymin + ymax) / 2 / height
bbox_width = (xmax - xmin) / width
bbox_height = (ymax - ymin) / height
with open(f"../dataset/train/labels/{filename}.txt", "a") as f:
f.write(f"0 {x_center} {y_center} {bbox_width} {bbox_height}\n")
if __name__ == "__main__":
Main()
II - Train
For training I use ultralytics
pip install ultralytics
And I launch the training with the following arguments.
from ultralytics import YOLO
model = YOLO('yolov8n.pt')
model.train(data='dataset.yaml', epochs=50, patience=10000)
model.export()
III - Test
For testing purposes, we can run a random image with ultralytics and the new model :)
import sys
from ultralytics import YOLO
model = YOLO('../last.pt')
image_path = f'../dataset/train/images/{sys.argv[1]}.jpg'
results = model(image_path,conf=0.2)
Top comments (0)