как разделить датасет по папкам с именами классов

создали в label studio датасет для обучения модели распознавания животных на основе yolov5, и столкнулись с проблемами:

  1. после экспорта данных все изображения в единой папке, не по классам, как и аннотации, плюс имена получили что-то странное в начале "00a2537c-cow2387.jpg", такая же ситуация и с аннотациями "00a2537-cow2387.txt" подскажите пожалуйста скрипт, чтобы разделить датасет по папкам согласно названиям классов: cow, sheep, wolf
  2. Почистив один класс руками до 1к изображений в ручную столкнулся с той же сложностью - вытащить аннтоации из папки в соответстии с именами изображений прошу прощения за кривизну вопроса

Ответы (1 шт):

Автор решения: strawdog

я бы мог порекомендовать что-то подобного рода:

import shutil

dirname = pathlib.Path(Путь к папке с файлами)
mysets = ["cow", "sheep", "wolf"]
allfiles = list(dirname.glob('**/*'))

for i in mysets:
    setdir = dirname/i
    setdir.mkdir(parents=True, exist_ok=True)
    for j in allfiles:
        if i in j.stem:
            shutil.copyfile(str(j), str(setdir/j.name)) 

настоятельно рекомендую сначала разобраться с тем, что этот скрипт делает, а потом уже применять.

→ Ссылка