如何标注mask用于图像分割模型训练(VIA标注semantic segmentation数据集的mask)

分割结果可视化:怎么把标签mask轮廓显示在原图上 记录可模型结果可视化出现的问题 阅读详情
AI摘要

本文探讨深度学习在图像分割的应用,特别是实例分割技术,如Mask R-CNN。介绍了如何使用VIA标注工具和Python代码将JSON标注文件转换为Mask图片,用于深度学习模型的训练。

更多文章,请访问嗨大卫博客

近几年深度学习发展非常迅猛,深度学习用于图像识别、分割等方面效果非常好,像mask rcnn这类网络已经可以做到对象分割了(instance segmentation)。再不跟进就落伍了!!

下图直观的区分了这四种不同处理任务的效果。Instance segmentation的任务不单把cube这个物体找到了,还要分割出不同cube对象。
在这里插入图片描述
网上看别人的研究成果都觉得效果很好,实践起来到底怎么样了?

最近尝试下github上的Image Segmentation Keras

训练前,首先要准备数据集,需要标注大量mask图片,找了几款标注工具,只能导出json文件,下面分享下如何把json文件转化成mask 图片。

首先,使用VIA标注工具,标注物体轮廓,导出json文件。json文件里包括了图片中物体的轮廓坐标信息。

标注工具比较多,比如有名的像labelme、VIA等,而VIA是网页版的,用起来比较简单方便,而且流畅,无需安装。

在这里插入图片描述

导出的json文件长这样儿的:

{
  "_via_settings": {...},
  "_via_img_metadata": {
    "1.png19539": {
      "filename": "1.png",
      "size": 19539,
      "regions": [
        {
          "shape_attributes": {
            "name": "polyline",
            "all_points_x": [
              138,
              149,
              265,
              347,
              364,
              367,
              362,
              352,
              257,
              222,
              162,
              151,
              136
            ],
            "all_points_y": [
              246,
              226,
              198,
              208,
              218,
              258,
              468,
              489,
              552,
              560,
              542,
              524,
              248
            ]
          },
          "region_attributes": {}
        }
      ],
      "file_attributes": {}
    },
    "2.png34896": {...},
    "3.png65485": {...}
  }
}    

运行下面python代码,加载刚才的json文件,解析出轮廓坐标,通过opencv的pointPolygonTest方法,区分物体内还是物体外的像素点,附上不同颜色数值,如该例中,背景像素为0,物体像素为1。保存成图片。

import os
import json
import numpy as np
import skimage.draw
import cv2

IMAGE_FOLDER = "./train/"
MASK_FOLOER = "./mask/"
PATH_ANNOTATION_JSON = 'box.json'

# 加载VIA导出的json文件
annotations = json.load(open(PATH_ANNOTATION_JSON, 'r'))
imgs = annotations["_via_img_metadata"]

for imgId in imgs:
    filename = imgs[imgId]['filename']
    regions = imgs[imgId]['regions']
    if len(regions) <= 0:
        continue

    # 取出第一个标注的类别,本例只标注了一个物件
    polygons = regions[0]['shape_attributes']

    # 图片路径
    image_path = os.path.join(IMAGE_FOLDER, filename)
    # 读出图片,目的是获取到宽高信息
    image = cv2.imread(image_path)  # image = skimage.io.imread(image_path)
    height, width = image.shape[:2]

    # 创建空的mask
    maskImage = np.zeros((height,width), dtype=np.uint8)
    countOfPoints = len(polygons['all_points_x'])
    points = [None] * countOfPoints
    for i in range(countOfPoints):
        x = int(polygons['all_points_x'][i])
        y = int(polygons['all_points_y'][i])
        points[i] = (x, y)

    contours = np.array(points)

    # 遍历图片所有坐标
    for i in range(width):
        for j in range(height):
            if cv2.pointPolygonTest(contours, (i, j), False) > 0:
                maskImage[j,i] = 1

    savePath = MASK_FOLOER + filename
    # 保存mask
    cv2.imwrite(savePath, maskImage)

