[英]Convolution neural network?
我正在為“情緒檢測”項目。
作為制作完整產品的第一步,我們從圖像處理開始。 我從互聯網上了解到卷積神經網絡是最好的方法。
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)是Matrix的復雜范圍之和的值(抱歉,代碼非常粗糙,我從今天早上開始編寫)。
好吧,我要問的問題是如何設計或獲取要存儲權重的矩陣。
1)我可以僅使用一種矩陣來進行每種對象檢測(即粗略的單層CNN,這將為“汽車”和“面部”提供不同的值)還是應該為“汽車”和“面孔”?
2)如何處理不同大小的同一物體? 我在Internet上看到的一種解決方案是繼續調整原始圖像的大小。 我想知道是否有更快的方法?
3)在反向傳播中,為獲得最佳權重矩陣,我們給出了哪些粗略條件?
首先,如果您認真計划使用神經網絡,我建議您從基礎開始。 我想說,該頁面對於開始使用神經網絡真的很好。 一旦對神經網絡有了基本的了解,您就可以嘗試使用框架或Theano之類的東西來嘗試構建CNN。
老實說,我不太清楚您的代碼是關於什么的,但是我會盡力回答您的問題。
我想您在這里談論的是重量矩陣。 CNN在卷積層中的作用是:“提取特征”。 那就是大家所說的。 但是……這不是一個容易量化的值。 因此,您需要多少個過濾器圖(權重矩陣在CNN中稱為過濾器圖)取決於您的用例。 因此,您可能必須堅持使用測試和驗證集進行跟蹤和錯誤處理,以調整過濾器映射的數量,或者通常是調整超參數的數量。
這是Krizhevsky,Sutskever和Hinton的一篇很酷的論文 ,他們在GPU上做一些瘋狂的事情,並且將圖像固定為一定的大小。 如果您找到解決此限制的好方法,請告訴我。
您通常要做的是防止過度擬合。 研究人員想到了多種方法和方法來實現這一目標。 輟學,保持低體重或進行預訓練,僅舉幾例。
我再次建議您從給定的來源開始。 相比您在聽我講一些我可能不太了解的技術術語時,它更容易理解。
親切的問候,
PS:隨時糾正我
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.