
一个 AOI 芯片检测的真实项目带你彻底认识深度学习落地的核心武器开头你以为深度学习很难你有没有过这种经历刷短视频看到别人用 AI 识别猫猫狗狗觉得很酷。打开 GitHub 找了个 YOLO 教程照着跑了一遍——识别效果还不错。然后你想「我也想在产线上用这个。」打开项目代码发现里面有train.py、export.py、compare_onnx.py、assemble_v4_cbroken_safe.py……每个文件都看不懂。你以为深度学习很难其实不是难——是没人告诉你从哪开始。我第一次接触深度学习的时候也是这样。Python 会写PyTorch 没碰过YOLO 只听说过名字。后来接手了一个 AOI自动光学检测项目需要训练芯片焊盘缺陷检测模型。三个月后我训出了 99.93% 准确率的极性分类模型部署到了产线上。不是因为我有多聪明——而是因为深度学习的「入门门槛」比你想象的低。一、深度学习到底是什么传统图像处理 vs 深度学习传统图像处理 输入图像 → 人工设计规则阈值/边缘/形态学→ 输出结果 例如用 OpenCV 写 500 行代码检测芯片缺陷 深度学习 输入图像 标注数据 → 模型自动学习特征 → 输出结果 例如用 5 行代码训练一个检测模型核心区别传统方法靠人写规则深度学习靠数据学规则。工业视觉的三大任务任务输入输出AOI 应用目标检测Detection图像目标位置 类别灯组检测、芯片检测图像分类Classification图像类别概率极性分类、缺陷分类实例分割Segmentation图像像素级掩码焊盘分割二、3 分钟跑通第一个 YOLO 训练环境要求# 1. 创建 Conda 环境conda create-n yolo_env python3.12 conda activate yolo_env# 2. 安装 PyTorchCUDA 12.8pip install torch torchvision--index-url https://download.pytorch.org/whl/cu128# 3. 安装 Ultralyticspip install ultralytics最简训练脚本# train.py — 5 行代码训练一个分类模型fromultralyticsimportYOLO# 1. 加载预训练模型modelYOLO(yolov12n-cls.pt)# 2. 开始训练resultsmodel.train(datadataset/,# 分类任务文件夹结构epochs30,# 训练 30 轮batch256,# 批大小imgsz224,# 输入尺寸)# 3. 产出runs/classify/train/weights/best.pt5 行代码训练完成。产出一个.pt权重文件。三、AOI 项目一个工业级深度学习项目的全貌项目目录树AOI_train_python/ ├── group_detect/ # 灯组检测HBB 目标检测 │ ├── train.py # 训练脚本 │ ├── compare_hbb_onnx.py # ONNX 验证 │ └── data.yaml # 数据集配置 ├── chip_detect/ # 芯片检测OBB 旋转检测 │ ├── train.py │ ├── yolo_obb_export.py │ └── data.yaml ├── polar_classify/ # 极性分类图像分类 │ ├── yolo_train.py # 统一训练入口 │ ├── yolo_export.py # ONNX 导出 │ └── data/datasets/ # 数据集 ├── chip_defect/ # 缺陷分类图像分类 │ ├── yolo_train.py │ ├── yolo_export.py │ └── assemble_v*.py # 数据组装脚本 └── deliveries/ # 模型交付归档 ├── defect_cls/ # 缺陷分类交付 ├── polar_cls/ # 极性分类交付 └── joint_e2e/ # 双模型联验四大模块一览模块任务类型模型输入尺寸精度速度group_detectHBB 检测YOLO11s640x640100%23mschip_detectOBB 检测YOLO11s-obb320x320100%11mspolar_classify分类YOLO12n-cls224x22499.93%5mschip_defect分类YOLO11n-cls224x22498.77%5ms业务流水线整板图像4000x3000 ↓ group_detect找灯组HBB ↓ rotate_crop切块旋转校正 ↓ chip_detect找芯片OBB ↓ polar_classify极性分类8 类 ↓ 导出 ONNX ↓ 产线 C 系统四、技术栈全景图┌─────────────────────────────────────────────────┐ │ 技术栈全景 │ ├─────────────────────────────────────────────────┤ │ 框架Ultralytics YOLOv8 / v11 / v12 │ │ 训练PyTorch 2.7 CUDA 12.8 │ │ GPUNVIDIA GeForce RTX 5090 │ │ 导出ONNXopset12, IR8, FP16 │ │ 部署C ONNX Runtime │ │ 标注X-AnyLabeling │ │ 环境CondaPython 3.12 │ └─────────────────────────────────────────────────┘为什么选 YOLO快推理速度极快满足产线实时要求准工业场景精度足够简单API 设计优雅5 行代码就能训练生态Ultralytics 社区活跃文档完善为什么导出 ONNX.pt是 PyTorch 专属格式C 不认识ONNX 是通用格式ONNX Runtime / TensorRT / OpenVINO 都支持产线标准路径.pt→.onnx→ C 推理五、避坑指南新手高频错误坑1GPU 版本不匹配# ❌ 错误先装 PyTorch 再装 CUDApip install torch# 装的是 CPU 版本python-cimport torch; print(torch.cuda.is_available())# False# ✅ 正确先确认 CUDA 版本再装对应 PyTorchnvidia-smi# 查看 CUDA 版本pip install torch--index-url https://download.pytorch.org/whl/cu128 python-cimport torch; print(torch.cuda.is_available())# True坑2显存不够# ❌ 错误直接上 large 模型modelYOLO(yolov12l-cls.pt)# 显存爆炸# ✅ 从 nano 开始modelYOLO(yolov12n-cls.pt)# 参数最少显存友好坑3数据集格式不对# ❌ 错误分类任务用检测格式dataset/ ├── images/ │ ├── train/ │ └── val/ └── labels/# 分类任务不需要 labels# ✅ 正确分类任务用目录结构dataset/ ├── train/ │ ├── class1/ │ ├── class2/ │ └── class3/ └── val/ ├── class1/ ├── class2/ └── class3/坑4训练集和验证集有重叠现象训练集上 99%产线上 80%。原因同一张图既在训练集又在验证集模型「背答案」了。解法严格划分训练集和验证集不能有重叠。坑5不看训练日志现象训练完了不知道效果怎么样。解法训练完成后查看results.csv关注val/box_loss和val/mAP50。AOI 项目优秀实践模块化架构四大模块职责清晰可独立训练和部署统一训练入口yolo_train.py参数化设计一行命令训练版本化管理数据集、权重、ONNX 都有版本号可追溯AOI 项目可改进之处缺少环境搭建文档没有environment.yml新人搭建环境靠猜缺少 CONTRIBUTING 指南不知道怎么参与贡献缺少自动化测试训练脚本没有单元测试结尾说回那个「深度学习很难」的故事。后来我发现深度学习的入门门槛其实很低。5 行代码训练一个模型10 行代码导出 ONNX20 行代码部署到 C。不是因为深度学习有多难——而是因为没人告诉你从哪开始。现在你知道了。从pip install ultralytics开始训练你的第一个模型。翻翻你的项目你的项目有深度学习需求吗还是传统图像处理就够了你有 GPU 吗没有的话可以用 Google Colab 免费 GPU。你有标注数据吗没有的话可以从 COCO 数据集开始练手。评论区说说你对深度学习的第一印象以及你想用它解决什么问题。觉得有用收藏这篇下次想入门深度学习时翻出来照着做。转发给你团队里那个天天说「深度学习太难了」的同事。下期预告模型训练 80% 的时间在搞数据你准备好了吗从标注到裁图到增强AOI 项目的数据流水线全拆解。下一篇我们聊数据准备——深度学习的「粮食」。本文是《深度学习基础知识与实战技术栈》系列第一篇。