生成图片保存在mask的文件夹里,每张mask png图片跟原图名字一样,方便后面做训练。

正常来说,导出的mask图片用肉眼看是黑色的,为了看到mask效果,把背景像素设置成0,物体像素设置成255,这样就能看到效果了。下图是行李箱mask的直观效果。
在这里插入图片描述

利用labelme制作语义分割masks掩膜数据集 制作语义分割数据集 阅读详情

相关推荐

OpenCV笔记( 关于掩膜应用;cv.bitwise_and(img,img,mask = mask))

首先把本次学习的代码摆上 import numpy as np import cv2 as cv from matplotlib import pyplot as plt # 1. 直接以灰度图的方式读入 img = cv.imread('D://02.cs//image//cat.jpeg',0) # 2. 创建蒙版 mask = np.zeros(img.shape[:2], np.uint8) mask[400:650, 200:500] = 255#255是白色,1是黑色;开始的左上坐标和右下坐

weixin_45362017的博客 3187

【Pair使用笔记指南1】标注文件语义分割 mask 处理

pair标注后保存的文件,是一个压缩文件。解压后会包含一个json文件和一个nii文件。本文就将对nii文件进行解析。完成各个类别的分拆,验证是否存在问题。 官方Pair标注结果读取说明可以通过软件获取。标记后解析nii文件后的mask图例如下。下文采用倒叙方式,一步步由结果探究由来。 将pair标记好的mask,与原始图进行匹配。经过了两次变换,分别是旋转90度和水平翻转(这块没有来得及和官方人员进行沟通,没有明白其中的思路,为什么保存的nii文件,还需要两步操作才能和pair软件显示的对应上)

钱多多先森 5189

视觉特征-自监督-同源不同crop视图一致性【2025-08】:DINOv3【DINOv2+Gram损失=DINO损失+(iBOT损失+Gram损失)+KoLeo正则化损失】

自监督学习有望消除手动数据标注的必要性,从而使模型能够轻松处理大规模数据集以及更复杂的架构。由于无需针对特定任务或领域进行定制,这种训练方式能够利用单一算法从各种来源获取视觉表征,这些来源包括自然图像和航空图像等。本技术报告介绍了 DINOv3,它通过简单而有效的策略,为实现这一目标迈出了重要一步。首先,我们通过精心设计数据准备流程并进行优化,从而提升数据集与模型规模的扩展能力;其次,我们提出了一种名为“Gram 锚定”的新方法,该方法有效解决了在长时间训练过程中特征图质量会下降这一长期存在的难题。

u013250861的博客 351

图像处理-Mask理解

可参考 图像中的掩膜(Mask)是什么 Mask矩阵理解

qq_38261075的博客 1370

视觉特征-自监督-同源不同crop视图一致性【2023-04】:DINOv2(无监督学习鲁棒视觉特征)【12 亿张互不重复的图像】【判别式自监督方法】【交叉熵损失+iBOT损失】

近期,自然语言处理领域在大量数据上进行模型 Pretraining 取得的突破,为计算机视觉中类似Foundation Model 的发展开辟了道路。这些模型能够生成通用视觉特征,即无需微调即可跨图像分布和任务发挥作用的特征,从而大幅简化图像在任何系统中的使用。本研究表明,现有的 Pretraining 方法,尤其是自监督方法,如果在来自多样化来源的充足精选数据上进行训练,便能够产生此类特征。我们重新审视了现有方法,并结合不同技术,从数据规模和模型规模两方面扩展我们的 Pretraining。

u013250861的博客 363

视觉特征-自监督-掩码特征预测【2026-03】:V-JEPA2.1【2B】【全Token稠密预测损失】【多层深度自监督】【图像/视频多模态Tokenizer】【160万小时视频】【1.42亿张图像】

Lorenzo Mur-Labadia1,2,∗, Matthew Muckley1, Amir Bar1, Mido Assran1, Koustuv Sinha1, Mike Rabbat1, Yann LeCun1, Nicolas Ballas1,†, Adrien Bardes1,†1FAIR at Meta, 2Universidad de Zaragoza ∗Work done at Meta, †Joint last authorWe present V-JEPA 2.1, a family

