Маска R-CNN Opencv, отображающая множество результатов - PullRequest
0 голосов
/ 08 мая 2020

У меня проблема с результатами маски R-CNN (opencv). Хотел бы распознать дорожные знаки (сейчас тестирую пешеходный переход). Как видно на картинках, маска отображает много результатов (иногда это неправильный результат). У меня вопрос: Где проблема? : Проблема с моделью DL? Проблема с OpenCV? или что-то еще?

Моя модель DL очень точная - acc ~ 0.995 .

Моя модель соответствует 3 классам (3 разных дорожных знака)

figure = plt.figure()
ss = cv2.ximgproc.segmentation.createSelectiveSearchSegmentation()
z = 0
for e, i in enumerate(os.listdir(test_dir)):
    print(e, i)

    if i.startswith("cross"):
        img = cv2.imread(os.path.join(test_dir, i))
        img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
        plt.subplot(3, 3, z+1)
        plt.tight_layout()
        z += 1
        ss.setBaseImage(img)
        ss.switchToSelectiveSearchFast()
        ssresults = ss.process()
        imout = img.copy()
        for w, result in enumerate(ssresults):
            if w < 2000:
                x, y, w, h = result
                timage = imout[y:y+h, x:x+w]
                resized = cv2.resize(timage, (100, 100), interpolation=cv2.INTER_AREA)
                img = np.expand_dims(resized, axis=0)
                out = model.predict(img/255.0, batch_size=10)
                if out[0][0] == 1:
                    cv2.rectangle(imout, (x, y), (x+w, y+h), (0, 255, 0), 1, cv2.LINE_AA)
        plt.xticks([])
        plt.yticks([])
        plt.imshow(imout)
plt.show()

введите описание изображения здесь

...