第 1 个月:脱胎换骨 ------ 现代 C++ 与 构建系统
目标:忘掉 MFC,掌握"写库"级别的 C++ 能力。
-
核心学习点:
-
Modern C++ (11/14/17):
-
智能指针:std::unique_ptr 管理 TensorRT 句柄(RAII 模式)。
-
移动语义:std::move 避免图像数据的无谓拷贝。
-
多线程:std::thread, std::mutex, std::condition_variable (写推理服务队列必用)。
-
-
CMake:
-
手动写 CMakeLists.txt,而不是靠 VS 的 sln。
-
学会 find_package(OpenCV), target_link_libraries。
-
-
-
🔥 实战项目 1:基于 C++ 的高性能图像处理库
-
内容:不用 cv::resize,自己用 C++ 写一个双线性插值 resize 函数。
-
进阶:使用 OpenMP (#pragma omp parallel for) 进行多线程加速。
-
考核指标:对比 OpenCV 的速度,理解 CPU 缓存命中率 (Cache Locality) 对性能的影响。
-
第 2 个月:标准流水线 ------ ONNX Runtime 与 模型转换
目标:打通 PyTorch -> ONNX -> C++ 的全流程。这是所有部署工作的"普通话"。
-
核心学习点:
-
ONNX 标准:学习 Netron 看图,理解什么是算子(Op),什么是静态/动态 Shape。
-
模型导出:写 Python 脚本把 PyTorch 模型 (.pth) 导出为 ONNX,并进行 onnx-simplifier 简化。
-
ONNX Runtime (ORT) C++ API:
-
学会输入数据的预处理(HWC -> CHW,归一化)。
-
学会输出数据的后处理(NMS 非极大值抑制)。
-
-
-
🔥 实战项目 2:通用 YOLOv8 推理类封装
-
内容:
-
从 GitHub 下载 YOLOv8 的 .pt 权重。
-
导出为 ONNX。
-
编写 C++ 类 YoloDetector,接口为 Detect(cv::Mat img)。
-
-
难点 :手动在 C++ 里实现 YOLO 的后处理逻辑(解码框、NMS),不能调用 Python。
-
产出:一个不依赖 PyTorch,只依赖 OpenCV 和 ONNXRuntime 的 .exe (或 Linux 可执行文件)。
-
第 3 个月:核心竞争力 ------ TensorRT 深度应用
目标 :这是拿高薪的关键。 掌握 NVIDIA 官方推理引擎。
-
核心学习点:
-
TensorRT 核心概念:Builder, Network, Engine, Context。
-
API 编程 :不要只用 trtexec 命令行工具,要学会用 C++ API 构建引擎。
-
量化 (Quantization):
-
FP32 vs FP16 vs INT8。
-
如何使用 Calibration(校准)数据集进行 INT8 量化。
-
-
-
🔥 实战项目 3:极限性能的 OCR 识别模块
-
内容:回到你的 PaddleOCR。
-
将 Paddle 的 Rec 模型转为 ONNX。
-
使用 TensorRT C++ API 将其转为 Engine。
-
实现 多 Batch 推理:一次塞进去 8 张或 16 张小图进行识别。
-
-
考核指标 :FPS 比 Python 版快 10 倍以上。
-
GitHub 参考:搜索 tensorrtx (必读源码)。
-
第 4 个月:降维打击 ------ CUDA 编程基础
目标:当 TensorRT 都不够快时,你能手写算子。这是从"工程师"到"专家"的分水岭。
-
核心学习点:
-
GPU 架构:Thread, Block, Grid, SM, Warp。
-
内存模型:Global Memory, Shared Memory (共享内存是性能优化的关键)。
-
CUDA Kernel 编写:global 函数怎么写。
-
-
🔥 实战项目 4:CUDA 加速的预处理 (CUDA Preprocessing)
-
痛点:通常 CPU 做 Resize/Normalize 很慢,还会阻塞 GPU 等待。
-
内容:
-
写一个 CUDA Kernel,实现 Resize + Normalize + HWC2CHW 三合一操作。
-
直接在 GPU 显存上操作数据,零拷贝 (Zero-copy) 传给 TensorRT。
-
-
效果:实现"全流程 GPU 化",CPU 占用率接近 0%。
-
第 5 个月:终极缝合 ------ 打造简历级作品
目标:模拟真实大厂的生产环境,做一个可以写在简历首位的项目。
-
🔥 终极项目:高并发视频流实时分析服务器
-
背景:模拟安防场景,同时处理 4-8 路摄像头视频流,进行人脸检测/车辆识别。
-
架构设计:
-
输入层:FFmpeg 硬解码(NVDEC)直接将视频解码到 GPU 显存。
-
处理层:自定义 CUDA 预处理 Kernel。
-
推理层 :TensorRT 引擎(YOLO 或 OCR),使用 多线程 + 队列 管理。
-
服务层:封装成 C++ 类,甚至可以用 httplib 包装成 HTTP 接口。
-
-
亮点关键词(写在简历上):
-
Producer-Consumer Pattern (生产者消费者模型)
-
TensorRT INT8 Quantization
-
CUDA Kernel Optimization
-
FFmpeg NVDEC Hardware Decoding
-
-
📚 必读资源清单
-
书籍:
-
《Effective Modern C++》(面试必问 C++ 特性)
-
《CUDA C Programming Guide》(NVIDIA 官方文档,当字典查)
-
《TensorRT Developer Guide》(官方文档,必读 Best Practice 部分)
-
-
GitHub 仓库 (抄作业/读源码):
-
wang-xinyu/tensorrtx:(圣经级仓库) 各种主流模型转 TensorRT 的 C++ 实现。
-
Tencent/NCNN:腾讯开源的手机端推理框架,代码极其优美,适合学习怎么写高性能 C++。
-
NVIDIA/DeepStream:如果你想搞视频分析,这是行业标准,看它的 Pipeline 设计。
-
-
工具:
- Nsight Systems:必须学会用这个分析性能,看时间轴,看 GPU 哪里空闲了。
💡 写在最后的话
-
别碰 GUI:这 5 个月,不要写任何 MFC、Qt 的界面代码。黑框框(控制台)打印出的 FPS 才是你的尊严。
-
多写 Make/CMake:面试官问你"怎么解决 undefined reference",你要能从链接库的角度回答。
-
关于面试 :最后半个月,刷一下 LeetCode 的 "Top 100 Liked"。C++ 岗虽然看重工程,但大厂第一轮通常还是做题。
按照这个路线走下来,你将拥有一个完整的、高性能的、底层的 C++ AI 部署项目经验。这在目前的招聘市场上是绝对的硬通货。加油!