# AutoDrivingStereoVision20210124 **Repository Path**: giteewpu/auto_driving_stereo_vision20210124 ## Basic Information - **Project Name**: AutoDrivingStereoVision20210124 - **Description**: 作业同步 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 6 - **Created**: 2025-05-12 - **Last Updated**: 2025-05-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # AutoDrivingStereoVision20210124 #### 介绍 - 课后作业同步 - 项目地址:https://gitee.com/anjiang2020_admin/auto_driving_stereo_vision20210124.git #### week4 ``` week4 复杂场景下无人车如何检测物体-三维目标检测 项目代码地址:https://gitee.com/anjiang2020_admin/auto_driving_stereo_vision20210124.git Pipeline: 1. 一个三维重建代码样例 2. 三维重建所依赖的相机内参与外参 3. 双目图片可恢复出三维图,双目bbox是否可恢复出三维bbox 4. 三维目标检测网络:stereoRCNN的设计思路 作业: [必做]1. 完成代码week4/3DReconstruction/main_pptk.py的202行,203行,226行,256行填空,并能成功运行,查看到三维重建整个过程。 作业步骤: 1 202行需要你从middlebury数据集:https://vision.middlebury.edu/stereo/data/scenes2014/zip/ 下载一对双目图,并把你下载到的图片路径填入。 2 226行的填空,是将视差图转换为点云的过程,这里需要调用opencv的函数cv2.reprojectImageTo3D,请查阅其使用方法,并使用 3 256行的填空,主要练习用旋转矩阵对点云进行旋转。所以这里需要根据要求计算出旋转角度,然后对点云数据进行计算,得到旋转后的点云。 作业要求: 1 完成填空后,运行作业代码。需要提交内容:代码和 4张图片。4张图片分别为左图,右图,视差图,以及最后显示出的点云模型的截图。 [选做]2. 运行出老师提供的stereoRCNN cpu版本的代码。 建议步骤: 1. 从链接:https://pan.baidu.com/s/1LzgooYdgm0vMziQh3RdX2Q 密码:7ayx 下载预训练的StereoRCNN模型,将其放入week4/Stereo-RCNN/models_stereo文件夹内 2. 切换到目录Stereo-RCNN下 3. 用命令:python demo.py 运行demo,20秒左右,会得到demo_result.jpg 4. 本代码是StereoRCNN的代码,最好是先运行出模型的demo.py代码,也就是完整的运行出模型的前向计算过程,然后断点调试可以产看模型整个前向计算过程,查看如何使用模型输入的2d 的bbox信息的2d转3d的求解方程组的得到3d 的bbox的过程。 5. 建议预习一下本代码,下节课会讲,讲完后要求大家去下载数据集训练。 目录文件说明: stereoRCNN论文:week4/Stereo R-CNN based 3D Object Detection for Autonomous Driving.pdf week4/3DReconstruction:待填空作业代码,三维重建代码 张正友标定法:张正友标定发.pdf 资料整理: 1 使用opencv 进行双目测距c++ 版本,含相机标定,不含点云显示:https://www.cnblogs.com/zhiyishou/p/5767592.html 2 使用opencv进行双目测距python版本[课堂代码,含点云显示]:https://blog.csdn.net/dulingwen/article/details/98071584 3 stereoRCNN 代码-gpu版本:https://github.com/HKUST-Aerial-Robotics/Stereo-RCNN 4 stereoRCNN 代码-cpu版本demo: week4/Stereo-RCNN代码 5 用matplotlib来显示3d图:https://blog.csdn.net/groundwalker/article/details/84786773 6 middlebury数据集:https://vision.middlebury.edu/stereo/data/scenes2014/zip/ 7 双目视觉算法的排名表:https://vision.middlebury.edu/stereo/eval3/ ``` ``` week5 复杂场景下无人车如何检测物体-三维目标检测实战 项目代码地址:https://gitee.com/anjiang2020_admin/auto_driving_stereo_vision20210124.git Pipeline: 1. week4作业以及坐标系转换方法 2. StereoRCNN前向计算得到3d-box思路梳理 3. 左box与右box计算得到3D-bbox实现过程 4. StereoRCNN训练代码以及训练数据的生成 作业: [必做]1. 将stereoRCNN的输出结果显示成点云的形式。 作业说明: 在stereoRCNN工程代码中,python demo.py是将结果显示在2d图片上, 为了加深2d->3d转换的认识, 这里需要大家把stereoRCNN检测到的3d-box显示到点云里. 作业步骤: 1 首先,读出雷达的点云数据,用pptk显示到3d空间里。 2 把demo.py最后计算得到的x,y,z,theta,w,h,l,表示的3d矩形框先换算成8个顶点。 3 利用8个顶点,把12条边上的点的(x,y,z )坐标求出来即可。 4 把12条边的点云数据与雷达的点云数据合并,显示到3d空间里,并给12条边上色,与雷达的点云做区分。 5 调整雷达点云 与 3d-bbox点云的相互尺度,角度等,使显示正常。 6 参考代码:week4/Stereo-RCNN/demo_pptk.py 第256,257,361行。 作业要求: 1 需要提交内容:修改后的代码demo_week5.py以及运行截图。 [选做]2. 下来kitti数据集,用GPU 训练stereoRCNN。 建议步骤: 1. 准备好kitti数据集,讲数据集传到ai studio上。 1. 将week4/Stereo-RCNN 复制到ai studio上。 2. 调整代码中的数据集加载目录,然后运行trainval.py 目录文件说明: homework_answer/3DReconstruction:week4作业答案 资料整理: 1 kitti 数据集下载链接以及使用办法:[待添加] ``` 图1 点云显示图 ![输入图片说明](https://images.gitee.com/uploads/images/2021/0201/200909_578e1d51_7401441.png "屏幕截图.png") week5 必做作业答案:auto_driving_stereo_vision20210124/week4/Stereo-RCNN/week5_answer 内有3个文件: 1. box2cloud.py:实现由3dbox的中心点,旋转角度和长宽高生成3dbox的点云,根据目标大小确定生成的点数量 2. demo_pptk.py: 实现SteroRCNN的就过绘制在点云上。 3. pptk_show.py: 实现 pptk 显示绿色点云的功能。 显示效果: ![输入图片说明](https://images.gitee.com/uploads/images/2021/0224/235445_d6593bd9_7401441.png "屏幕截图.png") ``` week6 环境感知技术的提升-目标跟踪 项目代码地址:https://gitee.com/anjiang2020_admin/auto_driving_stereo_vision20210124.git Pipeline: 1. week5作业 2. 目标跟踪与单目3D重建回顾 3. Joint Monocular 3D vehicle Detection and Tracking 4. 匈牙利算法与KM算法 作业: [必做]1. 完成填空,运行出多目标3d跟踪的前向计算过程。 作业说明: 在3D-tracking的工程代码中,有三部分模型,分别是faster rcnn目标检测模型,单目3dbox重建模型,多目标跟踪模型。 本次前向计算过程只包含多目标跟踪模型 因此老师提供了多目标跟踪需要的数据:output/616_030_gta_val_set/616_030_rec_10090913_thunder_15h7m_x-293y-199tox-2713y2301_bdd_roipool_output.pkl 这个数据里有20张图片的3d检测结果,以及后续模型跟踪和多目标匹配需要的图片特征等。 模型输出指定为:output/616_030_gta_val_set/lstmdeep_age20_aff0.1_hit0_100m_803_pd.json,是一个json格式的文件 因此,一旦你完成填空,就会发现模型成功了生成了这个json文件,老师会提供一下这个文件的截图,图6-2,以方便你运行后核对。 作业要求 1。 完成代码填空。填空位置model/tracker_3d.py的204行:# [填空]这里按照论文中公式计算出待匹配的跟踪框和检测框的相似度 2。 指出代码中,完成位置跟踪和匹配算法的位置。 3。 需要提交内容:修改后的代码,以及运行结果文件:output/616_030_gta_val_set/lstmdeep_age20_aff0.1_hit0_100m_803_pd.json 作业步骤: 1 首先,查看论文,找到匹配相似度矩阵的计算公式 2 查看代码model/tracker_3d.py 找到公式中设计到的变量与变量:特征相似度,坐标相似度,特征相似度权重,坐标相似度权重等。 3 利用代码中已经存在的相似度以及权重,和公式,求出最终的匹配相似度矩阵。 4 完成后,运行run.sh 中的命令即可得到json文件。 目录文件说明: week6/3d_tracking_week6homework/文件夹为本次多目标跟踪工程代码 1. mono_3d_tracking.py 为跟踪代码。run.sh中调用了它 2. model文件夹里是本次工程中,目标检测,3dbox重建,以及跟踪过程中用到的所有模型 3. mono_3d_estimation.py 为3dbox的单目生成模型 4. output:结果存放路径 ``` <<<<<<< HEAD ======= 图6-1 完成填空后,运行结果展示 ![输入图片说明](https://images.gitee.com/uploads/images/2021/0226/020350_8d449f9d_7401441.png "屏幕截图.png") >>>>>>> 016d7faec35afc8587a676d156f2b0aaf002343e 图6-2 部分输出结果展示: ![输入图片说明](https://images.gitee.com/uploads/images/2021/0226/020517_128579b7_7401441.png "屏幕截图.png") ``` week7 环境感知技术的提升-目标跟踪项目代码讲解 项目代码地址:https://gitee.com/anjiang2020_admin/auto_driving_stereo_vision20210124.git Pipeline: 1. week5,week6作业 2. 工程代码分为3个独立部分 3. 单目立体检测框估计模型的代码详解 4. 跟踪模型中的两个lstm代码详解 作业: [必做]1. 完成填空,运行处多目标3d跟踪的训练代码,查看训练输出内容. 作业说明: 在3D-tracking的工程代码中,有三部分模型,分别是faster rcnn目标检测模型,单目3dbox重建模型,多目标跟踪模型。 本次训练过程只包含多目标跟踪模型 因此老师提供了多目标跟踪需要的数据:output/616_030_gta_val_set/616_030_rec_10090913_thunder_15h7m_x-293y-199tox-2713y2301_bdd_roipool_output.pkl 这个数据里有20张图片的3d检测结果,以及后续模型跟踪和多目标匹配需要的图片特征等。 我们可以用这个数据来训练我们的跟踪模型,成功完成填空,你会看到如下图7-1所示训练过程 作业要求 1。 完成代码填空。填空位置motion_lstm.py的433行: #[填空1] 这里实现跟踪模型的前向计算,请根据用于跟踪使用的lstm模型(tracing model)来填入model.predict的输入参数 2。 完成代码填空。填空位置motion_lstm.py的437行: #[填空2] 这里是改进模型的前向计算,请根据用于改进的lstm模型(refine model)来填入model.refine的输入参数 3。 需要提交内容:修改后的代码,以及训练完成后的保存的模型参数pth文件。 作业步骤: 1 首先,查看model的定义,输入输出的要求,输入参数的个数,每个参数的意义。 2 查看代码,从代码中找到这些参数变量,然后输入到模型中。模型需要的变量都已经生成,不需要自己重新构造。 3 完成后,运行run.sh 中的命令即可看到训练过程。 目录文件说明: week7/3d_tracking_week7homework/文件夹为本次多目标跟踪工程代码 1. motion_lstm.py 为跟踪模型,改进模型的训练代码。run.sh中调用了它 2. model文件夹里是本次工程中,目标检测,3dbox重建,以及跟踪过程中用到的所有模型 4. output:训练数据存放路径 ``` ![图7-1](https://images.gitee.com/uploads/images/2021/0302/200035_a6040a43_7401441.png "屏幕截图.png") ``` 数据集下载链接以及使用办法: 工程路径的checkpoint文件夹:链接: https://pan.baidu.com/s/1BorPbL-ekd13v_5mDAm8gg 密码: 7fdp 3d_tracking/data/gta5_tracking/下的pkl文件,链接: https://pan.baidu.com/s/1bx6A5Z4AjTmalL554qUT9Q 密码: knqo,其内容是faster rcnn对val数据集的检测结果 ``` week8 ``` week8 模型训练以及查漏补缺 项目代码地址:https://gitee.com/anjiang2020_admin/auto_driving_stereo_vision20210124.git Pipeline: 1. week7作业,tracking部分的训练 2. tracking中的predict部分、update部分的训练 3. 单目标跟踪 4. stereoRCNN的训练方式、代码解析 作业: 1 用MOSSE方法写一个tracker,跟踪水瓶。代码已提供,同学们完成代码的填空即可。 目的:掌握基于分类做跟踪的思路;掌握跟踪算法中,在线更新模型的的操作办法。 作业说明: 1 需要填空的地方有两处,分别是use_mosse_tracker.py的140,141行, # 按照跟踪模型更新参数公式,来更新模型模型参数 # 注意,这里要求出新的Ai,Bi,然后再将新的Ai,Bi与旧的Ai,Bi做几何平均数 2 完成填空后,python use_mosse_tracker.py 运行代码,可以看到每次输出的bbox值。 其他参考文件: week8.MOV , 待跟踪的视频 annotations ,待跟踪视频的标注,标注出每帧图像上待跟踪物的bbox week8_tracker_data ,待跟踪视频拆解成的图片序列 use_mosse_tracker.py, 待填空代码,内涵mosse跟踪器 use_mosse_tracker.py.answer ,本次作业参考代码 待跟踪视频:https://www.bilibili.com/video/BV1Y54y1273C/ ``` #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request #### 特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)