深度学习——池化

学习《深度学习——入门与实践》一书代码实现

卷积神经网络池化步骤的实现,对之前处理好的雪佛兰科迈罗图像2进行最大池化

书上没有加convert(‘RGB’),导致了报错。

查阅了别人的博客,得知“

在数字图像处理中,针对不同的图像格式有其特定的处理算法。所以,在做图像处理之前,我们需要考虑清楚自己要基于哪种格式的图像进行算法设计及其实现。本文基于这个需求,使用python中的图像处理库PIL来实现不同图像格式的转换。

对于彩色图像,不管其图像格式是PNG,还是BMP,或者JPG,在PIL中,使用Image模块的open()函数打开后,返回的图像对象的模式都是“RGB”。而对于灰度图像,不管其图像格式是PNG,还是BMP,或者JPG,打开后,其模式为“L”。

通过之前的博客对Image模块的介绍,对于PNGBMPJPG彩色图像格式之间的互相转换都可以通过Image模块的open()save()函数来完成。具体说就是,在打开这些图像时,PIL会将它们解码为三通道的“RGB”图像。用户可以基于这个“RGB”图像,对其进行处理。处理完毕,使用函数save(),可以将处理结果保存成PNGBMPJPG中任何格式。这样也就完成了几种格式之间的转换。同理,其他格式的彩色图像也可以通过这种方式完成转换。当然,对于不同格式的灰度图像,也可通过类似途径完成,只是PIL解码后是模式为“L”的图像。

池化数字啊保留图片基本信息的情况下减小图片尺寸或称降维,由此、、又称为子采样或下采样。通过窗口



#-*- coding:utf-8 -*-
from PIL import Image
import numpy as np
import os

im_conv = Image.open('K:/python/py2/carConv1.jpg')
im_conv = np.array(im_conv)

def pooling (im_array):
    height, width = im_array.shape
    pool = [[0 for col in range(width//10)] for row in range(height//10)]
    p,q = [0,0]
    for i in range(0, height-10, 10):
        q = 0
        for j in range(0, width - 10, 10):
            pool[p][q] = im_array[(i):(i+10),(j):(j+10)].max()
            q = q + 1
        p = p + 1
    return pool

im_pool = pooling(im_conv)
im_pool = np.array(im_pool)
new_im = Image.fromarray(im_pool)
new_im = new_im.convert('RGB')
new_im.save("carPool.jpg")

你可能感兴趣的:(人工智能)