在查看本篇文章之前,请先查看博主的上一篇文章【Deeplabv3+】Ubutu18.04中使用pytorch复现Deeplabv3+(第一步)-----环境配置_努力弹琴的大风天的博客-CSDN博客
配置好环境之后,再进行接下来的操作
注意:本文原来是在Ubuntu18.04上测试的,后来在windows上搭建了环境,现在是在windows上测试的。
目录
一、源码、数据集和预训练下载
2.1 源码下载
2.2 cityscapes数据集准备
2.3 预训练模型预测
二、预测
1.单张图片预测
源码位置:https://github.com/VainF/DeepLabV3Plus-Pytorch
该项目中有详细的复现过程代码,大家可参考复现代码以及本文测试这个项目。
点击:Code > Download ZIP 下载即可。
下载完成后,解压到Ubuntu桌面(其它位置也可),得到项目文件夹DeepLabV3Plus-Pytorch-master。
cityscapes数据集需要注册登录才能下载,下载链接:
Login – Cityscapes Dataset
下载完成后,进入DeepLabV3Plus-Pytorch-master/datasets/data,在其中创建cityscapes文件夹,将下载的两个文件解压到此处。数据集架构:
/datasets
/data
/cityscapes
/gtFine
/leftImg8bit
至此,数据集准备完毕。
在正式训练之前,可以使用预训练模型,查看最终的预测效果。
best_deeplabv3plus_mobilenet_cityscapes_os16.pth预训练模型下载(下载需要科学上网):
下载地址(任选一个即可):
https://www.dropbox.com/sh/w3z9z8lqpi8b2w7/AAB0vkl4F5vy6HdIhmRCTKHSa?dl=0
或者
https://share.weiyun.com/qqx78Pv5
本文只使用:best_deeplabv3plus_mobilenet_cityscapes_os16.pth。其它的可以自己下载测试。
下载完成后,将其放置在DeepLabV3Plus-Pytorch-master/checkpoints中,然后切换到虚拟环境中,使用如下命令进行预测:
# 单张图片预测 test_results会生成在master中,是预测结果最终放置的位置
python predict.py --input datasets/data/cityscapes/leftImg8bit/train/bremen/bremen_000000_000019_leftImg8bit.png --dataset cityscapes --model deeplabv3plus_mobilenet --ckpt checkpoints/best_deeplabv3plus_mobilenet_cityscapes_os16.pth --save_val_results_to test_results
# 整个文件夹预测
python predict.py --input datasets/data/cityscapes/leftImg8bit/train/bremen --dataset cityscapes --model deeplabv3plus_mobilenet --ckpt checkpoints/best_deeplabv3plus_mobilenet_cityscapes_os16.pth --save_val_results_to test_results/bremen
进入pytorch虚拟环境中,使用如下代码进行训练:
# 根据自己的显卡设置相应的batch_size,显卡特别差的可能跑不起来本文3060显卡,设置为4
python main.py --model deeplabv3plus_mobilenet --dataset cityscapes --gpu_id 1 --lr 0.1 --crop_size 768 --batch_size 4 --output_stride 16 --data_root ./datasets/data/cityscapes
注意:
1.OSError: [WinError 1455] 页面文件太小,无法完成操作。 Error loading "C:\Users\Dafengtian.conda\envs\pytorch\lib\site-packages\torch\lib\cudnn_adv_train64_8.dll" or one of its dependencies.
可能是使用cpu在训练,将训练代码中--gpu_id 0改成--gpu_id 1
2.numpy.core._exceptions.MemoryError: Unable to allocate array with shape (1960931,) and data type int64
batch_size设置过大,在训练代码中,将batch_size改小。