我正在做一个“情绪检测”项目。
作为制作完整产品的第一步,我们从图像处理开始。我从互联网上了解到卷积神经网络是最好的方法。
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)在反向传播中,我们给出的获得优化权重矩阵的粗略条件是什么?