【实例分割】用自己数据集复现经典论文YOLACT

YOLACT:You Only Look At CoefficienTs 

🏆论文下载:paper

🏆代码下载:code

🏆论文详解:YOLACT


目录

🍂🍂1.安装环境

🍂🍂2.数据准备

🌷🌷2.1数据下载

🌷🌷2.2数据格式解析

🍂🍂3.yolact++网络

🍂🍂4.训练yolact

🌷🌷4.1预训练模型

🌷🌷4.2训练网络代码

🌷🌷4.3Pascal SBD数据集

🍂🍂5.测试yolact

🌷🌷5.1测试单张图像并可视化结果

🌷🌷5.2测试单张图像并保存结果影像文件

🌷🌷5.3批量测试文件夹内影像并将结果把保存至指定文件夹 

🌷🌷5.4测试COCO数据集

🌷🌷5.5测试COCO数据集并将测试结果写入bbox_detection.json中

🌷🌷5.6COCO验证

🌷🌷5.7计算COCO验证集精度

整理不易,欢迎一键三连!!!

送你们一条美丽的--分割线--


🍂🍂1.安装环境

        新建安装环境命令:

conda env create -f environment.yml

        版本要求:

  • python3
  • pytorch 1.0.1 及以上版本

        安装cython、opencv、pillow等包命令:

# Cython needs to be installed before pycocotools
pip install cython
pip install opencv-python pillow pycocotools matplotlib 

🍂🍂2.数据准备

🌷🌷2.1数据下载

下载COCO2014/2017数据集,里面有label格式,可以按照这个数据格式准备自己的数据集。这里是废了很大力气的。下载数据集命令:

sh data/scripts/COCO_test.sh

        下载数据界面,过程可能比较慢。。。

🌷🌷2.2数据格式解析

        标注文件:instances_train2017.json
        以 COCO2017\annotations_train2017\annotations\instances_train2017.json
为例。这个json文件中的信息有以下5个键值所指。
        基本结构如下:

        数据集标注json文件所在目录annotations_train2017,详细文件制作过程请参考【COCO】制作自己的coco格式实例分割数据集

  • 可以在  data/config.py 文件中的dataset_base添加自己的数据集,比如:
my_custom_dataset = dataset_base.copy({
    'name': 'My Dataset',

    'train_images': 'path_to_training_images',
    'train_info':   'path_to_training_annotation',

    'valid_images': 'path_to_validation_images',
    'valid_info':   'path_to_validation_annotation',

    'has_gt': True,
    'class_names': ('my_class_id_1', 'my_class_id_2', 'my_class_id_3', ...)
})

🍂🍂3.yolact++网络

        使用yolact++网络,需要安装DCNv2网络

cd external/DCNv2
python setup.py build develop

🍂🍂4.训练yolact

        默认在coco数据集上训练,所以需要保证第2步制作的数据集是完整的coco格式,否则无法训练。

🌷🌷4.1预训练模型

  • 预训练模型应该放在 ./weights目录下
    • 下载 resnet101_reducedfc.pth—— here.
    • 下载 resnet50-19c8e357.pth —— here.
    • 下载darknet53.pth —— here.
  • 训练命令
    • 训练过程中使用ctrl+c终止训练,此时会保存一个 *_interrupt.pth 文件在当前目录.
    • 所有训练模型均存放在 ./weights 目录下,文件名命名方式为:<config>_<epoch>_<iter>.pth.

🌷🌷4.2训练网络代码

        可以通过修改config文件来修改训练参数。

# Trains using the base config with a batch size of 8 (the default).
python train.py --config=yolact_base_config

# Trains yolact_base_config with a batch_size of 5. For the 550px models, 1 batch takes up around 1.5 gigs of VRAM, so specify accordingly.
python train.py --config=yolact_base_config --batch_size=5

# Resume training yolact_base with a specific weight file and start from the iteration specified in the weight file's name.
python train.py --config=yolact_base_config --resume=weights/yolact_base_10_32100.pth --start_iter=-1

# Use the help option to see a description of all available command line arguments
python train.py --help

        多卡训练需要再以上代码前面加上一句export CUDA_VISIBLE_DEVICES=[gpus]命令来实现多卡训练。

        如果要用自己的数据集进行训练,需要修改yolact_base_config文件中的‘dataset’内容为‘my_custom_dataset’

🌷🌷4.3Pascal SBD数据集

        我们也支持Pascal SBD数据集,训练步骤如下:

  1. 从 here下载Pascal SBD数据集 下载到的数据集压缩包为benchmark.tgz
  2. 提取影像。 创建目录./data/sbd 复制 dataset/img 到 ./data/sbd/img目录下
  3. 下载COCO格式的label信息——下载地址 here.
  4. 提取label信息 ./data/sbd/.
  5. 通过 --config=yolact_resnet50_pascal_config进行PascalSBD数据集训练 

        工程支持通过 ./scripts/convert_sbd.py文件进行label格式转换。

  为验证效果,可以从 here下载 yolact_resnet50_pascal_config格式的训练模型进行比对。

