DEV Community

Cover image for Où est Charlie - AI
victor_dalet
victor_dalet

Posted on

Où est Charlie - AI

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 
Enter fullscreen mode Exit fullscreen mode

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() 
Enter fullscreen mode Exit fullscreen mode

II - Train

For training I use ultralytics

pip install ultralytics 
Enter fullscreen mode Exit fullscreen mode

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() 
Enter fullscreen mode Exit fullscreen mode

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) 
Enter fullscreen mode Exit fullscreen mode

Image description

Top comments (0)