配置环境
参考:https://github/PaddlePaddle/PaddleDetection/blob/release/2.4/docs/tutorials/INSTALL_cn.md
我的配置是:3090 cuda驱动版本11.3 runtime版本11.0 CUDNN 8.0
先有个虚拟环境:
conda create --name paddledetection python=3.7
paddledetection是paddlepaddle下的一个子模块。所以必须要先安装paddlepaddle才能运行paddledetection,因此先在官网https://www.paddlepaddle/ 找到自己配置相关的paddlepaddle命令,安装paddlepaddle:
python -m pip install paddlepaddle-gpu==2.3.1.post111 -f https://www.paddlepaddle.org.cn/whl/linux/mkl/avx/stable.html
然后测一下:
python -c "import paddle; print(paddle.__version__)"
然后安装paddleDetection:
pip install -r requirements.txt #安装依赖
python setup.py install #编译安装paddledet
再测试一下:
python ppdet/modeling/tests/test_architectures.py
整个过程其实很快。
测试推理:
# 在GPU上预测一张图片
export CUDA_VISIBLE_DEVICES=0
python tools/infer.py -c configs/ppyolo/ppyolo_r50vd_dcn_1x_coco.yml -o use_gpu=true weights=https://paddledet.bj.bcebos.com/models/ppyolo_r50vd_dcn_1x_coco.pdparams --infer_img=demo/000000014439.jpg
会先给下载一个模型:
结果: 看起来是显存不足,因为我其他程序占用着显存,清理后再执行推理: 推理成功。准备数据集
参考官方文档:
https://paddledetection.readthedocs.io/tutorials/Custom_DataSet.html
一般我打标注用labelimg,我手头有一些VOC格式的数据,如何准备的可以先参照这个文章:
https://raychiu.blog.csdn/article/details/119342153
我需要根据PaddleDetection的VOC格式要求整理一下数据:
到Annotations同级目录下:
第一步创建label文件:
echo -e "invalid\npositive\nnegative" > label_list.txt
第二步把所有图片路径组织到一个文件里:
ls JPEGImages/*.jpg | shuf > all_image_list.txt
第三步按照图片路径在前标注文件在后的格式组织一个文件:
awk -F"/" '{print $2}' all_image_list.txt | awk -F".jpg" '{print $1}' | awk -F"\t" '{print "JPEGImages/"$1".jpg Annotations/"$1".xml"}' > all_list.txt
第四步自己按照8:2的比例计算一下训练集和验证集的数目划分数据集:
head -n 1820 all_list.txt > test.txt
tail -n 7281 all_list.txt > trainval.txt
如果要训练、验证、测试都要划分,假如是8:1:1那么:
head -n 910 all_list.txt > test.txt
head -n 1820 all_list.txt | tail -n 910 > val.txt
tail -n 7281 all_list.txt > train.txt
数据集也划分好了,删了不用的文件:
rm -rf all_image_list.txt all_list.txt
是这样的目录:
## 开始训练 用yolov3训练: 先找到和是的yml文件: 注意修改voc.yml中的数据路径。python tools/train.py -c configs/yolov3/yolov3_darknet53_270e_voc.yml --eval --use_vdl=true --vdl_log_dir=vdl_dir/scalar -o use_gpu=true
参数解释:
–eval #边训练边验证 吃GPU
–use_vdl #类似于tensorboard,true开启,训练完loss可视化
–vdl_log_dir #log文件保存路径,和上面一句一起使用
-o use_gpu #是否使用gpu训练
会先自动下载一个预训练模型,然后开始训练了:
怎么用VisualDL工具看日志呢,因为服务器没有显示功能,只能远程服务器看,步骤如下: 第一步,服务器先启动VisualDL服务:visualdl --logdir vdl_dir/scalar/
可以看到自动起了一个8040的服务 第二步,windows远程服务器,并做一个端口转发:
ssh -L 10086:127.0.0.1:8040 xiaoling@192.168.6.55
第三步浏览器访问地址:http://localhost:10086/ 即可看到日志页面了:
训练完成:
## 模型部署 测试推理:python -u tools/infer.py -c configs/yolov3/yolov3_darknet53_270e_voc.yml --infer_img=demo/3.bmp
导出模型:
python -u tools/export_model.py -c configs/yolov3/yolov3_darknet53_270e_voc.yml --output_dir=./inference_model
使用python端进行预测:
python deploy/python/infer.py --model_dir=./inference_model/yolov3_darknet53_270e_voc --image_file=demo/3.bmp --device=GPU
更多推荐
paddleDetection训练自己的模型
发布评论