圖像最大池化


一. 最大池化

    池化:把圖片使用均等大小網格分割,並求網格內代表值的操作

    最大池化:將網格中的最大值作為這個網格的代表值


二. 使用4*4網格對圖像進行最大池化操作

import cv2

import numpy as np

# max pooling,G is the size of the window

def max_pooling(img, G=4):

    # Max Pooling

    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.max(out[G*y:G*(y+1), G*x:G*(x+1), c])

    return out

# Read image

img = cv2.imread("../paojie.jpg")

# Max pooling

out = max_pooling(img)

# Save result

cv2.imwrite("out.jpg", out)

cv2.imshow("result", out)

cv2.waitKey(0)

cv2.destroyAllWindows()

 


三. 輸出結果:


最大池化后圖像

原圖

四. 利用pytorch中MaxPool2d函數對圖像進行最大池化

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

maxPool = nn.MaxPool2d(4)  #4*4的窗口,步長為4的最大池化

img = maxPool(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()

 


五. pytoch中MaxPool2d函數最大池化的輸出結果


MaxPool2d輸出結果

六. 參考內容

https://www.jianshu.com/p/2de998acee98


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM