【问题标题】:Convolution neural network?卷积神经网络?
【发布时间】:2015-07-22 03:57:43
【问题描述】:

我正在做一个“情绪检测”项目。

作为制作完整产品的第一步,我们从图像处理开始。我从网上了解到,卷积神经网络是最好的方法。

import cv2
import numpy as np
def sum_cnn(image,x,y):
    x1,y1=np.shape(image)
    temp=image

    for i in range(0,x1-x):
        for j in range(0,y1-y):
            temp1=np.sum(image[i:i+x,j:j+y])/(x*y)
            if temp1 in range(850000,1100000):
                cv2.rectangle(temp, (i, j), (i+20, j+20), (0, 255, 0), 2)
                print "\n"


    return temp


image =cv2.imread('test.jpg')
image=cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
image=np.matrix(image)

temp=sum_cnn(image,95,95)

cv2.imshow('Processed Video', temp)
cv2.imwrite('1.jpg',temp)

print "Done"

上面是我写的代码——值(850000,1100000)是矩阵的卷积范围之和的值(抱歉代码很粗糙,我今天早上开始写)。

我要问的问题是如何设计或获得一个矩阵来存储权重。

1) 对于每种对象检测,我可以只使用一个矩阵吗(即粗略的单层 CNN,它将为“汽车”和“人脸”提供不同的值)或者我应该有单独的矩阵对于“汽车”和“人脸”?

2) 如何处理同一物体的不同尺寸?我在 Internet 上看到的一种解决方案是不断调整原始图像的大小。我想知道是否有更快的方法?

3) 在反向传播中,我们给出哪些粗略条件来获得优化的权重矩阵?

【问题讨论】:

    标签: python image-processing matrix conv-neural-network


    【解决方案1】:

    首先,如果您认真计划使用神经网络,我会 建议您从basics 开始。那个页面真的很好 我会说开始使用神经网络。一旦有了基本 了解神经网络,您可以尝试使用框架 或类似 Theano 的东西来尝试构建一个 CNN。

    说实话,我不太确定您的代码是关于什么的,但我会尝试 尽我所能回答您的问题。

    1. 我猜你在这里谈论的是权重矩阵。什么是美国有线电视新闻网 在其卷积层中所做的是:“提取特征”。就是这样 每个人都叫它。但是 tbh... 这不是一个容易量化的值。所以 你有多少个过滤器映射(权重矩阵在 CNN 中称为过滤器映射) 需要取决于您的用例。因此你可能不得不坚持 跟踪和错误测试和验证集以调整数量 您的过滤器映射或更确切地说是一般的超参数。

    2. 这是一个很酷的paper,作者是 Krizhevsky、Sutskever 和 Hinton,其中 他们用 GPU 做了一些疯狂的事情,他们确实将他们的图像修复到 一定大小。如果您找到绕过此限制的好方法,请 告诉我。

    3. 您通常想要做的是防止过度拟合。有多个 研究人员想到的实现这一目标的方法和方法。 辍学,保持低权重或预训练等等。

    我再次建议您从给定的来源开始。它会成功的 比你听我胡言乱语更容易理解 一些我自己可能没有完全理解的技术术语。

    亲切的问候,

    PS:欢迎指正

    【讨论】:

    • 我同意这里。 CNN 可能不是您可以编写脚本的东西。一个很好的学习和理解来源是相应的斯坦福课程:cs231n.stanford.edu 所有材料,包括教程和代码都是开放的。由于您已经在 Python 世界中,Tensorflow 也是一个很好的库,特别是因为有许多现有的 CNN 示例和所有其他类型的神经网络可用,您可以使用它们来定位。
    猜你喜欢
    • 2017-01-01
    • 1970-01-01
    • 2020-11-01
    • 2020-10-07
    • 2020-10-19
    • 2020-10-19
    • 2018-05-01
    • 2020-08-20
    相关资源
    最近更新 更多