Итак, я возился с API-интерфейсом обнаружения объектов Tennsflow и, в частности, с переобучением моделей, по сути, делая это .Я сделал так, чтобы он обнаружил мой объект довольно хорошо с небольшим количеством изображений.Но я хотел увеличить количество изображений, с которыми я тренируюсь, однако процесс маркировки был долгим и скучным, поэтому я нашел набор данных с обрезанными изображениями, поэтому в изображении присутствует только мой объект.
Если есть способотправлять целые изображения без надписей, их тоже нужно обучить с использованием API tenorflow. Я не нашел его, но подумал, что создать программу, которая пометит все изображение, не так уж сложно.
Формат маркировки - csv.файл со следующими записями: имя файла, ширина, высота, класс, xmin, ymin, xmax, ymax.
Это мой код:
import os
import cv2
path = "D:/path/to/image/folder"
directory = os.fsencode(path)
text = open("D:/result/train.txt","w")
for file in os.listdir(directory):
filename = os.fsdecode(file)
if filename.endswith(".jpg"):
impath= path + "/" + filename
img = cv2.imread(impath)
res = filename+","+ str(img.shape[1])+","+str(img.shape[0])+",person,1,1,"+str(img.shape[1]-1) +"," +str(img.shape[0]-1)+"\n"
text.write(res)
print(res)
text.close()
Кажется, это работает нормально.
Теперь вот проблема.После преобразования .txt в .csv и запуска тренировки, пока потери не перестанут уменьшаться, мое обнаружение на моем тестовом наборе ужасно.Он помещает огромную ограничивающую рамку вокруг всего изображения, как будто он обучен распознавать только края изображения.
Я полагаю, что каким-то образом учится распознавать края изображений, так как маркировка вокруг всего изображения.Но как мне научиться «видеть», что на картинке?Любая помощь будет оценена.