实例分割-Yolact/Yolact++训练自己数据集

前言
本文主要用于记录实例分割模型yolact和yolact++的环境配置,以及成功训练自己数据集的整个过程~

注意:这里要重点提醒一下,DCNv2对RTX系列不友好,我第一次使用4090服务器,编译持续有问题,被迫放弃,这里使用2080TI进行操作!

源码地址:https://github.com/dbolya/yolact

目录

  • 一、Yolact环境配置
  • 二、训练准备
  • 三、yolact训练
  • 四、 数据集测试
  • 五、Yolact++环境配置

一、Yolact环境配置

基础环境:python=3.8、pytorch=1.7.0、cuda=11.0、ubuntu18.04

1、创建一个anaconda虚拟环境

conda create -n yolact python=3.8  //环境名为yolact ,python版本选择3.8
conda activate yolact              //激活yolact 环境

2.查看安装的:

nvcc --version #查看cuda版本python     #查看pytorch
>>> import torch
>>> print(torch.cuda.is_available())
True
>>> print(torch.version.cuda)
11.0

3.安装所需要的依赖:

pip install cython
pip install opencv-python
pip install pillow
pip install pycocotools#用此方式:pip install git+https://github.com/philferriere/cocoapi.git#subdirectory=PythonAPI
pip install matplotlib 

二、训练准备

1、下载预训练权重

把权重文件放到yolact-master下的weights文件夹里

下载地址:https://github.com/dbolya/yolact

在这里插入图片描述

2、数据集文件夹结构

在这里插入图片描述
coco文件夹,里面包含annotations以及images。其中annotations包含instances_train2017.json以及instances_val2017.json; images中包含train2017以及val2017用于存放训练与验证数据集。

3、参数修改

(1)coco_classes与coco_label_map

修改数据加载的位置即可,具体来说,找到./data/config.py目录,为自己的数据集格式
在这里插入图片描述

(2)dataset_base地址

在这里插入图片描述

将训练数据集和验证数据集的加载地址切换为自己的数据集地址,注意此处只要修改了images的地址就可以

(3)修改coco2014_dataset或coco2017_dataset的信息,如下:

在这里插入图片描述

(4)修改coco_base_config

此处的max_iter并不是控制训练轮数的

在这里插入图片描述

(5)修改yolact_base_config
在这里插入图片描述

(6)其他的训练参数在train.py文件处修改

parser = argparse.ArgumentParser(description='Yolact Training Script')
parser.add_argument('--batch_size', default=8, type=int,help='Batch size for training')
parser.add_argument('--resume', default=None, type=str,help='Checkpoint state_dict file to resume training from. If this is "interrupt"'\', the model will resume training from the interrupt file.')
parser.add_argument('--start_iter', default=-1, type=int,help='Resume training at this iter. If this is -1, the iteration will be'\'determined from the file name.')
parser.add_argument('--num_workers', default=4, type=int,help='Number of workers used in dataloading')
parser.add_argument('--cuda', default=True, type=str2bool,help='Use CUDA to train model')
parser.add_argument('--lr', '--learning_rate', default=None, type=float,help='Initial learning rate. Leave as None to read this from the config.')
parser.add_argument('--momentum', default=None, type=float,help='Momentum for SGD. Leave as None to read this from the config.')
parser.add_argument('--decay', '--weight_decay', default=None, type=float,help='Weight decay for SGD. Leave as None to read this from the config.')
parser.add_argument('--gamma', default=None, type=float,help='For each lr step, what to multiply the lr by. Leave as None to read this from the config.')
parser.add_argument('--save_folder', default='weights/',help='Directory for saving checkpoint models.')
parser.add_argument('--log_folder', default='logs/',help='Directory for saving logs.')
parser.add_argument('--config', default=None,help='The config object to use.')
parser.add_argument('--save_interval', default=10000, type=int,help='The number of iterations between saving the model.')
parser.add_argument('--validation_size', default=5000, type=int,help='The number of images to use for validation.')
parser.add_argument('--validation_epoch', default=2, type=int,help='Output validation information every n iterations. If -1, do no validation.')
parser.add_argument('--keep_latest', dest='keep_latest', action='store_true',help='Only keep the latest checkpoint instead of each one.')
parser.add_argument('--keep_latest_interval', default=100000, type=int,help='When --keep_latest is on, don\'t delete the latest file at these intervals. This should be a multiple of save_interval or 0.')
parser.add_argument('--dataset', default=None, type=str,help='If specified, override the dataset specified in the config with this one (example: coco2017_dataset).')
parser.add_argument('--no_log', dest='log', action='store_false',help='Don\'t log per iteration information into log_folder.')
parser.add_argument('--log_gpu', dest='log_gpu', action='store_true',help='Include GPU information in the logs. Nvidia-smi tends to be slow, so set this with caution.')
parser.add_argument('--no_interrupt', dest='interrupt', action='store_false',help='Don\'t save an interrupt when KeyboardInterrupt is caught.')
parser.add_argument('--batch_alloc', default=None, type=str,help='If using multiple GPUS, you can set this to be a comma separated list detailing which GPUs should get what local batch size (It should add up to your total batch size).')
parser.add_argument('--no_autoscale', dest='autoscale', action='store_false',help='YOLACT will automatically scale the lr and the number of iterations depending on the batch size. Set this if you want to disable that.')

三、yolact训练

python train.py --config=yolact_base_config

训练如下:

在这里插入图片描述

四、 数据集测试

python eval.py --trained_model=weights/yolact_base_0_500.pth --benchmark --max_images=1000

效果如下:

在这里插入图片描述

五、Yolact++环境配置

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

window安装elasticsearch和可视化界面kibana

ElasticSearch 官网下载zip安装包并解压 Elasticsearch:官方分布式搜索和分析引擎 | Elastic 修改配置文件 改选项是指定ssl访问还是普通http访问 不改的话使用http访问不了,得使用https 浏览器访问 localhost:9200 Kibana Download Kibana Free |…

Android Listview notifyDataSetChanged() 不起作用

private ArrayList<Map<String, String>> data new ArrayList<Map<String, String>>(); private ArrayList<Map<String, String>> delivered_data new ArrayList<Map<String, String>>(); 如果直接将arraylist 的数据直接…

机器学习-31-多变量异常检测LOF算法(实战)

一文读懂异常检测 LOF 算法(Python代码) 1 LOF算法 一个经典的异常检测算法:局部离群因子(Local Outlier Factor),简称LOF算法。 Local Outlier Factor(LOF)是基于密度的经典算法(Breuning et. al. 2000), 文章发表于SIGMOD 2000, 到目前已经有3000+的引用。 在LOF之前…

人大高瓴发布Think-on-Graph 2.0,基于知识图的大模型推理再升级!

经常参加高考的朋友可能会体会到&#xff0c;比起死记硬背知识点&#xff0c;将知识整理成脉络往往会获得事半功倍的效果。其实对于大模型来说也是如此&#xff0c;哪怕被允许“开卷作答”&#xff0c;即通过检索增强&#xff08;Retrieval-augmented generation&#xff0c;RA…

HCIP学习作业一 | HCIA复习

要求&#xff1a; R1-R2-R3-R4-R5 RIP 100 运行版本2 R6-R7 RIP 200 运行版本1 1.使用合理IP地址规划网络&#xff0c;各自创建环回接口 2.R1创建环回 172.16.1.1/24 172.16.2.1/24 172.16.3.1/24 3.要求R3使用R2访问R1环回 4.减少路由条目数量&#xff0c;R1-R2之间…

【AD域】搭建AD域服务器

环境 服务器&#xff1a;Windows Server 2016 Standard&#xff0c;版本1607 准备 1、设置主机名 2、配置静态IP地址 3、以本地管理员权限登录服务器 步骤 1、在服务器添加【Active Directory】域服务功能 2、AD域服务器配置

fastjson-小于1.2.47绕过

参考视频&#xff1a;fastjson反序列化漏洞3-<1.2.47绕过_哔哩哔哩_bilibili 分析版本 fastjson1.2.24 JDK 8u141 分析流程 分析fastjson1.2.25更新的源码&#xff0c;用JsonBcel链跟进 先看修改的地方 fastjson1.2.24 if (key JSON.DEFAULT_TYPE_KEY && !…

校园课程助手【4】-使用Elasticsearch实现课程检索

本节将介绍本项目的查询模块&#xff0c;使用Elasticsearch又不是查询接口&#xff0c;具体流程如图所示&#xff08;如果不了解Elasticsearch可以使用sql语句进行查询&#xff09;&#xff1a; 这里是两种方法的异同点&#xff1a; Mysql&#xff1a;擅长事务类型操作&#…

PHP苹果 V X iPhone微商i o s多分开V X语音转发密友朋友圈一键跟圈软件

