TensorFlow 二进制分类

TensorFlow Binary Classification

我正在尝试使用 TensorFlow 进行简单的二值图像分类,但结果到处都是。

分类器应该检查我的门是打开还是关闭。我已经有一些python脚本来旋转和裁剪图像以消除周围环境,图像大小为130w*705h。

图片如下。我知道我一定是做错了什么,因为图像几乎是白天和黑夜的不同,但它仍然给出完全随机的结果。有小费吗?如果 TF 太复杂,是否有更简单的库或云服务可供我使用?

感谢任何帮助,谢谢!

大门关闭

大门打开

只需计算图像的平均灰度值并定义阈值。如果你想要更复杂的计算平均梯度或类似的东西。您的问题似乎太简单了,无法使用 TF 或 CV。

考虑到后,我决定在一些过滤和边缘检测之后使用平均灰度。

我认为它很适合我的情况,谢谢!

一些代码:

import cv2
import os
import numpy as np

# https://medium.com/sicara/opencv-edge-detection-tutorial-7c3303f10788

inputPath = '/Users/axelsariel/Desktop/GateImages/Cropped/'

# subDir = 'Closed/'
subDir = 'Open/'

openImagesList = os.listdir(inputPath + subDir)
for image in openImagesList:
    if not image.endswith('.JPG'):
        openImagesList.remove(image)

index = 0
while True:
    image = openImagesList[index]

    img = cv2.imread(inputPath + subDir + image)

    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    gray = cv2.medianBlur(gray,11)
    grayFiltered = cv2.bilateralFilter(gray, 7, 50, 50)

    edgesFiltered = cv2.Canny(grayFiltered, 80, 160)

    images = np.hstack((gray, grayFiltered, edgesFiltered))
    cv2.imshow(image, images)


    key = cv2.waitKey()

    if key == 3:
        index += 1
    elif key == 2:
        index -= 1
    elif key == ord('q'):
        break
    cv2.destroyAllWindows()

过滤后的平均灰度:

筛选步骤: