「ムード検出」のプロジェクトに取り組んでいます。
完全な製品を作るための最初のステップとして、画像処理から始めました。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) は、行列の畳み込み範囲の合計の値です (コードが非常に粗雑で申し訳ありません。今朝書き始めました)。
私が求めている質問は、重みを格納するマトリックスを設計または取得する方法です。
1) あらゆる種類のオブジェクト検出 (つまり、「車」と「顔」に異なる値を与える大まかな単層 CNN) に対して 1 つのマトリックスだけで間に合わせることができますか、または "車」と「顔」?
2) 同じオブジェクトの異なるサイズを処理する方法は? インターネットで見つけた解決策の 1 つは、元の画像のサイズを変更し続けることです。より速いアプローチがあるかどうか知りたいですか?
3) 逆伝播において、最適化された重み行列を取得するために与える大まかな条件は何ですか?