平均池(Average pooling):將圖片分成固定大小的網格,網格中的像素值取網格中所有像素的平均值。
Pooling:用大小相等的網格劃分圖片,並在網格中找到代表值的過程。
池化是卷積神經網絡中壹種非常重要的處理方法,可以有效地降低圖像的維數。
平均池的定義:
?
2.用4*4的網格平均匯集輸入圖像。
導入cv2
將numpy作為np導入
#平均池
def average_pooling(img,G=4):
out = img.copy()
h,W,C = img.shape
Nh = int(H / G)
Nw = int(W / G)
對於範圍內的y(Nh):
對於範圍內的x(Nw):
對於範圍(C)內的C:
out[G*y:G*(y+1),G*x:G*(x+1),c]= NP . mean(out[G * y:G *(y+1),G*x:G*(x+1),c])。astype(np.int)
退回去
#讀取圖像
img = cv2.imread("../paojie.jpg”)
#平均池
out = average_pooling(img)
#保存結果
cv2.imwrite("out.jpg ",out)
cv2.imshow("結果",out)
cv2.waitKey(0)
cv2.destroyAllWindows()
三。輸出結果
4.深度學習中的平均池操作,以pytorch庫為例。
導入cv2
將numpy作為np導入
進口火炬
將torch.nn作為nn導入
img = cv2.imread('../paojie.jpg ',0)?#讀入灰度圖像
img = np.array(img,dtype='float32 ')
img = torch . from _ numpy(img . shape(1,1,img.shape[0],img.shape[1])?#將灰度圖像轉換為張量
avgPool = nn。AvgPool2d(4)?#4*4窗口,步長為4的平均池。
img = avgPool(img)
img = torch.squeeze(img)?#刪除1的維度
img = img.numpy()。astype('uint8 ')?#轉換格式並準備輸出。
cv2.imwrite("out.jpg ",img)
cv2.imshow("結果",img)
cv2.waitKey(0)
cv2.destroyAllWindows()
5.pytorch中的平均池化輸出結果(AvgPool2d()函數)
可以看出pytorch中的AvgPool2d函數降低了平均池化後圖像的維度。
不及物動詞參考內容
blogs.com/wojianxin/p/12496509.html