Найти в Дзене
Орчанин

Автоматическое переименование файлов в последовательную нумерацию. Подготовка датасета для детекции изображений.

Основная цель, собрать скриншоты с видеокамер, для дальнейшей их разметки и формирования датасета, который будет применяться в моих моделях на Pytorch для классификации(3-5 классов) и детекции через сеть Yolo. Один из самых нудных и рутинных этапов пройден(предстоит ещё разметка через CVAT), собрал 2237 скринов. По задумке у меня будет всего 2 объекта для детекции, на каждом скрине +- по 5 таких объектов, т.е всего 10 000, буду надеяться, что сбалансирую по 5000 на объект. Как видим названия файлов получились очень длинные, подтягивается название видеокамеры/сервера + время + дата, мне это совершенно не нужно. Решил написать простой скрипт для переименования файлов в последовательную нумерацию с 1 до 2 237. Так как это всё задачи на машинное обучение, то конечно и скрипт будет на Python: import os
# Путь к папке с файлами
folder_path = r'C:\Users\User\PycharmProjects\ML_stepik\1_dataset_yolo'
# Получаем список всех файлов в папке (без внутренних папок, если они проскочили)
files = [

Основная цель, собрать скриншоты с видеокамер, для дальнейшей их разметки и формирования датасета, который будет применяться в моих моделях на Pytorch для классификации(3-5 классов) и детекции через сеть Yolo.

Один из самых нудных и рутинных этапов пройден(предстоит ещё разметка через CVAT), собрал 2237 скринов. По задумке у меня будет всего 2 объекта для детекции, на каждом скрине +- по 5 таких объектов, т.е всего 10 000, буду надеяться, что сбалансирую по 5000 на объект.

Вот что получилось
Вот что получилось

Как видим названия файлов получились очень длинные, подтягивается название видеокамеры/сервера + время + дата, мне это совершенно не нужно. Решил написать простой скрипт для переименования файлов в последовательную нумерацию с 1 до 2 237. Так как это всё задачи на машинное обучение, то конечно и скрипт будет на Python:

import os

# Путь к папке с файлами
folder_path = r'C:\Users\User\PycharmProjects\ML_stepik\1_dataset_yolo'

# Получаем список всех файлов в папке (без внутренних папок, если они проскочили)
files = [f for f in os.listdir(folder_path) if os.path.isfile(os.path.join(folder_path, f))]

# Сортируем файлы по имени (если это требуется, мне было удобно, так как скрины были по названию с камер)
files.sort()

# Переименовываем файлы в цифровой формат с 1 по 2237 для этого не забываем ставить start=1
for i, filename in enumerate(files, start=1):
# Получаем расширение файла
ext = os.path.splitext(filename)[1]

# Формируем новое имя
new_name = f"{i}{ext}"

# Полные пути
old_path = os.path.join(folder_path, filename)
new_path = os.path.join(folder_path, new_name)

# Переименовываем, для наглядности принтуем
os.rename(old_path, new_path)
print(f"Переименован: {filename} → {new_name}")

print("---------Все файлы успешно переименованы!-------------------")

Секунд 5 и всё готово:

Упорядочивание файлов через числовую нумерацию
Упорядочивание файлов через числовую нумерацию

Можете сохранить в удобный для вас вид, например в моём случае можно было бы, вот так: 1_videocam1.jpeg.......2237_videocam34.jpeg.

Часто попадались подобные задачи, не только в машинном зрении, где требуется упорядочивание файлы/папки, через числовую нумерацию. Надеюсь скрипт будет полезен для вас. Если несложно подпишитесь на канал, буду благодарен. Если что не понятно пишите вопросы, с радостью отвечу.