Алгоритм не может найти изображения

Я разрабатываю алгоритм с использованием 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 обладает обширной документацией и активным сообществом разработчиков.


50
1

Ответ:

Решено

вот как вам следует передавать наборы данных в 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 
- ...