vision-adas / code

PyTorch自动驾驶视觉感知算法实战示例代码
MIT License
46 stars 5 forks source link

勘误

第一章式(1-16)应为:

$$\frac{\partial L}{\partial W_1}=X\cdot (W2\cdot (\frac{2}{n}\sum{i=1}^{n}{(f_i-y_i)^T)^T}$$

页21,行6:

“用卷积和下采样的组合来取代转置卷积” ->

“用卷积和上采样的组合来取代转置卷积”, 感谢读者YuDongSir 的勘误

页28:

“因此,下采样层(平均化层)” ->

“因此,下采样层(平均化层)”,感谢读者 silencht 的勘误

页64,表2-7:

data = np.onesdata = np.eye ->

data = torch.ones和data = torch.eye, 感谢读者YuDongSir 的勘误

页107, 代码块中:

0,1,2,3号特征图应为原分辨率的1/32, 1/16, 1/8, 1/4,因为conv1的stride等于2,感谢读者YuDongSir 的勘误

页172,173命令改动:

因为mmdetection改变模型命名规则,模型下载应为:

mim download mmdet --config yolov3_mobilenetv2_8xb24-320-300e_coco --dest .

模型测试命令应为:

python demo/image_demo.py demo/demo.jpg yolov3_mobilenetv2_8xb24-320-300e_coco.py --weights yolov3_mobilenetv2_320_300e_coco_20210719_215349-d18dff72.pth --out-dir output --device cuda

如果.pth文件找不到,则换成完整路径,感谢读者YuDongSir 的勘误

《PyTorch自动驾驶视觉感知算法实战》示例代码

本代码库中的代码将在本书上市后继续更新和改进,包括适配更新的版本,修改bug,对书中的错漏之处进行勘误,甚至根据读者要求添加新功能。代码库中的代码可以直接训练和调试,代码亦可以用于商业用途。

gitee代码库(暂不可用):https://gitee.com/vision-adas/code

代码库的文件内容如下:

环境配置

配置Python开发环境

配置的环境为 Python3.8+Pytorch2.0.0+TorchVision0.15.0+CPU

  1. 下载安装Anaconda后,执行以下代码新建一个虚拟环境:
conda create -n book python=3.8
  1. 环境建立成功后激活环境:
conda acrtivate book
  1. 安装依赖项
pip install -r requirements.txt
  1. 检查是否成功
    cd chapter2
    python train.py

    下载数据集

Onedrive下载链接:https://1drv.ms/u/s!AiFavgbAhwpFb4H9uUxemMHQlbg

下载后得到一个munich_dataset.zip的1.7GB大小文件,将文件解压至data文件夹:

unzip munich_dataset.zip -d data

文件夹结构为

训练与部署

第四章:训练目标检测模型

在代码库的根目录下,执行以下命令即可开始训练Yolo:

PYTHONPATH=. python chapter4/train_yolo.py

执行以下命令即可开始训练TorchVision提供的FasterRCNN:

PYTHONPATH=. python chapter4/det_demo_torchvision.py

第五章:训练语义分割模型

在代码库的根目录下,执行以下命令即可开始训练语义分割模型:

PYTHONPATH=. python chapter5/train_seg.py

第六章: 训练无监督单目深度模型

在代码库的根目录下,执行以下命令即可开始无监督单目深度模型的训练:

PYTHONPATH=. python chapter6/train_depth.py

第七章:训练多任务网络模型

在代码库的根目录下,执行以下命令即可开始训练Yolo和语义分割多任务模型:

PYTHONPATH=. python chapter7/train_multitask.py

第八章:进行模型部署

部署模型之前,请先完成第七章多任务网络模型的训练,得到训练好的pth模型文件。

将模型导出为.pt和.onnx格式

打开chapter8/deploy_multitask.py文件,进行以下设置:

执行以下命令进行模型导出:

PYTHONPATH=. python chapter8/deploy_multitask.py
使用LibTorch部署模型

download.pytorch.org/libtorch/cpu/ 页面下载LibTorch 2.0.1 的CPU版本,解压至 chapter8/infer_torch 文件夹

按照顺序执行以下命令编译执行LibTorch模型

cd chapter8
docker build -t vision .
cd ..
docker run -v $(pwd):/workspace -w /workspace -it vision bash
cd chapter8/infer_torch/
mkdir build
cd build
make
cd ..
mkdir seg_pred
./build/torch_inference

如果因为网络问题导致docker镜像编译时间过长,请尝试从百度盘下载docker镜像并离线加载:

链接:https://pan.baidu.com/s/1oygq5e8BQ3M_o_ErOoWzpA?pwd=nit3 提取码:nit3

cd chapter8
docker load -i vision.tar
cd ..
docker run -v $(pwd):/workspace -w /workspace -it vision bash
cd chapter8/infer_torch/
mkdir build
cd build
make
cd ..
mkdir seg_pred
./build/torch_inference

执行完成后seg_pred文件夹中应出现推理输出的语义分割图。

使用TensorRT部署模型

由于本书示例的Docker镜像是TensorRT的镜像,因此无需安装TensorRT,可以直接按顺序执行以下命令:

docker run --gpus all -v $(pwd):/workspace -w /workspace -it vision bash
cd chapter8/infer_trt/
mkdir build
cd build
make
cd ..
mkdir seg_pred
./build/trt_inference