Я разрабатываю алгоритм с использованием Yolo-nas, набор данных подготовил с помощью labelImg. Я использую Python 3.10.11 для реализации этого алгоритма вместе с контролем суперградиента. Проблема в следующем: алгоритм загружает данные, но при построении изображения показывает, что не может найти изображение в каталоге. Я провел несколько тестов с другими алгоритмами, и он может найти путь к каталогу. Я подозреваю, что это версия с суперградиентом (3.7.1)
Ошибка начинается, когда мне приходится отображать данные обучения.
FileNotFoundError :dataset\\images\\train\\img1.png was not found.
Please make sure that the dataset was downloaded and that the path is correct
примечание: изображения в наборе данных были в формате PDF, и я преобразовал их в PNG, чтобы иметь возможность использовать их в labelImg и идентифицировать классы объектов.
import torch
torch.__version__
from tqdm.notebook import tqdm
from super_gradients.training import dataloaders
from super_gradients.training.dataloaders.dataloaders import coco_detection_yolo_format_train, coco_detection_yolo_format_val
from super_gradients.training import models
from super_gradients.training.losses import PPYoloELoss
from super_gradients.training.metrics import DetectionMetrics_050
from super_gradients.training.models.detection_models.pp_yolo_e import PPYoloEPostPredictionCallback
dataset_params = {
'data_dir': "nf/dataset",
'train_images_dir': "dataset/images/train",
'train_labels_dir': "dataset/labels/train",
'val_images_dir': "dataset/images/val",
'val_labels_dir': "dataset/labels/val",
'classes': ['cabecalho', 'assinatura', 'rodape']
}
MODEL_ARCH = 'yolo_nas_l'
DEVICE = 'cuda' if torch.cuda.is_available() else "cpu"
BATCH_SIZE = 10
MAX_EPOCHS = 12
CHECKPOINT_DIR = '\checkpoint'
EXPERIMENT_NAME = "nf"
dados_treino = coco_detection_yolo_format_train(
dataset_params = {
'data_dir': dataset_params['data_dir'],
'images_dir': dataset_params['train_images_dir'],
'labels_dir': dataset_params['train_labels_dir'],
'classes': dataset_params['classes']
},
dataloader_params = {
'batch_size': BATCH_SIZE,
'num_workers': 1
}
)
val_dados = coco_detection_yolo_format_val(
dataset_params = {
'data_dir': dataset_params['data_dir'],
'images_dir': dataset_params['val_images_dir'],
'labels_dir': dataset_params['val_labels_dir'],
'classes': dataset_params['classes']
},
dataloader_params = {
'batch_size': BATCH_SIZE,
'num_workers': 1
}
)
dados_treino.dataset.transforms
dados_treino.dataset.plot()
🤔 А знаете ли вы, что...
Python обладает обширной документацией и активным сообществом разработчиков.
вот как вам следует передавать наборы данных в super_gradients
. Я протестировал эту структуру папок на MacOS. В Windows вам необходимо переписать все символы «/» на «\".
# this is an example for macOS/Linux
# tested with coco8 dataset
# https://github.com/ultralytics/assets/releases/download/v0.0.0/coco8.zip
dataset_params = {
'data_dir': "dataset",
'train_images_dir': "images/val",
'train_labels_dir': "labels/val",
'val_images_dir': "images/val",
'val_labels_dir': "labels/val",
'classes': ['cabecalho', 'assinatura', 'rodape']
}
Структура папок следующая:
- dataset
- dataset/images
- dataset/images/val
- dataset/images/val/000000000049.jpg
- ...
- dataset/images/train
- dataset/images/train/000000000034.jpg
- ...
- dataset/labels/val
- dataset/labels/val/000000000049.txt
- ...
- dataset/labels/train
- dataset/labels/train/000000000034.txt
- ...