前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用CityScapes数据集训练实例分割网络YOLACT

使用CityScapes数据集训练实例分割网络YOLACT

作者头像
全栈程序员站长
发布2022-09-23 10:28:32
1.1K0
发布2022-09-23 10:28:32
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

#2020开年第一篇,谁能预料新年伊始的世界如此脆弱,中国疫情肆虐,美伊箭拔弩张,英国愤懑脱欧,儿时的偶像科比和女儿也不幸离世,生命之渺小,生活之曲折,兄弟们,要充满阳光地活着啊,人间,值得。:-)今天还是鄙人生日,愿世间多点爱,与和平。

上一篇介绍了博主用CityScapes数据集提取了五类实例,并转换成了COCO数据集的标注格式(将CityScapes数据集转换为COCO格式的实例分割数据集),实现它的目的是为了拿去训练YOLACT。

YOLACT是加州大学2019年提出的能够达到实时的实例分割网络,在目标检测已经应用广泛的时候,对目标的描述更加精细的实例分割就成了下一个热点话题,网络不过多介绍了,可以学习论文和代码:

YOLACT: Real-time Instance Segmentation

YOLACT++: Better Real-time Instance Segmentation

Github-YOLACT

这篇文章主要介绍博主利用yolact源码在CityScapes上训练、测试的操作过程,完整项目链接:yolact_cityscapes_550

Yolact默认配置是ResNet-101+FPN框架,输入550×550,保持网络配置不变,用自己的数据集训练需要以下步骤:

1、生成COCO Style的标注文件(.json),这部分参考上文所述博客即可。

2、在data/config.py中创建自己数据集的config信息,在博主的项目中已经把yolact原本的配置都删掉了,只保留了用cityscapes训练测试的配置,并且将其设为默认配置,拿去训练自己数据集的时候需要修改类别名、类别数以及图片、标注文件存放位置等等,还需要在yolact的配置中加入自己的数据集,还有训练时候的参数等都可以在config.py里修改。

此外,为了实现一些功能,修改了原始代码中的一些函数,并修补了几个Bug。

使用yolact_coco权重初始化训练:

原生yolact是用imagenet预训练、coco上fine-tune的,由于我们自己的数据集类别与coco不同,想要直接利用作者提供的权重初始化网络,需要把输出层的权重拿掉,训练也需要分两步:先只对输出层权重进行训练,再进行所有参数的fine-tune。

代码语言:javascript
复制
# yolact_coco 初始化权重,只训练输出层
>> python3 train.py --resume=weights/yolact_base_54_20000.pth --init_from=coco --start_iter=0   
代码语言:javascript
复制
# 整体fine-tuning
>> python3 train.py --resume=weights/yolact_base_cityscapes_256_95000.pth --start_iter=0  
使用CityScapes数据集训练实例分割网络YOLACT
使用CityScapes数据集训练实例分割网络YOLACT

训练默认batch_size为8,需要占用11G以上的显存,用什么卡需要注意,1张约占1.5G。过程中如果中断,/weights目录下会生成断点,–resume也可以从断点文件开始训,只不过不需要再加–start_iter这个参数。

训练过程的所有loss以及validation的结果会在shell中输出,同时也会保存在/logs目录下以日期为后缀的.log中。为了方便评估与分析,log2pic.py用于读取log文件并将训练与测试的结果绘制成折线图,这个小脚本不太成熟,但简单易读,稍加修改就可以任意使用。

PS:为了显示博主自己的五个类的validation结果,在eval.py中加入了各类mAP的计算以及在train.py中加入了各类val结果的log保存,代码质量较低,诸位可据需求删改。

使用CityScapes数据集训练实例分割网络YOLACT
使用CityScapes数据集训练实例分割网络YOLACT
使用CityScapes数据集训练实例分割网络YOLACT
使用CityScapes数据集训练实例分割网络YOLACT
使用CityScapes数据集训练实例分割网络YOLACT
使用CityScapes数据集训练实例分割网络YOLACT

关于Evaluation,基本保留了原生yolact的操作,只是切记默认config是博主自己定义的yolact_base_cityscapes_config,增加配置可以用–config=调用,也可以直接修改默认配置。

单张图片测试:

代码语言:javascript
复制
>> python3 eval.py --trained_model=weights/yolact_base_cityscapes_256_95000.pth --score_threshold=0.15 --top_k=15 --image=aachen_000021_000019_leftImg8bit.png:cityscapes_550.png
使用CityScapes数据集训练实例分割网络YOLACT
使用CityScapes数据集训练实例分割网络YOLACT

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/172452.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档