AI infra5个月跳槽计划

第 1 个月:脱胎换骨 ------ 现代 C++ 与 构建系统

目标:忘掉 MFC,掌握"写库"级别的 C++ 能力。

  • 核心学习点:

    1. Modern C++ (11/14/17):

      • 智能指针:std::unique_ptr 管理 TensorRT 句柄(RAII 模式)。

      • 移动语义:std::move 避免图像数据的无谓拷贝。

      • 多线程:std::thread, std::mutex, std::condition_variable (写推理服务队列必用)。

    2. 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++ 的全流程。这是所有部署工作的"普通话"。

  • 核心学习点:

    1. ONNX 标准:学习 Netron 看图,理解什么是算子(Op),什么是静态/动态 Shape。

    2. 模型导出:写 Python 脚本把 PyTorch 模型 (.pth) 导出为 ONNX,并进行 onnx-simplifier 简化。

    3. ONNX Runtime (ORT) C++ API:

      • 学会输入数据的预处理(HWC -> CHW,归一化)。

      • 学会输出数据的后处理(NMS 非极大值抑制)。

  • 🔥 实战项目 2:通用 YOLOv8 推理类封装

    • 内容:

      1. 从 GitHub 下载 YOLOv8 的 .pt 权重。

      2. 导出为 ONNX。

      3. 编写 C++ 类 YoloDetector,接口为 Detect(cv::Mat img)。

    • 难点 :手动在 C++ 里实现 YOLO 的后处理逻辑(解码框、NMS),不能调用 Python。

    • 产出:一个不依赖 PyTorch,只依赖 OpenCV 和 ONNXRuntime 的 .exe (或 Linux 可执行文件)。


第 3 个月:核心竞争力 ------ TensorRT 深度应用

目标 :这是拿高薪的关键。 掌握 NVIDIA 官方推理引擎。

  • 核心学习点:

    1. TensorRT 核心概念:Builder, Network, Engine, Context。

    2. API 编程 :不要只用 trtexec 命令行工具,要学会用 C++ API 构建引擎。

    3. 量化 (Quantization):

      • FP32 vs FP16 vs INT8。

      • 如何使用 Calibration(校准)数据集进行 INT8 量化。

  • 🔥 实战项目 3:极限性能的 OCR 识别模块

    • 内容:回到你的 PaddleOCR。

      1. 将 Paddle 的 Rec 模型转为 ONNX。

      2. 使用 TensorRT C++ API 将其转为 Engine。

      3. 实现 多 Batch 推理:一次塞进去 8 张或 16 张小图进行识别。

    • 考核指标 :FPS 比 Python 版快 10 倍以上。

    • GitHub 参考:搜索 tensorrtx (必读源码)。


第 4 个月:降维打击 ------ CUDA 编程基础

目标:当 TensorRT 都不够快时,你能手写算子。这是从"工程师"到"专家"的分水岭。

  • 核心学习点:

    1. GPU 架构:Thread, Block, Grid, SM, Warp。

    2. 内存模型:Global Memory, Shared Memory (共享内存是性能优化的关键)。

    3. CUDA Kernel 编写:global 函数怎么写。

  • 🔥 实战项目 4:CUDA 加速的预处理 (CUDA Preprocessing)

    • 痛点:通常 CPU 做 Resize/Normalize 很慢,还会阻塞 GPU 等待。

    • 内容:

      1. 写一个 CUDA Kernel,实现 Resize + Normalize + HWC2CHW 三合一操作。

      2. 直接在 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


📚 必读资源清单

  1. 书籍:

    • 《Effective Modern C++》(面试必问 C++ 特性)

    • 《CUDA C Programming Guide》(NVIDIA 官方文档,当字典查)

    • 《TensorRT Developer Guide》(官方文档,必读 Best Practice 部分)

  2. GitHub 仓库 (抄作业/读源码):

    • wang-xinyu/tensorrtx:(圣经级仓库) 各种主流模型转 TensorRT 的 C++ 实现。

    • Tencent/NCNN:腾讯开源的手机端推理框架,代码极其优美,适合学习怎么写高性能 C++。

    • NVIDIA/DeepStream:如果你想搞视频分析,这是行业标准,看它的 Pipeline 设计。

  3. 工具:

    • Nsight Systems:必须学会用这个分析性能,看时间轴,看 GPU 哪里空闲了。

💡 写在最后的话

  • 别碰 GUI:这 5 个月,不要写任何 MFC、Qt 的界面代码。黑框框(控制台)打印出的 FPS 才是你的尊严。

  • 多写 Make/CMake:面试官问你"怎么解决 undefined reference",你要能从链接库的角度回答。

  • 关于面试 :最后半个月,刷一下 LeetCode 的 "Top 100 Liked"。C++ 岗虽然看重工程,但大厂第一轮通常还是做题。

按照这个路线走下来,你将拥有一个完整的、高性能的、底层的 C++ AI 部署项目经验。这在目前的招聘市场上是绝对的硬通货。加油!

相关推荐
HUANGZHENXUAN1231 小时前
代码解析(一):从 `opencv_basics/` 说起
opencv
词却21 小时前
OpenCV学习:MediaPipe 人脸网格检测
opencv·学习
richard_yuu1 天前
OpenCV 实战第 8 篇:几何测量算子族,从 boundingRect 到亚像素定位
人工智能·opencv·计算机视觉
程序人生8881 天前
从“把隐私文件上传到别人云端“到本地可控:DocConverter Web 立项初心与架构选型
前端·图像处理·人工智能·opencv·架构·ocr·文心一言
ab1237682 天前
OpenCV 学习笔记
笔记·opencv·学习
咯哦哦哦哦2 天前
opencv复现 Halcon 双相机拼接
人工智能·数码相机·opencv
源码学社2 天前
图像去水印实测:OpenCV inpainting vs LaMa,传统算法和 AI 模型差距有多大
人工智能·opencv·算法·去水印·图片水印·ai去水印
richard_yuu2 天前
OpenCV 实战第 7 篇:Canny 阈值自适配、findContours 层级与 approxPolyDP
人工智能·opencv·计算机视觉
这张生成的图像能检测吗4 天前
(论文速读)FE-CLIP:把频域信息注入 CLIP,做零样本异常检测与分割
人工智能·opencv·目标检测·计算机视觉·缺陷检测·异常检测
richard_yuu4 天前
OpenCV 实战第 5 篇:threshold 全家族 + Otsu + 自适应阈值,参数怎么定
人工智能·opencv