CV
目录
本笔记记录CV即Computer Vision相关内容。
嵌入式计算机视觉系统学习路径
一、编程与开发基础
学习内容
- Python基础语法与数据结构
- 面向对象编程思想
- NumPy数组操作与矩阵运算
- Linux系统基本操作与Shell脚本
- Git版本控制
实践项目
- Python图像处理基础:使用Pillow库实现图片格式转换、裁剪、滤镜
- Linux环境配置:在虚拟机中配置Ubuntu,熟悉apt、vim、ssh等工具
- Git项目管理:创建GitHub仓库,学习分支管理和PR流程
二、嵌入式平台入门
学习内容
- K230硬件架构了解(RISC-V双核、KPU、DPU)
- 嵌入式开发环境搭建(CanMV/Kendryte SDK)
- 串口调试与固件烧录
- 基础外设驱动(GPIO、UART、I2C)
实践项目
- K230初体验:完成固件烧录,运行LED闪烁程序
- 摄像头采集:使用K230的DVP接口采集图像并保存
- 传感器集成:连接温湿度传感器,实现数据采集与显示
三、传统计算机视觉算法
图像预处理技术
学习内容
- 图像灰度化、二值化
- 直方图均衡化
- 图像滤波(均值、高斯、中值)
- 边缘检测(Sobel、Canny)
实践项目
- 图像增强系统:实现自动对比度增强和降噪
- 边缘检测仪:实时检测视频流中的边缘并标记
特征提取与描述
学习内容
- 角点检测(Harris、Shi-Tomasi)
- 特征描述子(SIFT、SURF、ORB)
- HOG特征提取
- 轮廓检测与形状分析
实践项目
- 物体特征提取:提取图像中物体的关键点并可视化
- 形状识别器:识别图像中的基本几何形状(圆形、矩形、三角形)
目标检测与跟踪
学习内容
- 模板匹配
- 颜色空间分析与颜色分割
- 光流法(Lucas-Kanade)
- 背景减除法
- Meanshift/Camshift跟踪
实践项目
- 颜色追踪器:跟踪特定颜色的移动物体
- 运动检测系统:检测视频中的运动物体并标注
- 人脸检测器:使用Haar级联分类器检测人脸
四、数学基础与优化
学习内容
- 线性代数基础(矩阵运算、特征值分解)
- 概率与统计基础
- 优化算法基础(梯度下降、最小二乘法)
- 数字信号处理基础
实践项目
- 矩阵运算优化:对比不同矩阵乘法实现的性能差异
- 滤波器设计:设计并实现自定义的数字滤波器
五、机器学习基础
学习内容
- 监督学习与非监督学习概念
- KNN、SVM、决策树等传统算法
- 特征工程与模型评估
- 集成学习方法
实践项目
- 手写数字分类:使用SVM对MNIST数据集进行分类
- 图像分类器:提取HOG特征+SVM实现物体分类
六、深度学习基础
神经网络基础
学习内容
- 感知机与多层感知机
- 激活函数(ReLU、Sigmoid、Tanh)
- 损失函数与优化器
- 反向传播算法
实践项目
- 手写数字识别:使用全连接神经网络实现MNIST分类
- 从零实现神经网络:用NumPy实现简单的神经网络框架
卷积神经网络
学习内容
- 卷积层、池化层原理
- 经典网络结构(LeNet、AlexNet、VGG)
- 残差网络(ResNet)
- 注意力机制基础
实践项目
- CIFAR-10分类:使用CNN对CIFAR-10数据集进行分类
- 网络可视化:可视化CNN各层的特征图
目标检测深度学习
学习内容
- R-CNN系列算法原理
- YOLO系列算法原理
- SSD算法原理
- Anchor机制与NMS
实践项目
- YOLOv5训练:在自定义数据集上训练YOLOv5模型
- 实时目标检测:在PC上实现实时摄像头目标检测
图像分割
学习内容
- 语义分割(FCN、U-Net)
- 实例分割(Mask R-CNN)
- 轻量级分割网络
实践项目
- 图像分割应用:实现简单的图像背景替换
- 医学图像分割:对医学图像进行病灶分割
七、模型部署与优化
模型压缩技术
学习内容
- 模型量化(INT8量化原理与实践)
- 模型剪枝(结构化与非结构化剪枝)
- 知识蒸馏
- 神经架构搜索基础
实践项目
- 模型量化实践:将FP32模型量化为INT8并评估精度损失
- 模型剪枝实践:对预训练模型进行剪枝并微调
嵌入式部署
学习内容
- ONNX模型格式与转换
- TensorFlow Lite使用
- NCNN、MNN等移动端推理框架
- K230 KPU编程与优化
实践项目
- K230模型部署:将MNIST分类模型部署到K230
- YOLO嵌入式部署:在K230上部署YOLOv5-tiny目标检测
- 性能优化:优化模型在K230上的推理速度
八、系统集成与工程化
学习内容
- 多线程/多进程编程
- 消息队列与进程间通信
- 系统资源管理(内存、CPU、功耗)
- 测试与调试技术
实践项目
- 实时视觉系统:构建多线程的实时图像处理流水线
- 功耗优化:优化代码降低系统功耗
- 自动化测试:编写视觉系统的单元测试和集成测试
九、综合项目实践
初级项目
- 智能垃圾分类系统:识别并分类不同类型的垃圾
- 手势识别系统:识别简单手势并控制设备
- 二维码/条码扫描系统:快速识别各种码
中级项目
- 人脸考勤系统:人脸检测+识别+记录
- 智能安防监控:运动检测+人脸识别+报警
- 工业质检系统:检测产品缺陷
高级项目
- SLAM建图与导航:使用K230实现简单的视觉SLAM
- 多摄像头协同系统:多个K230协同完成复杂任务
- 边缘计算集群:多设备协同完成分布式视觉任务
十、进阶方向(可选)
学习内容
- 三维视觉(立体视觉、点云处理)
- 生成式AI(GAN、扩散模型)
- 强化学习在视觉中的应用
- 神经渲染与3D重建
实践项目
- 双目测距系统:使用两个摄像头实现距离测量
- 图像生成:在嵌入式设备上运行轻量级生成模型
学习资源推荐
书籍
- 《数字图像处理》- Gonzalez
- 《学习OpenCV》- Bradski
- 《深度学习》- Goodfellow
- 《嵌入式计算机视觉》- 相关专业书籍
在线资源
- OpenCV官方文档
- PyTorch官方教程
- TensorFlow Lite示例
- K230官方文档与社区
开发板推荐(进阶)
- Jetson Nano:入门级GPU加速
- RK3588开发板:高性能ARM处理器
- STM32+OV2640:极低功耗应用
- Hailo-8加速卡:专用AI加速
关键建议
- 循序渐进:每个阶段都要充分实践,不要急于求成
- 理论结合实践:学习算法时一定要动手实现
- 代码规范:从一开始就养成良好的编码习惯
- 文档记录:记录每个项目的设计思路和问题解决方案
- 参与开源:积极参与开源项目,学习优秀代码