python深度学习之卷积神经网络(CNN)的使用,包括卷积与池化(附源码,超详细)

简介: python深度学习之卷积神经网络(CNN)的使用,包括卷积与池化(附源码,超详细)

卷积神经网络CNN是一类包含卷积计算且具有深度结构的前馈神经网络,是深度学习的代表算法之一。


卷积神经网络在设计中,四个核心关键是1:网络局部互联2:网络核权值共享3:下采样4:使用多个卷积层


1.卷积操作


是信号处理与数字图像处理领域中常用的方法,通过对图像进行卷积处理,能够实现图像的基本模糊,锐化,降低噪声,提取边缘特征等功能,是一种常见的线性滤波方法。


原图片如下

1666431638127.jpg

对图像进行卷积处理并且边缘锐化后如下

1666431648228.jpg

对图像进行卷积处理并且暗化后如下

1666431660684.jpg

源码如下

import  cv2
import  numpy as np
def conv(image,kernel):
    conv_b=convolve(image[:,:,0],kernel)
    conv_g=convolve(image[:,:,1],kernel)
    conv_r=convolve(image[:,:,2],kernel)
    output=np.dstack([conv_b,conv_g,conv_r])
    return output
#卷积处理
def convolve(image,kernel):
    h_kernel,w_kernel=kernel.shape
    h_image,w_image=image.shape
    h_output=h_image-h_kernel+1
    w_output=w_image-w_kernel+1
    output=np.zeros((h_output,w_output),np.uint8)
    for i in range(h_output):
        for j in range(w_output):
            output[i,j]=np.multiply(image[i:i+h_kernel,j:j+w_kernel],kernel).sum()
    return  output
path=r'p67.jpg'
input_img=cv2.imread(path)
#边缘锐化卷积核
kernel=np.array([[-1,-1,-1],[-1,9,-1],[-1,-1,-1]])
#变暗卷积核
#kernel=np.array([[0.1,0.1,0.1],[0.1,0.2,0.1],[0.1,0.1,0.1]])
output_img=conv(input_img,kernel)
cv2.imwrite(path.replace('.jpg','-processed.jpg'),output_img)
cv2.imshow('darked',output_img)
cv2.waitKey(0)



2:池化操作


通常在卷积后进行池化操作,池化是将图像按子区域进行压缩的操作,一般有两种方法,最大池化和平均池化,经过池化图像会压缩,对于有细小差别的两幅图像,池化具有平移不变性。即使两幅图有几个像素的偏移,仍然能获得基本一致的特种图,这对图像处理和识别非常重要


左一为原图,左二为原图的绿色通道,左三为绿色通道平均池化结果,最后一个为绿色通道最大池化结果

1666431722509.jpg

源码如下


import  numpy as np
from PIL import  Image
import  matplotlib.pyplot as plt
def AVGpooling(imgData,strdW,strdH):
    W,H=imgData.shape
    newImg=[]
    for i in range(0,W,strdH):
        line=[]
        for j in range(0,H,strdH):
            x=imgData[i:i+strdW,j:j+strdH]
            avgValue=np.sum(x)/(strdW*strdH)
            line.append(avgValue)
        newImg.append(line)
    return np.array(newImg)
def MAXpooling(imgData,strdW,strdH):
    W,H=imgData.shape
    newImg=[]
    for i in range(0, W, strdH):
     line = []
     for j in range(0, H, strdH):
         x = imgData[i:i + strdW, j:j + strdH]
         maxValue = np.max(x)
         line.append(maxValue)
     newImg.append(line)
    return np.array(newImg)
