当前位置: 首页 > article >正文

机器学习第二十三讲:CNN → 用放大镜局部观察图片特征层层传递

机器学习第二十三讲:CNN → 用放大镜局部观察图片特征层层传递

资料取自《零基础学机器学习》。
查看总目录:学习大纲

关于DeepSeek本地部署指南可以看下我之前写的文章:DeepSeek R1本地与线上满血版部署:超详细手把手指南


CNN详解:图像理解的多层放大镜[^9-2]

卷积神经网络(CNN)就像给计算机装备了显微镜+望远镜的组合套装,通过逐层放大观察图像特征。以"识别橘猫图片"为例:

识别边缘轮廓
捕捉橘色条纹
输入图片
初级特征放大镜
中级特征望远镜
高级特征显微镜
橘猫!
一、核心原理(图像分析实验)

三层观察流程

  1. 局部扫描(3×3小窗口):
    猫耳边缘 = [[0.1, 0.8, 0.1],[0.7, 0.9, 0.6],[0.2, 0.7, 0.3]
    ]
    # 卷积核检测垂直接缝[^9-2]
    
  2. 特征抽象(最大池化):
    原图特征
    2x2网格中取最大值
    保留橘纹走向
  3. 全盘整合(全连接层):
    特征维度典型值说明
    绒毛密度0.87超过短毛猫阈值
    条纹间距0.65典型橘猫模式
    瞳孔形状0.92符合猫科特征

    判断输出:综合特征置信度达到93%[^9-2]

二、关键技术解析(智能修图软件案例)

三大核心装备

  1. 卷积核滤镜组 → PS软件的边缘检测工具

    • 横向梯度核:[[-1,0,1], [-2,0,2], [-1,0,1]]
    • 纵向梯度核:[[-1,-2,-1], [0,0,0], [1,2,1]]
    原图边缘 = 图片矩阵 * 卷积核  # 矩阵点积操作[^2-1]
    
  2. 池化压缩机 → 画作缩略图生成器

    • 最大池化:保留最明显的笔触特征
    • 平均池化:融合背景色调信息[^9-2]
  3. 激活函数开关 → 智能画笔压力感应

    传统画笔
    线性涂抹
    扁平化效果
    ReLU激活
    保留阳刻线条
    ^9-2
三、应用实例解析(自动驾驶视觉系统)

六层卷积网络实战

摄像头画面
车道线检测层
关键点保留
交通牌识别层
符号定位
行人轮廓层
紧急制动决策

参数实例

  • 训练数据:200万张道路图片
  • 卷积核数量:32→64→128通道递增
  • 准确率提升:从初训67%到精调98%[^10-1]
四、与传统网络对比(艺术生vs工程师画像)
对比维度全连接网络CNN[参考材料4]
观察方式整张画同时看按区域局部扫描效率提升20倍
参数数量1000x1000图片需10亿参数同尺寸图片仅百万参数内存占用减少90%
特征提取像素级记忆空间模式抽象抗干扰能力提升35%
训练时间实例MNIST数据集30分钟/10 epoch同任务3分钟/10 epoch[^9-2]速度提升10倍
五、调参要点(摄影爱好者进阶指南)

三档参数调节

  1. 卷积核尺寸 → 更换镜头焦距

    • 3x3:标配镜头(平衡细节与速度)
    • 5x5:长焦镜头(捕捉细致纹理)
    • 7x7:广角镜头(获取全局信息)[^9-2]
  2. 通道数设置 → 调整胶片感光层

    model.add(Conv2D(filters=64,  # 64种特征探测器kernel_size=(3,3),activation='relu'
    ))
    
  3. 步长与填充 → 控制取景节奏

    2,2
    快速采样
    可能丢失细节
    1,1
    精细扫描
    增加计算量
    Same填充
    保留边缘信息
    ^9-2

典型训练效果

训练曲线:
Epoch 5/20 - acc: 0.82 → Epoch 15/20 - acc: 0.96
验证集表现: 
AUC = 0.97 优于传统算法0.85[^10-2]

目录:总目录
上篇文章:机器学习第二十二讲:感知机 → 模仿大脑神经元的开关系统
下篇文章:机器学习第二十四讲:scikit-learn → 机器学习界的瑞士军刀


[^2-1]《零基础学机器学习》第二章第一节矩阵运算
[^9-2]《零基础学机器学习》第九章第二节CNN原理
[^10-1]《零基础学机器学习》第十章第一节项目实战
[^10-2]《零基础学机器学习》第十章第四节竞赛指导

http://www.lryc.cn/news/2384117.html

相关文章:

  • 【嵙大o】C++作业合集
  • 《算法笔记》11.8小节——动态规划专题->总结 问题 B: 拦截导弹
  • Flink 核心概念解析:流数据、并行处理与状态
  • C++23 范围迭代器作为非范围算法的输入 (P2408R5)
  • PHP-FPM 调优配置建议
  • 2025.05.20【Treemap】树图数据可视化技巧
  • Elasticsearch 写入性能优化有哪些常见手段?
  • CICD编译时遇到npm error code EINTEGRITY的问题
  • 深入了解Springboot框架的启动流程
  • DataWhale llm universe
  • LLaMA-Factory微调LLM-Research/Llama-3.2-3B-Instruct模型
  • DB-MongoDB-00002--Workload Generator for MongoDB
  • 3.8.1 利用RDD实现词频统计
  • Spring Ioc和Aop,Aop的原理和实现案例,JoinPoint,@Aspect,@Before,@AfterReturning
  • [解决conda创建新的虚拟环境没用python的问题]
  • 【优秀三方库研读】在 quill 开源库 LogMarcos.h 中知识点汇总及讲解
  • jvm安全点(五)openjdk17 c++源码垃圾回收之安全点阻塞状态线程在安全点同步中无需调用block函数的详细流程解析
  • C++ 中的 **常变量** 与 **宏变量** 比较
  • 【C++】控制台小游戏
  • 配合本专栏前端文章对应的后端文章——从模拟到展示:一步步搭建传感器数据交互系统
  • React中常用的钩子函数:
  • springboot IOC
  • java面试每日一背 day2
  • Ajax01-基础
  • (37)服务器增加ipv6配置方法
  • 生成树协议(STP)配置详解:避免网络环路的最佳实践
  • 面向 C 语言项目的系统化重构实战指南
  • 网络层——蚂蚁和信鸽的关系VS路由原理和相关配置
  • Python Pandas库简介及常见用法
  • 第十六届蓝桥杯复盘