u013250861的博客 353

2021-08-27 分割之后mask在原图中提取出来(语义分割—实例分割)

原图和mask如下: 生成如图: 如图: 生成图像: 上面这种出来是透明背景32位的,并不是白色!!!! 另一种出来版本是黑色背景: 出图如下: 如果加上背景的话:(像素黑的就是0,随便附加颜色) 1.opencv抠图 (扣出背景是黑色,24位) 效果:原图:24位 mask:24位 opencv扣出效果:背景是黑色的,24位 2.pillow抠图 (扣出背景是黑色,24位) 原图24位——mask24位-——抠图24位 3.提取白色背景的抠图 效果展示:原图24位——mask24位——抠图2

橙子Blue不加冰 2万+

视觉特征-自监督-同源不同crop视图一致性【2021-04】:DINOv1【全局裁剪(覆盖原图较大区域)➜教师;全局&局部(覆盖原图较小区域)裁剪➜学生】【EMA学生来构建教师】【中心化&锐化】

在本文中,我们探讨 自 监督学习是否为 Vision Transformer (ViT) [19] 提供了区别于卷积 网 络(convnets)的新特性。除了将自监督方法适配到该架构后效果尤为出色这一事实之外,我们还提出以下观察:首先,自监督ViT特征包含有关图像语义分割的显式信息,而这种信息在有监督ViT和convnets中均不会如此清晰地出现。其次,这些特征也是出色的 k-NN 分类器,使用小型 ViT 在 ImageNet 上达到78.3%的top-1准确率。

u013250861的博客 300

基于边缘修复的图像分割论文简读

文章目录2016DCAN: Deep Contour-Aware Networks for Accurate Gland Segmentation 2016 DCAN: Deep Contour-Aware Networks for Accurate Gland Segmentation 摘要: 腺体的形态已被病理学家常规用于评估腺癌的恶性程度。从组织学图像中准确分割腺体是获得可靠的形态学统计数据以进行定量诊断的关键步骤。在本文中,我们提出了一个有效的深度轮廓感知网络(DCAN)来解决这个在统一的多任务学习

如果想成为中心,那么就到中心去吧。 6707

示波器面板上的隐藏功能:如何利用BW Limit和EXT TRIG提升测量精度

本文深入探讨示波器面板上的隐藏功能BW Limit和EXT TRIG,揭示它们如何提升测量精度。通过带宽限制(BW Limit)有效滤除高频噪声,结合外部触发(EXT TRIG)确保稳定信号捕获,为电子测量提供专业解决方案。特别适用于开关电源、传感器信号等复杂场景的高精度测量需求。

weixin_30300225的博客 518

微信小程序审核避坑指南:巧用 wx.getAccountInfoSync 实现审核与线上环境无感切换

本文详细介绍了如何利用`wx.getAccountInfoSync`API实现微信小程序审核与线上环境的无感切换。通过环境识别技术和动态渲染架构设计,开发者可以优雅解决审核资质门槛问题,同时保持生产环境的完整用户体验。文章包含组件化实现、全局状态管理等实用方案,帮助开发者提升审核通过率。

weixin_30527423的博客 260

【计算机视觉 | 图像分割】arxiv 计算机视觉关于图像分割的学术速递(8 月 4 日论文合集)

【计算机视觉 | 图像分割】arxiv 计算机视觉关于图像分割的学术速递(8 月 4 日论文合集)

wzk4869的博客 684

Unsloth Desktop 本地大模型微调量化实战指南

大语言模型的本地化定制正在成为开发者与内容创作者的重要需求,而微调与量化则是其中最关键的两项技术。LoRA 与 QLoRA 通过仅训练少量低秩矩阵,大幅降低显存占用和训练成本,让消费级 GPU 也能完成模型适配;GGUF 格式则打通了训练与推理的边界,使微调后的模型可直接接入 Ollama、llama.cpp 等主流推理引擎。本文以 Unsloth Desktop 为切入对象,从其底层加速原理出发,梳理了环境准备、模型加载、对话测试、量化导出、微调验证及 API 批量调用的完整链路,并针对显存优化、端口冲突