苹果VX神器&#xff01;iPhone微商必备&#xff1a;ios多开、VX语音转发、密友朋友圈一键跟圈软件大揭秘&#xff01; 一、iOS多开新境界&#xff0c;工作生活两不误&#xff01; 你是不是也烦恼过&#xff0c;想要在工作号和生活号之间自由切换&#xff0c;却因为iPhone的限制…

【C++程序设计】——利用数组处理批量数据(一)

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;开发者-削好皮的Pineapple! &#x1f468;‍&#x1f4bb; hello 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 削好皮的Pineapple! 原创 &#x1f468;‍&#x1f4…

【LeetCode每日一题】盛最多水的容器

思路 标签:双指针&#xff0c;贪心 分析&#xff1a; 首先选两条线为容器的两端&#xff0c;盛水的高度取决于高度小的那条线&#xff0c;此时在两条线中间选一条线&#xff0c;有两种情况&#xff0c;如果区间内某条线比两端高度小的那条线还要小&#xff0c;此时宽度和高度…

PLC控制器-耦合变压器的作用

华强盛电子导读&#xff1a;PLC耦合变压器 &#xff0c;前面199中间2643后面0038完。 耦合变压器在电子电路中扮演着重要的角色&#xff0c;尤其是在模拟电路的构建中。它的主要作用可以从以下几个方面进行详细阐述&#xff1a; 1. **信号耦合**&#xff1a; - 耦合变压器…

C++ : namespace,输入与输出,函数重载,缺省参数

一&#xff0c;命名空间(namespace) 1.1命名空间的作用与定义 我们在学习c的过程中&#xff0c;经常会碰到命名冲突的情况。就拿我们在c语言中的一个string函数来说吧&#xff1a; int strncat 0; int main() {printf("%d", strncat);return 0; } 当我们运行之后&…

大型赛事5G室内无线网络保障方案

大型活动往往才是国家综合实力的重要体现&#xff0c;其无线网络通信保障工作需融合各类新兴的5G业务应用&#xff0c;是一项技术难度高、方案复杂度高的系统工程。尤其在活动人员复杂、现场突发情况多、网络不稳定等情况下&#xff0c;如何形成一套高效、稳定的应急通信解决方…

C++入门级文章

一、一个用于查询C标准库内函数、操作符等的链接 https://legacy.cplusplus.com/reference/ 声明&#xff1a;该文档并非官方文档&#xff0c;但其具有易于查询和使用的优势&#xff0c;足够日常使用。 二、C的第一个程序 1、C语言中的语法在C中仍旧适用&#xff0c;首先我们来…

无人机无刷电机技术详解及选型

1. 技术原理 无人机无刷电机&#xff08;Brushless DC Motor, BLDC&#xff09;是现代无人机动力系统的核心部件&#xff0c;其工作原理基于电磁感应和换向技术&#xff0c;实现了无需物理接触即可持续旋转的高效率动力输出。与传统有刷电机相比&#xff0c;无刷电机通过电子换…

Java入门、进阶、强化、扩展、知识体系完善等知识点学习、性能优化、源码分析专栏分享

场景 作为一名Java开发者&#xff0c;势必经历过从入门到自学、从基础到进阶、从学习到强化的过程。 当经历过几年企业级开发的磨炼&#xff0c;再回头看之前的开发过程、成长阶段发现确实是走了好多的弯路。 作为一名终身学习的信奉者&#xff0c;秉承Java体系需持续学习、…

【C++高阶】:C++11的深度解析上

✨ 心似白云常自在&#xff0c;意如流水任东西 &#x1f30f; &#x1f4c3;个人主页&#xff1a;island1314 &#x1f525;个人专栏&#xff1a;C学习 &#x1f680; 欢迎关注&#xff1a;&#x1f44d;点赞 &#x1f4…

Spring Cache框架(AOP思想)+ Redis实现数据缓存

文章目录 1 简介1.1 基本介绍1.2 为什么要用 Spring Cache&#xff1f; 2 使用方法2.1 依赖导入&#xff08;Maven&#xff09;2.2 常用注解2.3 使用步骤2.4 常用注解说明1&#xff09;EnableCaching2&#xff09;CachePut3&#xff09;Cacheable4&#xff09;CacheEvict 3 注意…

数据库相关概念大全!

一、什么是数据库&#xff1f; 1.数据库 数据库是一种更易于访问、更高效且更有条理的长期存储和处理信息的方式。 2. 优点&#xff0c;作用 数据库存储数据的规范性和系统性以及其检索数据的便捷性使其成为基于 Web 的应用程序中重要的部分。 数据库几乎可以用于所有应用程…