使用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)
上一篇 2022年8月23日 上午6:00
下一篇 2022年8月23日 上午6:00


相关推荐

  • 【开源推荐】AI Interviewer:基于Spring-Alibaba-AI的智能面试官系统(附GitHub实战教程)

    【开源推荐】AI Interviewer:基于Spring-Alibaba-AI的智能面试官系统(附GitHub实战教程)

    2026年3月13日
    1
  • OpenCV之bitwise_and、bitwise_not等图像基本运算及掩膜

    OpenCV之bitwise_and、bitwise_not等图像基本运算及掩膜1 图像基本运算图像的基本运算有很多种 比如两幅图像可以相加 相减 相乘 相除 位运算 平方根 对数 绝对值等 图像也可以放大 缩小 旋转 还可以截取其中的一部分作为 ROI 感兴趣区域 进行操作 各个颜色通道还可以分别提取及对各个颜色通道进行各种运算操作 总之 对于图像可以进行的基本运算非常的多 只是挑了些常用的操作详解 voidadd InputArraysr InputA

    2026年3月19日
    2
  • openssh卸载

    openssh卸载linux ubuntu 卸载 SSH nbsp 先停掉 SSH 服务 sudostopssh nbsp 然后 sudoapt get purgeremoveo server nbsp linux centos1 卸载 yumremoveope clients nbsp nbsp yumremoveope server 先查看 openssh 的相关包 root n

    2026年3月18日
    2
  • html 设置滚动条颜色,CSS设置滚动条颜色步骤

    html 设置滚动条颜色,CSS设置滚动条颜色步骤本文向大家描述一下如何使用 CSS 设置滚动条颜色 如果你在浏览网页的时候看到网页滚动条颜色不是系统默认的样式 而是漂亮的红色或其它颜色样式 那么这就是使用 CSS 代码设置的效果 CSS 设置滚动条颜色我们在浏览网页的时候有时可以看到网页滚动条颜色不是系统默认的样式 而是漂亮的红色或其它颜色样式 其实这就是在网页代码之间加入代码来实现的 具体是哪些代码呢 页面滚动条代码及其解释如下 scrollbar 3

    2026年3月20日
    2
  • 【Linux】LD_PRELOAD用法

    【Linux】LD_PRELOAD用法LD PRELOAD 是个环境变量 用于动态库的加载 动态库加载的优先级最高 一般情况下 其加载顺序为 LD PRELOAD gt LD LIBRARY PATH gt etc ld so cache gt lib gt usr lib 程序中我们经常要调用一些外部库的函数 以 malloc 为例 如果我们有个自定义的 malloc 函数 把它编译成动态库后 通过 LD PRELOAD 加载 当程序中调用 malloc 函数时 调用的

    2026年3月19日
    2
  • 抽象工厂模式与工厂方法模式有哪些不同_工厂方法和抽象工厂

    抽象工厂模式与工厂方法模式有哪些不同_工厂方法和抽象工厂Abstract Factory动机实例模式定义结构要点总结笔记动机在软件系统中,经常面临着”一系列相互依赖的对象“的创建工作;同时,由于需求的变化,往往存在更多系列对象的创建工作如果应对这种变换?如何绕过常规的对象创建方法(new),提供一种”封装机制“来避免客户程序和这种”多系列具体对象创建工作“的紧耦合?实例数据库连接的时候会有很多关联的对象,这些对象是一个整体朴素class EmployeeDAO{public: vector<EmployeeDAO> GetEm

    2022年8月9日
    8

发表回复

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

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