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天前
|
数据采集 缓存 定位技术
网络延迟对Python爬虫速度的影响分析
网络延迟对Python爬虫速度的影响分析
|
6天前
|
Python
Python中的异步编程:使用asyncio和aiohttp实现高效网络请求
【10月更文挑战第34天】在Python的世界里,异步编程是提高效率的利器。本文将带你了解如何使用asyncio和aiohttp库来编写高效的网络请求代码。我们将通过一个简单的示例来展示如何利用这些工具来并发地处理多个网络请求,从而提高程序的整体性能。准备好让你的Python代码飞起来吧!
17 2
|
5天前
|
机器学习/深度学习 计算机视觉 网络架构
为什么卷积现在不火了:CNN研究热度降温的深层原因分析
纵观近年的顶会论文和研究热点,我们不得不承认一个现实:CNN相关的研究论文正在减少,曾经的"主角"似乎正逐渐淡出研究者的视野。
25 11
为什么卷积现在不火了:CNN研究热度降温的深层原因分析
|
5天前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习中的卷积神经网络:从理论到实践
【10月更文挑战第35天】在人工智能的浪潮中,深度学习技术以其强大的数据处理能力成为科技界的宠儿。其中,卷积神经网络(CNN)作为深度学习的一个重要分支,在图像识别和视频分析等领域展现出了惊人的潜力。本文将深入浅出地介绍CNN的工作原理,并结合实际代码示例,带领读者从零开始构建一个简单的CNN模型,探索其在图像分类任务中的应用。通过本文,读者不仅能够理解CNN背后的数学原理,还能学会如何利用现代深度学习框架实现自己的CNN模型。
|
4天前
|
机器学习/深度学习 人工智能 算法框架/工具
深度学习中的卷积神经网络(CNN)及其在图像识别中的应用
【10月更文挑战第36天】探索卷积神经网络(CNN)的神秘面纱,揭示其在图像识别领域的威力。本文将带你了解CNN的核心概念,并通过实际代码示例,展示如何构建和训练一个简单的CNN模型。无论你是深度学习的初学者还是希望深化理解,这篇文章都将为你提供有价值的见解。
|
2天前
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的【垃圾识别系统】实现~TensorFlow+人工智能+算法网络
垃圾识别分类系统。本系统采用Python作为主要编程语言,通过收集了5种常见的垃圾数据集('塑料', '玻璃', '纸张', '纸板', '金属'),然后基于TensorFlow搭建卷积神经网络算法模型,通过对图像数据集进行多轮迭代训练,最后得到一个识别精度较高的模型文件。然后使用Django搭建Web网页端可视化操作界面,实现用户在网页端上传一张垃圾图片识别其名称。
15 0
基于Python深度学习的【垃圾识别系统】实现~TensorFlow+人工智能+算法网络
|
5天前
|
机器学习/深度学习 人工智能 自动驾驶
深入解析深度学习中的卷积神经网络(CNN)
深入解析深度学习中的卷积神经网络(CNN)
16 0
|
1天前
|
存储 Python
Python编程入门:打造你的第一个程序
【10月更文挑战第39天】在数字时代的浪潮中,掌握编程技能如同掌握了一门新时代的语言。本文将引导你步入Python编程的奇妙世界,从零基础出发,一步步构建你的第一个程序。我们将探索编程的基本概念,通过简单示例理解变量、数据类型和控制结构,最终实现一个简单的猜数字游戏。这不仅是一段代码的旅程,更是逻辑思维和问题解决能力的锻炼之旅。准备好了吗?让我们开始吧!
|
1天前
|
机器学习/深度学习 人工智能 TensorFlow
人工智能浪潮下的自我修养:从Python编程入门到深度学习实践
【10月更文挑战第39天】本文旨在为初学者提供一条清晰的道路,从Python基础语法的掌握到深度学习领域的探索。我们将通过简明扼要的语言和实际代码示例,引导读者逐步构建起对人工智能技术的理解和应用能力。文章不仅涵盖Python编程的基础,还将深入探讨深度学习的核心概念、工具和实战技巧,帮助读者在AI的浪潮中找到自己的位置。
|
3天前
|
设计模式 算法 搜索推荐
Python编程中的设计模式:优雅解决复杂问题的钥匙####
本文将探讨Python编程中几种核心设计模式的应用实例与优势,不涉及具体代码示例,而是聚焦于每种模式背后的设计理念、适用场景及其如何促进代码的可维护性和扩展性。通过理解这些设计模式,开发者可以更加高效地构建软件系统,实现代码复用,提升项目质量。 ####

热门文章

最新文章