第2章:计算机视觉基础回顾
各位同学,咱们今天聊点实在的。做安防监控,说白了就是让摄像头学会“看懂”画面。但在这之前,得先把地基打牢。这一章我会带着大家快速过一遍计算机视觉的核心基础——图像处理、CNN原理,还有目标检测算法的演进。别嫌基础,我踩过的坑,十有八九都是基础不牢导致的。
2.1 图像处理基础:从像素到特征
图像是什么?在计算机眼里,就是一堆数字。一张彩色图片,其实就是三个矩阵(R、G、B)叠在一起。每个像素的值在0到255之间。嗯,这里要注意:安防场景下,光照变化特别大,所以预处理这一步我从来不敢省。
核心操作:
- 灰度化:去掉颜色信息,只保留亮度。公式是 Gray = 0.299R + 0.587G + 0.114B。为什么?因为人眼对绿色最敏感。
- 直方图均衡化:让图像对比度更明显。我在做夜间监控时,这招特别管用。
- 高斯滤波:去噪。但别过度,否则边缘信息就没了。
举个例子,你想想看,一个摄像头对着走廊,白天和晚上的亮度差了几十倍。如果不做归一化,模型直接崩。我个人习惯,先做直方图均衡化,再归一化到[0,1]区间。
2.2 卷积神经网络(CNN)核心原理
CNN这东西,现在听起来好像很平常。但我2015年刚接触时,觉得这玩意儿简直是黑魔法。其实拆开来看,就三样东西:卷积、池化、全连接。
2.2.1 卷积层:特征提取器
卷积核,说白了就是一个滑动窗口。比如一个3x3的核,在图像上滑一遍,每个位置做点积。为什么能提取特征?因为不同的核能检测不同的模式——边缘、纹理、角点。
我的经验: 在安防场景中,小目标(比如远处的行人)特别多。我建议第一层卷积核别用太大,3x3就够了。太大反而会丢失细节。
2.2.2 池化层:降维打击
池化就是下采样。最大池化取区域最大值,平均池化取平均值。为什么要做?两个原因:一是减少计算量,二是让特征有平移不变性。说白了,就是让模型更鲁棒。
我曾经在一个人脸识别项目里,因为没加池化层,模型过拟合得一塌糊涂。加了之后,准确率直接提升了5个点。
2.2.3 激活函数:引入非线性
ReLU(修正线性单元)是现在的主流。公式很简单:f(x) = max(0, x)。为什么用它?因为计算快,而且能缓解梯度消失问题。但要注意,ReLU有个“死神经元”问题——如果输入一直为负,神经元就永远不更新了。我一般用Leaky ReLU来避免这个问题。
2.3 目标检测算法演进
目标检测,就是让模型告诉我:画面里有什么东西,在什么位置。安防监控里,这就是核心中的核心。从Faster R-CNN到YOLO,再到SSD,我一个个说。
2.3.1 Faster R-CNN:两阶段的开山鼻祖
Faster R-CNN的思路是:先找出可能包含目标的区域(候选框),再对这些区域进行分类和回归。它引入了RPN(区域提议网络),把候选框生成也变成了网络的一部分。
核心流程:
- 输入图像经过CNN提取特征图
- RPN在特征图上生成候选框
- RoI Pooling将候选框映射到固定尺寸
- 分类+回归输出最终结果
优点:精度高。缺点:慢。在安防场景里,如果要求实时性(比如25帧/秒),Faster R-CNN基本扛不住。我试过在1080P视频上跑,一帧要200多毫秒,根本没法用。
2.3.2 YOLO:一阶段的实时王者
YOLO(You Only Look Once)的思路完全不同。它把检测当成回归问题,一次推理直接输出边界框和类别。说白了,就是看一眼就知道结果。
YOLOv3的关键改进:
- 多尺度预测:在三个不同尺度的特征图上做检测,能同时检测大目标和小目标
- Darknet-53骨干网络:更深的网络,更好的特征提取
- 逻辑回归代替softmax:支持多标签分类
我记得有一次做园区安防,需要检测行人、车辆、自行车。用YOLOv3,在NVIDIA Jetson TX2上能跑到30帧/秒,延迟只有33毫秒。这个速度,完全满足实时监控需求。
避坑指南: 我曾经在YOLO训练时,把输入尺寸设成了416x416,结果小目标(比如远处的行人)全漏检了。后来改成608x608,召回率从70%提到了85%。记住:输入尺寸越大,小目标检测效果越好,但速度会下降。需要权衡。
2.3.3 SSD:速度与精度的平衡点
SSD(Single Shot MultiBox Detector)也是单阶段方法。它和YOLO的区别在于:SSD在不同尺度的特征图上直接做预测,而且用了默认框(default boxes)的概念。
SSD的优势:速度快,精度也不错。在VOC2007数据集上,SSD300能达到74.3% mAP,速度是59 FPS。这个组合,在安防场景里很实用。
我个人觉得,SSD比YOLO更容易调参。因为它的默认框设计更灵活,可以针对不同数据集调整长宽比和尺度。我在做车牌检测时,就把默认框的长宽比改成了2:1和3:1,效果立竿见影。
2.4 本章知识体系总览
下面这张图,是我自己画的。它把这一章的核心逻辑串起来了。你仔细看,从图像预处理到CNN特征提取,再到三种检测算法的对比,一目了然。
好了,这一章的内容就到这里。图像处理是基础,CNN是核心,目标检测算法是实战工具。这三样东西,你吃透了,后面讲安防场景落地时,就会轻松很多。