IRobot算法组培养路线
版本 | 日期 | 人员 | 修改记录 |
---|---|---|---|
v1.2 | 2023-12-01 | 李曾阳, 975813725@qq.com | 添加1.1.6 Git的常用操作;细化 2.1深度学习方向的内容 |
v1.1 | 2023-11-16 | 吴勇前, 1102567801@qq.com | 添加2.2.1 slam基础部分 的推荐学习课程与方法,细化了里程计与定位方法 |
v1.0 | 2023-06-25 | 郑桂勇, 2712089295@qq.com | 首次提交 |
1. 通识基础
1.1 基础中的基础
- Ubuntu 安装、系统文件结构介绍,常用操作(命令行操作需要背诵)
- C++基础与 ToolChain(CMake,gcc(认识))
- 传统 CV 基础(图像原理和 OpenCV 对应代码)
- 自定义训练集下 YOLO 训练及调参
- 相机模型、标定、2D-3D (PNP)
- Git的常用操作
1.2 工程基础
- ROS2 基础
- 大恒相机使用
- Can 通信和串口通信 (可参考assert下”通信.md”)
- 基本 python 和 matlab 使用
- 常用调试工具、设备认识和使用
- 常见报错处理认识和解决途径
1.3 进阶基础
- 基本滤波器状态估计机理(KF,EKF)
- 优化基本原理及优化库的使用(G2O,Ceres)
2. 细化方向
2.1 深度学习方向
2.1.1 深度学习方向基础
深度学习基础
- 感知机算法+激活函数(Sigmoid、Tanh、ReLU、Leaky ReLU、PReLU、Softmax等)
- 数据集读取
- 定义网络模型(多层感知机)
- 基本损失函数(均方误差、交叉熵误差等)
- 优化算法(梯度法)
- 模型结果评估(拟合、过拟合、欠拟合、不收敛)
- Pytorch基本使用
更好的优化算法
- 随机梯度下降法(SGD)
- 小批量梯度下降法
- 动量法
- Adam算法
深度卷积神经网络
- 基本架构层:卷积层、池化层、全连接层
- 经典网络模型:AlexNet、VGG、GoogLeNet、ResNet、DenseNet
- 数据增强方法:hsv通道值随机修改;翻转;背景变换;添加椒盐噪声等
目标检测网络
- SSD
- R-CNN系列
YOLO系列:
输入端:Mosaic数据增强、自适应锚框计算,正负样本分配策略以及自适应图片缩放
主干网络:Focus结构、CSP结构
Neck网络:FPN+PAN结构
输出端:分类损失函数+定位损失+回归损失(GIOU_Loss)
YOLO-pose(关键点检测):
- yolopose的BBox loss func:CIoU
- OKS–主流的关键点评估指标
- 关键点损失函数(如简单的L1 Loss等)
- 关键点置信度损失函数
YOLOv5 的主干网络更改、裁剪
- 更换主干网络的Block
- 更换Shuffle Block
- 更换Mobile Block
- 添加SE注意力机制
- …
- 修改网络深度、宽度
- 更换主干网络的Block
损失函数的设计与改进
- Focal Loss、OHEM loss、IOU loss等
- 如回归损失函数:Smooth L1 Loss -> IOU Loss(2016)-> GIOU Loss(2019)-> DIOU Loss(2020)-> CIOU Loss(2020)
网络轻量化方法
- 量化
- 剪枝
- 蒸馏
YOLO 后端推理(C++部署)
- ONNXRuntime
- OpenVino
- TensorRT
- OpenCV(dnn)
Vision Transformer(比赛暂未使用)
- RNN->LSTM->Transformer->ViT->DETR
2.1.2 推荐学习资料
入门推荐书籍
- 《深度学习入门:基于Python的理论和实现》
- 《动手学深度学习》
- 《Pytorch实战》
推荐课程
- 吴恩达机器学习(课程较长,数理基础扎实,有兴趣和时间可学习,快速上手深度学习不必要看)
- 跟李沐学AI(与《动手学深度学习》配套视频)
- 斯坦福CS231n(经典深度学习入门课程)
- 台大李宏毅系列视频
- TensorFlow2.0(北京大学曹健老师,课程用的tensorflow,讲的不错,可选看)
2.1.3 深度学习方向研究方向建议
- 顶刊顶会论文阅读,关注热点,多看代码
- 尝试使用最新的CNN+Transformer网络模型进行目标检测,比较与目前方案的优劣性
- 探讨将追踪技术引入姿态估计中,比较与目前方案的优劣性
- 探讨将语义分割引入比赛(雷达站,哨兵)等,比较与目前方案的优劣性
- 探讨将单双目深度估计引入比赛(雷达站,哨兵)等,比较与目前方案的优劣性
- 探讨将深度强化学习引入比赛(控制,决策)等,比较与目前方案的优劣性
- 更多请自由探索,发挥想象力
2.2 SLAM 方向
2.2.1 SLAM 基础
- 了解常用的地图格式 (推荐:高飞 移动机器人运动规划)
- 在 Nav2 中实现仿真环境下的导航问题,并理清不同 Frame 之间的转换及作用,以及理清定位,里程计,全局地图,局部地图和全局规划,局部规划的关系(可通过tf2_tools观看Frame之间的转换帮助理解,通过rqt_graph理清导航的完整框架)
- 了解全局路径规划(A*,Dijkstra)等原理,了解局部规划算法(TEB,DWA )的原理(推荐:高飞 移动机器人运动规划)
补充里程计相关知识,了解定位方法的原理
- 视觉:了解特征点法,光流法的原理(推荐:《视觉slam十四讲》7、8讲)
- 激光:了解 AMCL 等定位方法的原理(推荐:《概率机器人》 蒙特卡洛定位,知乎 Churlaaaaaaa AMCL包源码分析)
- 其他:如轮式,GNSS
- 尝试使用 Gammping 或 cartographer 使用激光雷达在仿真和真实世界中建图
- 尝试 LIO 如 Fast-LIO 的 Demo 运行(Bag、真实设备)
- 尝试 VIO 如(ORB-SLAM、VINS-FUSION)的 Demo 运行(Bag、真实设备)
- 使用 Nav2 框架在真实世界进行 2d 下的机器人的导航规划(激光雷达使用 2d,里程计使用 LIO 或 VIO 输出或轮式里程计,预建全局地图)
- 使用 Nav2 的决策树模块,模拟赛场哨兵决策。
2.2.2 SLAM 研究方向建议
- 多学理论基础,关注热点,多看代码,多看论文
- 了解各种传感器(IMU,深度相机,雷达,UWB)等特性,以及其融合、标定、同步 方案
- 深入学习算法原理(IMU 预积分,建图算法,规划算法,感知算法等)
- 心有余力者,可多看书如《机器人的状态估计》,多看论文(Mars Lab(hku) , HKUST Aerial Robotics Group , Fast Lab (zju) , STAR Lab(sysu) ) title: IRobot算法组培养路线
This post is licensed under CC BY 4.0 by the author.