🍂🍂5.测试yolact

🌷🌷5.1测试单张图像并可视化结果

# Display qualitative results on the specified image.
python eval.py --trained_model=weights/yolact_base_54_800000.pth --score_threshold=0.15 --top_k=15 --image=my_image.png

🌷🌷5.2测试单张图像并保存结果影像文件

# Process an image and save it to another file.
python eval.py --trained_model=weights/yolact_base_54_800000.pth --score_threshold=0.15 --top_k=15 --image=input_image.png:output_image.png

🌷🌷5.3批量测试文件夹内影像并将结果把保存至指定文件夹 

# Process a whole folder of images.
python eval.py --trained_model=weights/yolact_base_54_800000.pth --score_threshold=0.15 --top_k=15 --images=path/to/input/folder:path/to/output/folder

🌷🌷5.4测试COCO数据集

# This should get 29.92 validation mask mAP last time I checked.
python eval.py --trained_model=weights/yolact_base_54_800000.pth

🌷🌷5.5测试COCO数据集并将测试结果写入bbox_detection.json中

# Output a COCOEval json to submit to the website or to use the run_coco_eval.py script.
# This command will create './results/bbox_detections.json' and './results/mask_detections.json' for detection and instance segmentation respectively.

python eval.py --trained_model=weights/yolact_base_54_800000.pth --output_coco_json

🌷🌷5.6COCO验证

# You can run COCOEval on the files created in the previous command. The performance should match my implementation in eval.py.
python run_coco_eval.py

🌷🌷5.7计算COCO验证集精度

# To output a coco json file for test-dev, make sure you have test-dev downloaded from above and go
python eval.py --trained_model=weights/yolact_base_54_800000.pth --output_coco_json --dataset=coco2017_testdev_dataset

整理不易,欢迎一键三连!!!


送你们一条美丽的--分割线--

🌷🌷🍀🍀🌾🌾🍓🍓🍂🍂🙋🙋🐸🐸🙋🙋💖💖🍌🍌🔔🔔🍉🍉🍭🍭🍋🍋🍇🍇🏆🏆📸📸⛵⛵⭐⭐🍎🍎👍👍🌷🌷

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/138687.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

AIGC|如何将Milvus集成到LangFlow中?详细代码演示!

目录 一、基本介绍 二、修改langflow代码使其支持milvus 三、效果演示 langflow是一个LangChain UI&#xff0c;它提供了一种交互界面来使用LangChain&#xff0c;通过简单的拖拽即可搭建自己的实验、原型流。通过在langflow中引入Milvus&#xff0c;用户可以更方便地存储和…

Mac电脑安装打印机驱动

1.在打印机背面找到型号&#xff0c;当想要安装的驱动在官网找不到时可直接搜索该系列&#xff1a;比如MF系列 2.安装完成后需要添加打印机 当打印机和电脑在同一个WiFi下的时候查找打印机IP&#xff0c;输入IP后可以查到对应的打印机&#xff0c;添加后即可使用

动态库和静态库

目录 一、动态库和静态库二、静态库2.1 生成静态库2.2 库搜索路径 三、动态库3.1 生成动态库3.2 使用动态库3.3 运行动态库3.4 使用外部库3.5 库文件名称和引入库的名称 四、动静态库及周边知识一览图 一、动态库和静态库 静态库&#xff08;.a&#xff09;&#xff1a;程序在…

如何获取1688商品详情,价格,图片

1688是阿里巴巴旗下的B2B电子商务平台&#xff0c;主要面向国内的生产商和批发商。 通过获取到的跨境属性数据&#xff0c;可以了解到商品的跨境属性&#xff0c;例如商品的语言、原产地、适用场景等信息。这些数据可以帮助用户更好地了解商品的特点和质量&#xff0c;做出更明…

频谱测量---测量信号的功率

频谱测量 通道功率、带宽、均值频率、中位数频率、谐波失真。 使用 obw 和 powerbw 查找信号的 90% 占用带宽和 3-dB 带宽。计算功率谱的均值或中位数频率。估计给定频带上的功率。测量谐波失真。估计瞬时带宽、瞬时频率、频谱熵和谱峭度。 函数 功率和带宽 bandpowerBand…

【避雷选刊】Springer旗下2/3区,2个月录用!发文量激增,还能投吗?

计算机类 • 好刊解读 前段时间小编分析过目前科睿唯安数据库仍有8本期刊处于On Hold状态&#xff0c;其中包括4本SCIE、4本ESCI期刊&#xff08;&#x1f449;详情可见&#xff1a;避雷&#xff01;又有2本期刊被标记“On Hold”&#xff01;含中科院2区&#xff08;TOP&…

研究前沿 | Science:单细胞测序助力绘制迄今最完善的灵长类动物前大脑发育图谱

引言 大脑发育的关键分子机制在啮齿动物中已有所了解&#xff0c;但在灵长类动物中仍然不清楚&#xff0c;这限制了研究者对高级认知能力起源和功能障碍的理解。此外&#xff0c;在包括人类在内的灵长类动物中&#xff0c;关于轴突投射路径上的丘脑区域和皮层区域多样化的早期分…

