Проблема с объединением наборов данных изображений для обнаружения объектов.Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Проблема с объединением наборов данных изображений для обнаружения объектов.

Сообщение Anonymous »

Я работаю над проектом по обнаружению и обходу препятствий. Было указано, что на пути будут препятствия кубической/полукубовой или сферической/полусферической формы, которые необходимо обнаружить и избежать.
Я использовал наборы данных изображений из Roboflow для сфер и кубоидов. . Когда я попытался объединить два набора данных в Roboflow в качестве третьего набора данных, он мне не позволил. Я даже модифицировал файл аннотаций для второго класса и вручную объединил оба набора данных в одну папку, экспортировав его zip для обучения пользовательской модели YOLO v5 на Ultralytics, но модель не обладает необходимой точностью и скоростью даже после изменения. различные варианты YOLO v5. Он продолжает обнаруживать несуществующие сферы, не рисуя ограничивающую рамку. А когда он даже обнаруживает правильный кубоид, это занимает много времени, и его приходится размещать очень близко к камере моего ноутбука.
Как решить эту проблему?
Прикрепляю код, который использовал для изменения файла аннотаций:
import os

def modify_annotations_in_folders(base_folder_path, class_id_map):
# Folders: train, test, and valid
folders = ['train', 'test', 'valid']

# Loop through each folder
for folder in folders:
folder_path = os.path.join(base_folder_path, folder, 'labels') # Assuming labels are stored in 'labels' subfolder
if os.path.exists(folder_path):
print(f"Processing folder: {folder_path}")
# Loop through each file in the folder
for filename in os.listdir(folder_path):
if filename.endswith(".txt"): # Only process text files
file_path = os.path.join(folder_path, filename)

# Read the file
with open(file_path, 'r') as file:
lines = file.readlines()

# Modify the first character (class ID) of each line
new_lines = []
for line in lines:
parts = line.strip().split() # Split line by spaces
class_id = parts[0] # Class ID is the first part
if class_id in class_id_map:
new_class_id = class_id_map[class_id] # Map the old class ID to new one
parts[0] = new_class_id # Update class ID
new_lines.append(" ".join(parts)) # Rebuild the line

# Write the modified lines back to the file
with open(file_path, 'w') as file:
file.write("\n".join(new_lines) + "\n")

print(f"Modified all annotations in {folder} folder.")
else:
print(f"Folder {folder_path} does not exist!")

base_folder_path = "D:/Rover/Obstacle Avoidance/box.v2i.yolov5pytorch" # Path to the folder containing 'train', 'test', and 'valid' folders
class_id_map = {"0": "1"} # Example: Mapping of old class IDs to new ones
modify_annotations_in_folders(base_folder_path, class_id_map)


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

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

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

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

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

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

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