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

使用CityScapes数据集训练实例分割网络YOLACT#2020开年第一篇,谁能预料新年伊始的世界如此脆弱,中国疫情肆虐,美伊箭拔弩张,英国愤懑脱欧,儿时的偶像科比和女儿也不幸离世,生命之渺小,生活之曲折,兄弟们,要充满阳光地活着啊,人间,值得。:-)今天还是鄙人生日,愿世间多点爱,与和平。上一篇介绍了博主用CityScapes数据集提取了五类实例,并转换成了COCO数据集的标注格式(将CityScapes数据集转换为COCO格式的实例分割数据集…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

#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。

# yolact_coco 初始化权重,只训练输出层
>> python3 train.py --resume=weights/yolact_base_54_20000.pth --init_from=coco --start_iter=0   
# 整体fine-tuning
>> python3 train.py --resume=weights/yolact_base_cityscapes_256_95000.pth --start_iter=0  

使用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

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

单张图片测试:

>> 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

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • VS2008序列号_VS2008命令在哪

    VS2008序列号_VS2008命令在哪1.VisualStudio2008ProfessionalEdition:XMQ2Y-4T3V6-XJ48Y-D3K2V-6C4WT2.VisualStudio2008…

    2022年8月10日
    9
  • 群晖 winscp php,群晖DSM开启ROOT权限及WinSCP使用ROOT登录

    群晖 winscp php,群晖DSM开启ROOT权限及WinSCP使用ROOT登录本文以群晖DSM6.1.7(以下简称DSM)为例:一、准备工具1、putty2、WinSCP下载地址:http://pan.myxzy.com/download.php?id=81二、DSM开启SSHDSM的“控制面板”—>“终端机和SNMP”,勾上“启动Telnet功能”和“启动SSH功能”的勾,然后点击“应用”三、开启ROOT账号和修改密码1、使用putty连接DSM主机名称填…

    2022年6月6日
    1.4K
  • ClassLoader cl = getClass().getClassLoader()[通俗易懂]

    ClassLoader cl = getClass().getClassLoader()[通俗易懂]ClassLoadercl=getClass().getClassLoader()getClass():取得当前对象所属的Class对象  getClassLoader():取得该Class对象的类装载器

    2022年5月31日
    35
  • Fisher Information学习笔记

    Fisher Information学习笔记FisherInfomation的意义FisherInformation顾名思义,就是用来衡量样本数据的信息量的,通常我们有一组样本,我们在机器学习中需要估计出样本的分布,我们是利用样本所具有的信息量来估计参数的,样本中具有的信息量越多,估计的参数越准,样本的分布估计的就越接近真实分布,这里的信息量就是用FisherInformation来表示的。什么样本信息量比较大?我们用样本发生的概率来

    2026年1月15日
    4
  • SEO学习(九)——快速网站诊断(Google网管工具)[通俗易懂]

    SEO学习(九)——快速网站诊断(Google网管工具)[通俗易懂]SEO服务商在刚刚与客户接触时,尤其需要对目标为网站做快速检查,发现其中的重要问题。一、快速诊断的步骤:   1、检查与研究竞争对手网站时同样的指标,另外还要计算页面收录比例(即搜索引擎收录页面数也网站实际总页面数之比)。   2、查看Google网站管理员工具给出的信息。二、Google网管工具1、robots文件检查     整个网站不能收录或某个目录下所有页面都不

    2022年9月28日
    5
  • vue字符串转换成日期格式_vue时间戳转换日期格式

    vue字符串转换成日期格式_vue时间戳转换日期格式字符串转date例如(202003)转成标准时间letstr=row.startdate.slice(0,4)+”-“+row.startdate.slice(4,6);letdate=newDate(str);console.log(date);注意这里的str必须是XXXX-XX-XX形式row.startdate.slice(0,4)+“-”+row.startdate.slice(4,6);这个是处理成这样的形式。将

    2022年10月3日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号