Image Models Example
Image Models Example
Файлы: examples/image_models/train.py и predict.py. Демонстрируют YoloImageModel на подвыборке COCO (4 изображения, examples/image_models/data/).
train.py — обучение всех pretrained-моделей в папке
model_files = list(pretrained_dir.glob("*.pt")) # examples/image_models/pretrained_models/*.pt
for model_path in model_files:
base_model = YOLO(str(model_path))
wrapper = YoloImageModel(base_model)
wrapper.train(data=str(dataset_yaml), epochs=5, imgsz=640)
wrapper.save(str(trained_dir / f"{model_path.stem}_trained.pt"))
В репозитории уже лежат три готовые pretrained-модели (yolo11n.pt, yolov5nu.pt, yolov8n.pt в pretrained_models/) — скрипт дообучает каждую на локальном мини-датасете (5 эпох) и сохраняет результат в trained_models/. Там же уже лежат готовые *_trained.pt — то есть скрипт был прогнан раньше, и его можно перезапускать повторно (перезапишет результат).
predict.py — инференс всеми обученными моделями
trained_models = list(trained_dir.glob("*.pt"))
for model_path in trained_models:
model = YOLO(str(model_path))
wrapper = YoloImageModel(model)
results = wrapper.predict(str(image_path), save=False)
results[0].plot(save=True, filename=str(out_img))
Берёт одно фиксированное изображение (data/images/000000000009.jpg), прогоняет через каждую модель из trained_models/ и сохраняет визуализацию в predictions/ ({model}_prediction.jpg) — готовые примеры результатов уже есть в репозитории.
⚠️ Датасет содержит абсолютные пути
examples/image_models/data/dataset.yaml содержит:
train: /home/niashin/mephi/mlumina/examples/image_models/data/images
val: /home/niashin/mephi/mlumina/examples/image_models/data/images
Это абсолютные пути конкретной машины разработчика, а не относительные/портативные. Перед запуском train.py на любой другой машине эти два пути нужно поправить на актуальные — иначе ultralytics.YOLO.train не найдёт изображения (или найдёт чужие/несуществующие).
Как запустить
cd examples/image_models
python train.py # дообучение (после правки dataset.yaml)
python predict.py # инференс уже обученными моделями
Оба скрипта используют YoloImageModel в однопроцессном режиме (train/predict, не train_ray/predict_ray) — Ray не требуется и не инициализируется.