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 部署项目经验。这在目前的招聘市场上是绝对的硬通货。加油!

相关推荐
柠檬071116 小时前
opencv 未知函数记录-detailEnhance
人工智能·opencv·计算机视觉
子夜江寒17 小时前
OpenCV图像处理部分基础操作
图像处理·python·opencv
劈星斩月18 小时前
OpenCV 学习11 读取和写入视频文件
opencv·读取视频·写入视频
柠檬071118 小时前
opencv 未知函数记录-edgePreservingFilter
人工智能·opencv·计算机视觉
柠檬071118 小时前
opencv 未知函数记录-findHomography
人工智能·opencv·计算机视觉
柠檬071119 小时前
opencv 未知函数记录-estimateAffinePartial2D
人工智能·opencv·计算机视觉
WoY20201 天前
opencv-python在ubuntu系统中缺少依赖
python·opencv·ubuntu
Jerryhut1 天前
opencv总结9——答题卡识别
人工智能·opencv·计算机视觉
【ql君】qlexcel2 天前
机器视觉软件介绍:opencv、halcon、康耐视visionpro、海康visionmaster
人工智能·opencv·计算机视觉·halcon·visionmaster·visionpro