图像平均池化
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了图像平均池化相关的知识,希望对你有一定的参考价值。
参考技术A 一. 池化简介平均池化:将图片按照固定大小网格分割,网格内的像素值取网格内所有像素的平均值。
池化:使用均等大小的网格将图片分割,并求网格内代表值的过程。
池化是卷积神经网络(convolutional neural network)中非常重要的处理方式,能够有效地降低图像的维度。
平均池化定义:
二. 将输入图像用4*4网格做平均池化
import cv2
import numpy as np
# average pooling
def average_pooling(img, G=4):
out = img.copy()
H, W, C = img.shape
Nh = int(H / G)
Nw = int(W / G)
for y in range(Nh):
for x in range(Nw):
for c in range(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)
return out
# Read image
img = cv2.imread("../paojie.jpg")
# Average Pooling
out = average_pooling(img)
# Save result
cv2.imwrite("out.jpg", out)
cv2.imshow("result", out)
cv2.waitKey(0)
cv2.destroyAllWindows()
三. 输出结果
四. 深度学习中的平均池化操作,以pytorch库为例
import cv2
import numpy as np
import torch
import torch.nn as nn
img = cv2.imread('../paojie.jpg',0) #读入灰度图像
img = np.array(img,dtype='float32')
img = torch.from_numpy(img.reshape(1,1,img.shape[0],img.shape[1])) # 将灰度图像转换为tensor
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("result", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
五. pytorch中的平均池化输出结果( AvgPool2d() 函数 )
可以看到,pytorch中 AvgPool2d 函数,平均池化后降低了图像的维度。
六. 参考内容
https://www.cnblogs.com/wojianxin/p/12496509.html
以上是关于图像平均池化的主要内容,如果未能解决你的问题,请参考以下文章