Hello, in this article we're going to find a technique to solve Où est Charlie with AI.
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()
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()
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)
The above is the detailed content of Where's Charlie - AI. For more information, please follow other related articles on the PHP Chinese website!