<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>CNN on FXIO 技术博客</title><link>https://fxio.site/tags/cnn/</link><description>Recent content in CNN on FXIO 技术博客</description><generator>Hugo -- 0.157.0</generator><language>zh-cn</language><lastBuildDate>Sat, 11 Jul 2026 18:00:00 +0800</lastBuildDate><atom:link href="https://fxio.site/tags/cnn/index.xml" rel="self" type="application/rss+xml"/><item><title>深度学习实战——从标注到部署的完整闭环</title><link>https://fxio.site/posts/cv/deep-learning-yolo-training-deploy/</link><pubDate>Sat, 11 Jul 2026 18:00:00 +0800</pubDate><guid>https://fxio.site/posts/cv/deep-learning-yolo-training-deploy/</guid><description>&lt;blockquote&gt;
&lt;p&gt;核心问题：怎么让一个“不会看”的模型，学会识别工业零件表面的划痕？&lt;/p&gt;
&lt;/blockquote&gt;
&lt;!-- more --&gt;
&lt;h2 id="质检员的-05-秒困境"&gt;质检员的 0.5 秒困境&lt;/h2&gt;
&lt;p&gt;想象你是一个质检员，面前是传送带上飞速流动的钢板。每秒几十张，你要在 0.5 秒内判断：这张有没有划痕？有没有夹杂物？有没有裂纹？&lt;/p&gt;
&lt;p&gt;人眼做不到。但神经网络可以。&lt;/p&gt;
&lt;p&gt;目标——用深度学习，把这双&amp;quot;眼睛&amp;quot;训练出来。从 CNN 的底层原理开始，经过 YOLO 目标检测实战、LabelMe 数据标注，到用 trace-cn 辅助写训练代码，最终走完**&amp;ldquo;标注→训练→推理&amp;rdquo;**的完整闭环。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="cnn-基础卷积神经网络到底在看什么"&gt;CNN 基础：卷积神经网络到底在&amp;quot;看&amp;quot;什么？&lt;/h2&gt;
&lt;h3 id="从生物视觉到数学公式"&gt;从生物视觉到数学公式&lt;/h3&gt;
&lt;p&gt;CNN 的设计灵感来自人类视觉皮层。你看到一张照片，不是逐个像素分析的——你先看到边缘，再看到形状，最后组合出&amp;quot;这是一张脸&amp;quot;。CNN 干的是同样的事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;浅层卷积核&lt;/strong&gt;提取边缘、纹理（&amp;ldquo;这里有条线&amp;rdquo;）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;中层&lt;/strong&gt;把边缘组合成形状（&amp;ldquo;这是个圆形&amp;rdquo;）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;深层&lt;/strong&gt;把形状组合成语义（&amp;ldquo;这是个齿轮&amp;rdquo;）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;核心操作是&lt;strong&gt;卷积&lt;/strong&gt;：一个小的权重矩阵（比如 3×3）在图像上滑动，每个位置做加权求和。一个 3×3 的卷积核只有 9 个参数，却能扫描整个图像——这就是&lt;strong&gt;参数共享&lt;/strong&gt;的威力。全连接网络处理一张 224×224 的图片需要上亿参数，CNN 可能只需要几万。&lt;/p&gt;
&lt;h3 id="为什么卷积核能提取特征"&gt;为什么卷积核能提取特征？&lt;/h3&gt;
&lt;p&gt;假设你有一个检测水平边缘的卷积核：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;[[-1, -1, -1],
[ 0, 0, 0],
[ 1, 1, 1]]
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;当它滑过图像时，遇到&amp;quot;上暗下亮&amp;quot;的区域，输出值就很大；遇到均匀区域，输出接近零。所以卷积核本质上就是一个&lt;strong&gt;模式匹配器&lt;/strong&gt;——每个核负责匹配一种特定的视觉模式。&lt;/p&gt;
&lt;h3 id="池化层压缩但不丢失"&gt;池化层：压缩但不丢失&lt;/h3&gt;
&lt;p&gt;卷积之后通常接一个池化层（最常见的是 2×2 最大池化）。它做的事情很简单：把 2×2 区域里的最大值保留下来，其余扔掉。&lt;/p&gt;
&lt;p&gt;为什么这么&amp;quot;浪费&amp;quot;？因为池化做了两件事：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;降低计算量&lt;/strong&gt;：特征图尺寸减半，参数量降到 25%&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;增加鲁棒性&lt;/strong&gt;：目标稍微平移一点，最大池化的输出不变&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这就像你看一个人，不需要记住他脸上每个像素的位置，只需要知道&amp;quot;眼睛在鼻子上面&amp;quot;这种相对关系。&lt;/p&gt;
&lt;h3 id="训练的三驾马车损失函数学习率早停"&gt;训练的三驾马车：损失函数、学习率、早停&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;损失函数&lt;/strong&gt;衡量模型预测和真实值的差距。不同任务用不同的损失：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;分类用&lt;strong&gt;交叉熵&lt;/strong&gt;（&amp;ldquo;你预测是猫，但其实是狗，惩罚！&amp;quot;）&lt;/li&gt;
&lt;li&gt;目标检测用 &lt;strong&gt;CIoU Loss&lt;/strong&gt;（同时考虑框的重叠面积、中心距离、宽高比）&lt;/li&gt;
&lt;li&gt;分割用 &lt;strong&gt;Dice Loss&lt;/strong&gt;（对小目标特别敏感，比如医学影像里的肿瘤）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;学习率&lt;/strong&gt;控制每次更新参数的步长。太大了来回震荡，太小了原地踏步。实际训练中常用&lt;strong&gt;自适应学习率&lt;/strong&gt;（如 Adam），它会根据梯度自动调整步长——梯度大就小步走，梯度小就大步跑。&lt;/p&gt;</description></item></channel></rss>