我做了一個神經網絡,它工作正常,但我試圖用它來進行圖像識別。所以我製作了一個程序,它將圖像的每個3x3方塊取平均值,使其成爲RGB的1個元組而不是RGB的9個元組。那麼它會生成一大堆所有這些元組,所以我可以將它們饋入我的神經網絡。這裏要說的是轉換圖像轉換成可用的數據代碼:什麼是處理神經網絡圖像數據的更好方法?
from PIL import Image
def norm(lst):
newtemp = []
for value in lst:
if bool(value):
newtemp.append(value)
R = []
G = []
B = []
for value in xrange(len(newtemp)):
R.append(newtemp[value][0])
G.append(newtemp[value][1])
B.append(newtemp[value][2])
R = (sum(R)/len(R))/255.
G = (sum(G)/len(G))/255.
B = (sum(B)/len(B))/255.
return [R,G,B]
def imgConverter(img):
im = Image.open(img)
im = im.convert("RGB")
edge = 3
width = im.size[0]
height = im.size[1]
pix = im.load()
color = []
for x in xrange(0, width, edge):
for y in xrange(0, height, edge):
xmin = min(x+edge, width)-x
ymin = min(y+edge, height)-y
temp = [[] for _ in xrange(edge*edge)]
for xpos in xrange(0, xmin):
for ypos in xrange(0, ymin):
temp[ymin*ypos+xpos] = pix[x+xpos, y+ypos]
color.append(norm(temp))
return color
def datacrunching(color):
newdata = []
for RGB in xrange(3):
for value in xrange(len(color)):
newdata.append(color[value][RGB])
return newdata
data = str(datacrunching(imgConverter("cat0.jpg")))
file = open("img_data.txt", "w")
file.write(data)
file.close()
它大大降低了數據處理,但即便如此,圖像是500×500將給lenght 83667陣列,這是相當大的。因爲數組中的每個數字都是輸入節點,所以它的速度太慢,這是我通過將每個3x3正方形分解爲1x1正方形來減少圖像數據長度的方式,這個問題或者將其送入的方式我的神經網絡?如果是我餵食的方式,我該怎麼做?有人可以幫忙,謝謝!
您可能需要稍微閱讀一下「圖像特徵提取」(Google是您的朋友);不能給出更多的建議,因爲這非常依賴於手頭的任務。 –