img=Image.open(r'大海.jpg')
r,g,b=img.split()
imgData=np.array(g)
np.array(b).shape
#原图
plt.subplot(221)
plt.imshow(img)
plt.axis('off')
#原始绿色通道图
plt.subplot(222)
plt.imshow(imgData)
plt.axis('off')
AVGimg=AVGpooling(imgData,2,2)
#平均池化图
plt.subplot(223)
plt.imshow(AVGimg)
plt.axis('off')
MAXimg=MAXpooling(imgData,2,2)
#最大池化图
plt.subplot(224)
plt.imshow(MAXimg)
plt.axis('off')
plt.show()
相关文章
|
5天前
|
人工智能 数据安全/隐私保护 异构计算
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
58 8
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
|
29天前
|
机器学习/深度学习 数据采集 算法
基于mediapipe深度学习的运动人体姿态提取系统python源码
本内容介绍了基于Mediapipe的人体姿态提取算法。包含算法运行效果图、软件版本说明、核心代码及详细理论解析。Mediapipe通过预训练模型检测人体关键点,并利用部分亲和场(PAFs)构建姿态骨架,具有模块化架构,支持高效灵活的数据处理流程。
|
15天前
|
小程序 PHP 图形学
热门小游戏源码(Python+PHP)下载-微信小程序游戏源码Unity发实战指南​
本文详解如何结合Python、PHP与Unity开发并部署小游戏至微信小程序。涵盖技术选型、Pygame实战、PHP后端对接、Unity转换适配及性能优化,提供从原型到发布的完整指南,助力开发者快速上手并发布游戏。
|
2月前
|
并行计算 算法 Java
Python3解释器深度解析与实战教程:从源码到性能优化的全路径探索
Python解释器不止CPython,还包括PyPy、MicroPython、GraalVM等,各具特色,适用于不同场景。本文深入解析Python解释器的工作原理、内存管理机制、GIL限制及其优化策略,并介绍性能调优工具链及未来发展方向,助力开发者提升Python应用性能。
131 0
|
3月前
|
API 数据安全/隐私保护 开发者
企业微信自动加好友软件,导入手机号批量添加微信好友,python版本源码分享
代码展示了企业微信官方API的合规使用方式,包括获取access_token、查询部门列表和创建用户等功能
|
25天前
|
机器学习/深度学习 传感器 数据采集
基于贝叶斯优化CNN-LSTM混合神经网络预测(Matlab代码实现)
基于贝叶斯优化CNN-LSTM混合神经网络预测(Matlab代码实现)
145 0
|
28天前
|
机器学习/深度学习 传感器 数据采集
【故障识别】基于CNN-SVM卷积神经网络结合支持向量机的数据分类预测研究(Matlab代码实现)
【故障识别】基于CNN-SVM卷积神经网络结合支持向量机的数据分类预测研究(Matlab代码实现)
107 0
|
2月前
|
机器学习/深度学习 数据采集 TensorFlow
基于CNN-GRU-Attention混合神经网络的负荷预测方法(Python代码实现)
基于CNN-GRU-Attention混合神经网络的负荷预测方法(Python代码实现)
|
3月前
|
机器学习/深度学习 人工智能 PyTorch
零基础入门CNN:聚AI卷积神经网络核心原理与工业级实战指南
卷积神经网络(CNN)通过局部感知和权值共享两大特性,成为计算机视觉的核心技术。本文详解CNN的卷积操作、架构设计、超参数调优及感受野计算,结合代码示例展示其在图像分类、目标检测等领域的应用价值。
181 7
|
4月前
|
机器学习/深度学习 数据采集 监控
基于CNN卷积神经网络和GEI步态能量提取的步态识别算法matlab仿真,对比不同角度下的步态识别性能
本项目基于CNN卷积神经网络与GEI步态能量提取技术,实现高效步态识别。算法使用不同角度(0°、45°、90°)的步态数据库进行训练与测试,评估模型在多角度下的识别性能。核心流程包括步态图像采集、GEI特征提取、数据预处理及CNN模型训练与评估。通过ReLU等激活函数引入非线性,提升模型表达能力。项目代码兼容Matlab2022a/2024b,提供完整中文注释与操作视频,助力研究与应用开发。

热门文章

最新文章

推荐镜像

更多