前言:YOLOv4这篇github其实跟YOLOv3那个差不多,但是用的pytorch1.5.0,版本更友好了,基本上执行代码就可以了,不需要很多调试。
github:https://github.com/maudzung/Complex-YOLOv4-Pytorch
一、数据集准备
这里数据集结构跟之前的结构不太一样。需要把数据集整理成如下结构:
跟上一篇博客强调的还是一样,不要自行裁剪点云数据,也不要整理划分valid和train数据集
*这里说一个问题,就是KITTI数据集是很大的,如果在pycharm里面看代码的话,就是暂时不要把data放到项目下,不然pycharm进行index工作量太大,总是出现卡死现象。等到看懂代码,再把data文件夹移动回来。
或者把index暂停下也可以(pycharm右下角)
二、运行环境准备
由于在complex-yolov3上调试耗费了很长时间,我认识到环境复原的重大意义(狗头)。
所以我尽可能配置与原作者编写代码时相同的环境。
python3.6
cuda10.2
由于服务器本身就装有cuda11.4,学习了解了多版本cuda并存
值得注意的是ubuntu20.04下载cuda10.2时,需要进行gcc和g++降级。管理多版本gcc也非常有用
然后pip install -r requirements.txt安装相应的依赖包就可以啦。
三、数据集可视化
cd src/data_process
python kitti_dataloader.py --output-width 608
四、训练模型
下载预训练参数,放在网盘里了
链接:https://pan.baidu.com/s/1__b6UxpkoXOZ727bifQefA 提取码:uxx4
下载好放到文件夹下,自己新建文件夹噢,直接下载好的代码没有这个文件夹!
服务器有两个GPU,采用多GPU训练。
python train.py --dist-url 'tcp://127.0.0.1:29500' --dist-backend 'nccl' --multiprocessing-distributed --world-size 1 --rank 0 --pretrained_path ../checkpoints/complex_yolov4/complex_yolov4/complex_yolov4_mse_loss.pth
这里的train以及后面的test如果报错:
将报错行改下:加map_location这里的参数
model.load _state _dict(torch.load(configs,pretrained_path,map_location= 'cpu' if configs.no_cuda else 'cuda:{}' .format(configs.gpu_idx)
如果想要中断训练时,记得使用ctrl+c
。而不是ctrl+z
。如果使用ctrl+z
,后续再训练会出现端口占用问题。但是也可以解决
五、浅测下mAP
1)test
python test.py --gpu_idx 0 --pretrained_path ../checkpoints/complex_yolov4/complex_yolov4_mse_loss.pth --cfgfile ./config/cfg/complex_yolov4.cfg --show_image
测试自己训练网络参数,换下pretrained_path就好
2)mAP
python evaluate.py --gpu_idx 0 --pretrained_path <PATH>