weixin_29055137的博客 397

Ludwig 语义分割实战:UNet、SegFormer 与 FPN 三种解码器在 CamSeq01 上的对比与调参指南

本文基于 Ludwig 仓库中的语义分割示例([examples/semantic_segmentation/README.md](https://link.gitcode.com/i/0b8c9fa3402f8a1a03d8f16c6fe7af91)),完整演示如何用 Ludwig 低代码方式在 **CamSeq01 城市道路驾驶数据集**(101 张 960×720 图像、32 个语义类别)上

gitblog_00671的博客 944

零基础玩转NILM:用nilmtk提取UKDALE电器数据的保姆级教程

本文为零基础用户提供了一份详细的NILM入门指南,重点讲解如何使用nilmtk工具包从UKDALE数据集中提取电器级用电数据。教程涵盖环境搭建、核心概念解析、数据提取实战及常见问题排查,帮助读者快速掌握非侵入式负荷监测的数据预处理关键步骤。

rgv234567的博客 498

23、电生理与CSD分析:探索大脑活动的前沿技术

本文介绍了电生理与电流源密度(CSD)分析在探索大脑活动中的前沿应用。从电生理技术的发展现状,到局部场电位(LFPs)的起源与解释,重点阐述了CSD分析的原理、实验方法及其在绘制皮层兴奋流、解析突触输入和研究自发振荡中的广泛应用。文章还总结了该领域的优势与挑战,并展望了技术改进、多模态融合、数据分析创新及临床拓展的未来方向,展示了这些技术在揭示大脑功能机制中的关键作用。

Apple的专栏 119

51c※视觉~合集3

本文结合相关论文介绍了一些半监督目标检测算法,即如何利用大量的 unlabeled data 提升模型的检测性能。什么是半监督目标检测?传统机器学习根据训练数据集中的标注情况,有着不同的场景,主要包括:监督学习、弱监督学习、弱半监督学习、半监督学习。由于目标检测任务的特殊性,在介绍半监督目标检测方法之前,我们查看一下目标检测在这四个方向下的具体设定,如下图所示(不包括无监督学习):图一 目标检测的不同的 setting拥有大规模带标签的数据,包括完整的实例级别的标注,即包含坐标和类别信息;

whaosoft~aiotの开发板商城 1591

Megatron-LM中的TP、PP、DP、SP、CP并行

SP主要优化的是激活内存,它沿序列维度切分部分激活,适用于较短序列并行。CP主要解决的是长序列的显存问题,它沿序列维度切分所有激活和输入,并且对注意力机制也进行并行处理。二者可以组合使用,特别是当 TP > 1 并且需要处理长序列时,通过启用 SP 和 CP 可以最大化地优化内存使用和加速计算。

u013250861的博客 861

【计算机视觉 | 图像分割】arxiv 计算机视觉关于图像分割的学术速递(8 月 10 日论文合集)

【计算机视觉 | 图像分割】arxiv 计算机视觉关于图像分割的学术速递(8 月 10 日论文合集)

wzk4869的博客 438

【VMware】win 10:VMware 15 虚拟机安装 win 7 系统

目录 一、准备虚拟机 二、win7 ghost ISO镜像文件下载 三、VMware新建虚拟机 四、VMware安装win7 五、解决vmware虚拟机屏幕没有适应窗口全屏问题 一、准备虚拟机 查看我的另一博文:【VMware】VMware Workstation Pro15 虚拟机永久激活破解安装教程 二、win7 ghost ISO镜像文件下载 百度网盘下载地址:点击前往下载...

顾三殇 —— 博客空间(软件测试) 11万+

AUTOSAR进阶图解==>AUTOSAR_SWS_COM

AUTOSAR COM模块是AUTOSAR通信堆栈的核心组件,提供信号导向的通信服务。该模块位于通信服务层,连接RTE与PDU Router,主要功能包括信号封装/提取、传输模式管理、信号路由、超时监控和字节序转换等。COM模块架构分为应用层、通信服务层和通信抽象层,包含信号管理、I-PDU处理、传输模式管理等组件。其配置结构包括顶层容器、I-PDU组、I-PDU和信号等多层次配置对象,支持丰富的参数设置。模块采用严格的状态管理机制,包括模块状态和I-PDU组状态转换,确保通信可靠性。

一名留德华的,康德的信徒的,专注于汽车电子领域的博客 1243

PaddleSeg RelaxBoundaryLoss 深度解析:面向 DecoupleSegNet 的边界松弛损失实战指南

RelaxBoundaryLoss(边界松弛损失)是 PaddleSeg 中为 DecoupleSegNet 专门设计的损失函数,用于在“主体特征 + 边缘特征 + 交叉熵”多分支监督框架下处理边界像素的类别歧义问题。本文将以 [docs/module/loss/RelaxBoundaryLoss_cn.md](https://link.gitcode.com/i/71c8541f25b43ae5

gitblog_00527的博客 427

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

CVPR2025 | 弱监督语义分割 | PCRE: 渐进式扩展置信区域来生成精确掩码,代码开源!

CVPR2025 | 弱监督语义分割 | PCRE: 渐进式扩展置信区域来生成精确掩码,代码开源!

ProNotes的博客 1254

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Manual2Skill——让VLM从装配手册中提取装配步骤,随后做姿态估计,最终完成IKEA家具的自动组装(含IKEA-Manuals的详解)

Manual2Skill:基于视觉语言模型的家具自动装配框架 摘要:新加坡国立大学等机构提出的Manual2Skill框架,通过视觉语言模型(VLM)理解家具装配手册,实现自主机器人装配。该框架首先利用GPT-4o解析手册中的抽象示意图,生成分层装配图;然后结合部件点云和手册图像预测6D装配位姿;最后通过运动规划生成无碰撞装配轨迹。实验表明,该方法能有效处理复杂的长时序装配任务,显著减少对示范数据的依赖。相比传统方法局限于简单桌面任务,Manual2Skill突破了复杂家具装配的挑战,为智能制造提供了新思路

结构之法 算法之道 4687

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

翻译:自动驾驶经典 —— SparseOcc中英文对照

占用率预测在自动驾驶中起着关键作用。以往的方法通常构建密集的 3D 体素,忽略了场景固有的稀疏性,并遭受高计算成本的困扰。为了弥合这一差距,我们引入了一种新颖的全稀疏占用网络,称为SparseOcc。SparseOcc 首先从仅基于相机的输入重建稀疏的 3D 表示,然后通过稀疏查询从 3D 稀疏表示中预测语义/实例占用。设计了一种基于掩码的稀疏采样,以使稀疏查询能够以完全稀疏的方式与 2D 特征交互,从而避免了昂贵的密集特征或全局注意力。

zaibeijixing的专栏 536

51c深度学习~合集8

方法的完整数学描述略显复杂,如果只是想了解主要思想,可以只看上面 PatchMix的流程图即可(其实只是公式多,每个公式也不复杂,后续有机会做个演示动画,帮助大家理解。这个方法也可以用简单的 Mask 方法实现,但是本方法在大规模图像处理上效率是最高的),对该工作感兴趣的同行可以看一下,我尽量写得清楚一些。结合 PatMix 的流程图,主要过程如下:由于混合图像和混合图像之间,重叠比例的不同,mix-to-mix label 中每一项的权重分数是不同的,根据上图,可以得到权重系数可以表示为。

whaosoft~aiotの开发板商城 2958
上一篇: 神奇了!AR技术可测量实物体积!
下一篇: 如何把Tensorflow模型转换成TFLite模型
Hi David
博客等级 码龄17年 5195粉丝 84原创
评论 29
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hi David

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值