mmdetection3实例分割solov2算法实践

solov2算法简介

SOLO系列算法将实例分割任务分解为像素级分类的两个子任务,因此模型输出会预测实例掩码以及实例掩码的类别概率。为了在像素级别区分不同实例,将输入图像在概念上分为SxS个网格,如果一个对象的中心落入到一个网格内,那么这个网格就负责预测该对象的二进制掩码以及类别。因此,模型会输出SxS个masks(掩码),其中第K个位置的特征通道负责对网格位置(i,j)的实例进行分割,而k=S*i + j。算法流程很简单,无需边界框检测,类似yolov1的思想,整体流程如下图所示:
在这里插入图片描述

基于mmdetection3版本进行实践

基础环境及安装


  • Python 3.8+
  • PyTorch 2.0
  • mmcv 2.1
  • mmengine 0.10.2
  • mmdet 3.3.0
  • 详细环境配置教程请参考:环境安装

训练流程

1.数据准备

1)使用标注工具:labelme标注工具进行标注;
2)标注方式:由于需要标注目标的边界轮廓,所以标注类型为polygon;
3)标注内容:沿着目标边界区域进行标注;

2.转换为COCO数据格式

① 划分数据集,将标注的数据集划分为训练、验证和测试集:格式如下:

data/
├── ├── train
|   ├── 925rgb_1706_73.jpg
│   └── 925rgb_1706_73.json
│   └── ....
├── ├── val
|   ├── 925rgb_1706_66.jpg
│   └── 925rgb_1706_66.json
│   └── ....
...

②分别对train/val/test文件夹下的数据转为coco格式,运行labelme2coco.py,可参考该网址[labelme2coco](https://github.com/Tony607/labelme2coco),最终生成的coco数据集目录如下:

train_data/
├──  train
|   ├── 925rgb_1703_76.jpg
│   └── 925rgb_1706_73.jpg
│   └── ....
├── val
|   ├── 925rgb_1703_66.jpg
│   └── 925rgb_1706_66.jpg
│   └── ....
├──  annotations
|   ├── instance_train.json  
│   └── instance_val.json
3.修改模型训练配置文件

1)下载mmdetection源码:git clone https://github.com/open-mmlab/mmdetection

2)为自定义数据集修改SOLOv2配置文件
① 找到配置文件:configs/solov2/solov2_r50_fpn_ms-3x_coco.py

② 配置文件修改主要涉及三个方面:
1)数据集路径指定,在train_dataloader.dataset、val_dataloader.dataset、test_dataloader.dataset变量中指定数据集路径,如下:
首先定义相关变量

### 数据集配置
dataset_type = 'CocoDataset'
# 数据根目录
data_root = '/xxx/mmdetection-3.3.0/data/'
# 图像目录路径,相对根目录
train_img_root = 'train/'
<
  • 26
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值