ubuntu搭建 自动驾驶单目3d检测smoke 环境

news/2024/7/9 23:53:39 标签: 自动驾驶, 3d, 目标检测

论文:SMOKE:Single-Stage Monocular 3D Object Detection via Keypoint Estimation
论文链接
源码
操作系统:ubuntu18.04
显卡:RTX2080TI

一、搭环境(前面和GitHub上一样,补上我踩的坑)
1.创建虚拟环境

conda create -n smoke python=3.7

2.激活smoke环境

source activate smoke

3.创建pytorch环境
torch官方提供的方法

注意:
我的显卡是2080TI,我没安装最新的torch,怕有问题,我之前用的1.7, 1.8, 1.9都是没问题的。所以我安装了1.7。

我一般都不用conda安装,喜欢用pip安装,这边看自己的习惯。

pip install torch==1.7.1+cu110 torchvision==0.8.2+cu110 torchaudio===0.7.2 -f https://download.pytorch.org/whl/torch_stable.html

4.检查环境是否搭建成功

python
import torch
torch.cuda.is_available()
torch.zeros(1).cuda()

二、 准备训练工作
1.克隆代码
文件夹找到smoke环境,右键,选择从终端打开,执行:

git clone https://github.com/lzccccc/SMOKE

2.修改DCNv2文件
说明:这里使用的torch版本为1.7,所以要修改成对应1.7版本的dcn文件
pytorch1.7时需要用这个库torch1.7对应的DVN2

首先下载DCNv2文件:

git clone -b pytorch_1.7 https://github.com/lbin/DCNv2.git

然后,将SMOKE源码中的smoke/csrc中的文件全部替换为DCNv2/src中的文件,将smoke/layers/dcn_v2.py文件替换为DCNv2/dcn_v2.py文件。
3.上述工作完成后,再cd到SMOKE目录:

cd SMOKE
python setup.py build develop

然后新建数据集目录,并连接到数据集(提前准备好数据集格式)

mkdir datasets
ln -s /path_to_kitti_dataset datasets/kitti

注意:
关于数据集稍微啰嗦一句。
我的数据集目录结构是这样的,train的SMOKE/datasets/kitti/training

kitti
│──training
│    ├──calib 
│    ├──label_2 
│    ├──image_2
│    └──ImageSets
└──testing
     ├──calib 
     ├──image_2
     └──ImageSets

我的网盘kitti数据集链接: https://pan.baidu.com/s/1te2spGGUtSiNmCOZNqvODQ
提取码: 7btg
可以自取,下好了按照上面目录放就行。

4.开始训练

对于单GPU,执行:

python tools/plain_train_net.py --config-file "configs/smoke_gn_vector.yaml"

根据自己电脑的性能,修改config中的batch_size,修改num_works=0。
5.在单GPU上进行test:

python tools/plain_train_net.py --eval-only --config-file "configs/smoke_gn_vector.yaml"

测试DCN是否可以编译:

git clone -b pytorch_1.7 https://github.com/lbin/DCNv2.git
cd DCNv2
./make.sh

正常人到这边应该结束了。能训练能预测不报错。但我不是正常人,在单GPU上进行test一直报错。

错误1
FileNotFoundError: [Errno 2] No such file or directory: ‘./smoke/data/datasets/evaluation/kitti/kitti_eval’
官方issues里找到了解决方案:

../smoke/data/datasets/evaluation/kitti/kitti_eval 
should be
 ./smoke/data/datasets/evaluation/kitti/kitti_eval

错误2
FileNotFoundError: [Errno 2] No such file or directory: ‘datasets/kitti/testing/ImageSets/test.txt’
数据集链接是这个

下好了里面的txt放ImageSets里

错误3
ERROR: Couldn’t read: 004627.txt of ground truth. Please write me an email! An error occurred while processing your results

官方issues有解决方案 官方issues
两种方法我都可以。造成这个的原因
原因
解释的很清楚。因为测试集没有标签,所以将config/smoke_gn_vector.yaml里的 using " TEST: (“kitti_test”,) " and TEST_SPLIT: “test” 换成"TEST: (“kitti_train”,)" and TEST_SPLIT: “val”。
第一种:

also make sure to have gnuplot, ghostscript, texlive-extra-utils installed

这样再测试我是没问题的。

第二种:

sudo apt-get install texlive-extra-utils
sudo apt-get install gnuplot
sudo apt-get install ghostscript
git clone https://github.com/asharakeh/kitti_native_evaluation.git
cd /content/kitti_native_evaluation
cmake ./
make

再运行这句:

./evaluate_object_3d_offline /media/qiao/autopilot/SMOKE/datasets/kitti/training/label_2  /media/qiao/autopilot/SMOKE/tools/logs/inference/kitti_train