优思学院|如何利用六西格玛提升自己的大格局?

首先&#xff0c;我想说大格局并不仅仅是一个概念&#xff0c;更是一种生活态度。拥有大格局的人通常能够超越日常琐事&#xff0c;将目光投向更广阔的未来。他们不会被小事困扰&#xff0c;而是将注意力集中在更大的目标和使命上。拥有大格局的人常常具备卓越的领导力和判断力…

AIGC实战——自编码器(Autoencoder)

AIGC实战——自编码器 0. 前言1. 自编码器原理2. 数据集与模型分析2.1 Fashion-MNIST 数据集2.2 自编码器架构 3. 去噪自编码器3.1 编码器3.2 解码器3.3 连接编码器和解码器3.4 训练自编码器3.5 重建图像 4. 可视化潜空间5. 生成新图像小结系列链接 0. 前言 自编码器 (Autoenc…

Linux常用的解压命令

笑小枫的专属目录 整啥幺蛾子Linux tar命令tar命令的参数范例 Linux unzip命令语法参数 整啥幺蛾子 今天在linux解压一个文件&#xff0c;顺手就来tar -zxvf xxxx &#xff0c;哦吼&#xff0c;爆竿了&#xff0c;套他猴子的。 好吧&#xff0c;承认 .gz文件解压多了&#xff…

基于springboot实现结合疫情情况的婚恋系统【项目源码】计算机毕业设计

基于springboot实现结合疫情情况的婚恋系统演示 SpringBoot框架 SpringBoot是一个全新开源的轻量级框架。基于Spring4.0设计&#xff0c;其不仅继承了Spring框架原来有的优秀特性&#xff0c;而且还通过简化配置文件来进一步简化了Spring应用的整个搭建以及开发过程。另外在原…

电脑一直IP地址错误无法上网怎么办?

电脑出现IP地址错误&#xff0c;就将无法正常上网&#xff0c;那么&#xff0c;电脑一直IP地址错误无法上网怎么办呢&#xff1f;下面我们就一起来了解一下。 方法1. 确认是否禁用本地连接 你需要先确定是否禁用了本地网络连接&#xff0c;如果发现禁用&#xff0c;则将其启用…

理事长走进统信软件,深度探讨社区发展规划 | 理事长走进系列

10 月 19 日&#xff0c;龙蜥社区“理事长走进理事单位系列交流会”活动第二期开展&#xff0c;本期走进龙蜥社区副理事长单位——统信软件&#xff0c;会议共出席 17 人。会上回顾了统信软件过去在龙蜥社区的贡献和投入&#xff0c;并共同对未来的合作计划和诉求进行了深度讨论…

解决任务栏卡死

近期许多Win10用户反映在开机进入系统后遇到了任务栏卡顿、无法正常使用的问题&#xff0c;虽然桌面能够正常操作&#xff0c;但任务栏问题依然影响了用户的使用体验。 对“Windows资源管理器”进行重启 你可以尝试按下“CtrlAltDel”快捷键&#xff0c;打开“任务管理器”&a…

Android Studio 代码上传gitLab

1、项目忽略文件 2选择要上传的项目 3、添加 首次提交需要输入url 最后在push

通过流量分析查看业务系统运行和访问情况

在当今数字化时代&#xff0c;应用程序的运行和访问情况对于企业和组织来说至关重要。无论是在线销售平台、移动应用还是企业内部系统&#xff0c;应用的性能和可用性直接影响着用户体验、业务流程以及组织效率。因此&#xff0c;对应用的运行和访问情况进行全面分析和评估&…

使用阿里云服务器学习Docker

首先我这里选择的系统服务器是CentOS 7.9 64位 因为centos系统里面的安装指令是&#xff1a;yum,而非apt-get. yum install docker -y试着建立一个容器&#xff1a; docker run -d -p 80:80 httpd启动docker的守护进程&#xff1a; sudo systemctl start docker 查看Docke…

Linux常用的压缩命令

笑小枫的专属目录 少整花活&#xff0c;直接干货Linux gzip命令语法功能参数 Linux zip命令语法参数 少整花活&#xff0c;直接干货 本文的来源就是因为上篇文章Linux常用的解压命令&#xff0c;解压整了&#xff0c;顺手整理了一波压缩命令。 Linux gzip命令 减少文件大小有…

包装类、自动装箱、自动拆箱是什么?有哪些注意点?

1、包装类 Java中的数据类型总体上分为基本数据类型和引用数据类型。引用类型的数据可以通过对象的属性和方法来进行操作&#xff0c;但对于基本数据类型的数据&#xff0c;我们能不能像操作对象那样来操作呢&#xff1f;为了实现这个目标&#xff0c;Java为8种基本数据类型分…

axios1.5取消请求,中断请求的方法

给input的onchange绑定事件 引入axios,使用axios.CancelToken.source()创建标记 实例中,把cancelToken的值填上