Проблема с относительными путями в файле data.yaml при попытке обучения пользовательской модели yolo.Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Проблема с относительными путями в файле data.yaml при попытке обучения пользовательской модели yolo.

Сообщение Anonymous »

Я пытаюсь создать конвейер обучения для обучения пользовательской модели yolov9 с введенными пользователем помеченными изображениями.
У меня возникла проблема: если я заставлю свой файл data.yaml использовать относительное пути, я получаю ошибку:

Код: Выделить всё

RuntimeError: Dataset 'OIT_model/customOIT/customdatasetyolo/data.yaml' error
Dataset 'OIT_model/customOIT/customdatasetyolo/data.yaml' images not found , missing path 'C:\GitHub\Anomaly_detection_combine\OIT_model\Anomaly_detection_combine\OIT_model\customOIT\customdatasetyolo\Anomaly_detection_combine\OIT_model\customOIT\customdatasetyolo\val'
Что еще более странно, так это то, что путь, упомянутый в ошибке,

Код: Выделить всё

'C:\\GitHub\\Anomaly_detection_combine\\OIT_model\\Anomaly_detection_combine\\OIT_model\\customOIT\\customdatasetyolo\\Anomaly_detection_combine\\OIT_model\\customOIT\\customdatasetyolo\\val'
это не путь, который существует или где-либо запрашивается. Фактический путь:

Код: Выделить всё

'C:\\GitHub\\Anomaly_detection_combine\\OIT_model\\customOIT\\customdatasetyolo\\val'
по какой-то причине первая часть пути повторяется 3 раза.
Это файл data.yaml:

Код: Выделить всё

path: OIT_model/customOIT/customdatasetyolo
train: OIT_model/customOIT/customdatasetyolo/train
val: OIT_model/customOIT/customdatasetyolo/val
nc: 1
names: ['5']
и это код, с которого начинается обучение:

Код: Выделить всё

def train_custom_dataset_yolo(data_path, epochs=100, imgsz=64, verbose=True):
model = YOLO("OIT_model/yolov9c.pt")
# Specify the save directory for training runs
save_dir = 'OIT_model/customOIT/yolocustomtrainoutput'
if os.path.exists(save_dir):
for file in os.listdir(save_dir):
file_path = os.path.join(save_dir, file)
if os.path.isfile(file_path) or os.path.islink(file_path):
os.unlink(file_path)
elif os.path.isdir(file_path):
shutil.rmtree(file_path)
os.makedirs(save_dir, exist_ok=True)
model.train(data=data_path, epochs=epochs, imgsz=imgsz, verbose=verbose, save_dir=save_dir)
return
train_custom_dataset_yolo('OIT_model/customOIT/customdatasetyolo/data.yaml', epochs=1,imgsz=64, verbose=True)
Однако очень странно, когда я заменяю относительные пути абсолютными, например:

Код: Выделить всё

path: C:/GitHub/fix/Anomaly_detection_combine/OIT_model/customOIT/customdatasetyolo
train: C:/GitHub/fix/Anomaly_detection_combine/OIT_model/customOIT/customdatasetyolo/train
val: C:/GitHub/fix/Anomaly_detection_combine/OIT_model/customOIT/customdatasetyolo/val
nc: 1
names: ['5']
обучение работает без проблем. Использование абсолютного пути для меня не вариант, так как это приложение должно воспроизводиться на других машинах.

Подробнее здесь: https://stackoverflow.com/questions/790 ... custom-mod
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»