【问题标题】:TensorFlow Binary ClassificationTensorFlow 二进制分类
【发布时间】:2021-04-10 23:56:34
【问题描述】:

我正在尝试使用 TensorFlow 进行简单的二值图像分类,但结果却一无所获。

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

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

感谢任何帮助,谢谢!

大门关闭

大门打开

【问题讨论】:

  • 你的网络是什么样子的??

标签: tensorflow machine-learning keras computer-vision tf.keras


【解决方案1】:

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

【讨论】:

  • 非常感谢!!我从来没有想过这样的事情,我会尝试计算平均灰度值,看看是否可行。谢谢!
  • 我使用openCV将图像转换为灰度,然后使用块状平均值计算平均灰度。我绘制了平均值,见 here 。我看到它们有些分开,尽管有些值重叠。是否有一些过滤器或类似的东西可以帮助解决这个问题?
【解决方案2】:

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

我认为它对我的情况非常有用,谢谢!

一些代码:

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()

过滤后的平均灰度:

过滤步骤:

【讨论】:

    猜你喜欢
    • 2017-05-30
    • 1970-01-01
    • 2016-05-18
    • 2017-07-25
    • 2018-01-09
    • 2018-10-22
    • 2020-11-19
    • 2017-02-10
    • 1970-01-01
    相关资源
    最近更新 更多