result would be similar to this :

cyclist_detection_AP : 96.161880 96.238068 91.152649
PDFCROP 1.38, 2012/11/02 - Copyright © 2002-2012 by Heiko Oberdiek.
==> 1 page written on cyclist_detection_AP.pdf’. cyclist_orientation_AOS : 95.185928 95.402016 90.347366 PDFCROP 1.38, 2012/11/02 - Copyright © 2002-2012 by Heiko Oberdiek. ==> 1 page written on cyclist_orientation_AOS.pdf’.
car_detection_BEV_AP : 86.162407 82.500969 75.850616
PDFCROP 1.38, 2012/11/02 - Copyright © 2002-2012 by Heiko Oberdiek.
==> 1 page written on `car_detection_BEV_AP.pdf’.
结果图

接下来不算问题,我想可视化kitti数据集,网上找了找办法。
链接: KITTI Object data transformation and visualization

我是直接用的smoke虚拟环境:

  1. 安装 opencv, pillow, scipy, matplotlib
pip install opencv-python pillow scipy matplotlib
  1. 安装mayai
    官方是 conda install mayavi -c conda-forge
    我直接 pip install mayavi --user
  2. test install
python kitti_object.py --show_lidar_with_depth --img_fov --const_box --vis

这句运行的时候报错。
错误1
pip install pyqt5时报错:Preparing wheel metadata … error
按照这个博客解决问题 anaconda下tensorflow安装遇到的问题记录及解决办法

sudo pip install --user pyqtwebengine==5.12
sudo pip install --user pyqt5==5.12
sudo pip install typed-ast

这三行可以解决问题。

其他问题我忘了,想起来再补。
运行
python kitti_object.py --show_lidar_with_depth --img_fov --const_box --vis --show_image_with_boxes

最终的图像结果
我这边也是能正常显示图像结果的。


http://www.niftyadmin.cn/n/114324.html

相关文章

【Python学习笔记】第二十五节 Python MySQL

Python 连接到 MySQL 数据库有几种不同的连接方法,而且不是所有的方法都能与不同的操作系统很好地配合.MySQL connector/Python模块是Oracle支持的官方驱动,用于通过Python连接MySQL。该连接器完全是Python语言,而mysqlclient是用C语言编写的…

SYSU程设c++(第二周) string、函数重载、constexpr、auto

创建string对象: string s1; // s1 未使用初始化参数,即默认初始化为空字符串 string s2 "c" ; //不是赋值运算,它等价于 string s2("c") ,是初始化 string s3 (5, s); // s4 初始化为 5 个 s; string…

计算机网络安全基础知识2:http超文本传输协议,请求request消息的get和post,响应response消息的格式,响应状态码

计算机网络安全基础知识: 2022找工作是学历、能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很多算法学生都得去找开发,测开 测开的话,你就得学数据库,sql,oracle,尤…

Oracle 使用SQL*Loader导入文本数据

把txt或者csv文件导入oracle最方便的方法是通过plsql的文本导入器导入,但是导入大批量数据时文本导入器效率慢,可以使用oracle命令行sqlldr导入更快速。 sqlldr介绍: SQL*Loader将外部文件中的数据加载到Oracle数据库表中,SQL使…

sdwan方案有哪些 SD-WAN怎么搭建

随着sdwan网络架构的形成到目前的广泛应用到各行业之中,足见sdwan方案已经逐步的走向成熟。sdwan软件定义网络可在包括公共Internet,MPLS和宽带在内的标准网络传输服务上运行,解决了很多跨区域之间网络传输数据的难题。那么,sdwan…

【项目实战】为什么我选择使用CloseableHttpClient,而不是HttpClient,他们俩有什么区别?

一、HttpClient介绍 HttpClient是Commons HttpClient的老版本,已被抛弃,不推荐使用; HttpClient是一个接口,定义了客户端HTTP协议的操作方法。 它可以用于发送HTTP请求和接收HTTP响应。 HttpClient接口提供了很多方法来定制请求…

Centos7 + Django外网无法访问

问题一、Centos7,放开防火墙端口访问8000,浏览器访问时仍然找不到网址 在防火墙启动的状态下开放端口firewall-cmd --zonepublic --add-port8000/tcp --permanent然后刷新防火墙systemctl reload firewalld systemctl restart firewalld(ll_env) [rootl…

【文本对齐】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、一级标题二级标题三级标题四级标题五级标题六级标题总结前言 提示:这里可以添加本文要记录的大概内容: 例如:以下是官方博客例子浅析 先加入相关的头文件和库文件。 提示:以下是本篇…