Почему маркировка обучающих данных таким образом приводит к обнаружению плохих объектов при переподготовке предварительно обученных моделей с использованием API обнаружения объектов tenorflow? - PullRequest
0 голосов
/ 18 февраля 2019

Итак, я возился с 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 и запуска тренировки, пока потери не перестанут уменьшаться, мое обнаружение на моем тестовом наборе ужасно.Он помещает огромную ограничивающую рамку вокруг всего изображения, как будто он обучен распознавать только края изображения.

Я полагаю, что каким-то образом учится распознавать края изображений, так как маркировка вокруг всего изображения.Но как мне научиться «видеть», что на картинке?Любая помощь будет оценена.

1 Ответ

0 голосов
/ 19 февраля 2019

Модель точно предсказывает, для чего готовили: огромные ограничивающие рамки для всего изображения.Очевидно, что если ваши тренировочные данные содержат только поля с координатами [0, 0, 1, 1], модель изучит их и сделает прогноз для тестового набора.

Вы можете попытаться использовать вид увеличения: поместите ваши изображения на более крупный черно-серый холст и соответственно отрегулируйте ограничивающие рамки.Это то, что делает увеличение SSD, например.Тем не менее, не существует бесплатного и хорошего способа компенсировать отсутствие правильно обозначенного комплекта поездов.

...