测试 yolov8 分割模型 边缘检测

发现 cfg/default.yaml 参数 mask_ratio 等于4 直接训练如下边缘分割标签,推理时mask 稀疏,训练时分数偏低,mask_ratio 改为1训练时打印的mask 的 P指标一直为0,将imgsz=原图size 训练分数也不高

标注用的是labelme多边形

阅读源码发现可能是因为mask缩放导致

且出现上边缘mask被box过度剪裁的情况

修改了源码中的两处,还是保持mask_ratio等于4,重新训练,推理如下,虽然mask粗糙但几乎不产生断裂

修改如下:

1.ultralytics/data/utils.py

def polygon2mask(imgsz, polygons, color=1, downsample_ratio=1):
    mask = np.zeros(imgsz, dtype=np.uint8)
    polygons = np.asarray(polygons, dtype=np.int32)
    polygons = polygons.reshape((polygons.shape[0], -1, 2))
    cv2.fillPoly(mask, polygons, color=color)
    nh, nw = (imgsz[0] // downsample_ratio, imgsz[1] // downsample_ratio)
    # Note: fillPoly first then resize is trying to keep the same loss calculation method when mask-ratio=1
    return cv2.resize(mask, (nw, nh))

def polygon2mask(imgsz, polygons, color=1, downsample_ratio=1):
    mask = np.zeros((imgsz[0]// downsample_ratio,imgsz[1]// downsample_ratio), dtype=np.uint8)
    polygons=[[j*0.25 for j in i] for i in polygons]
    polygons = np.asarray(polygons, dtype=np.int32)
    polygons = polygons.reshape((polygons.shape[0], -1, 2))
    cv2.fillPoly(mask, polygons, color=color)
    return mask

2.ultralytics/models/yolo/segment/predict.py

类SegmentationPredictor postprocess方法 外扩mask 1个像素

def postprocess(self, preds, img, orig_imgs):
    """Applies non-max suppression and processes detections for each image in an input batch."""
    p = ops.non_max_suppression(
        preds[0],
        self.args.conf,
        self.args.iou,
        agnostic=self.args.agnostic_nms,
        max_det=self.args.max_det,
        nc=len(self.model.names),
        classes=self.args.classes,
    )

    if not isinstance(orig_imgs, list):  # input images are a torch.Tensor, not a list
        orig_imgs = ops.convert_torch2numpy_batch(orig_imgs)

    results = []
    proto = preds[1][-1] if len(preds[1]) == 3 else preds[1]  # second output is len 3 if pt, but only 1 if exported
    for i, pred in enumerate(p):
        orig_img = orig_imgs[i]
        img_path = self.batch[0][i]
        if not len(pred):  # save empty boxes
            masks = None
        elif self.args.retina_masks:
            pred[:, :4] = ops.scale_boxes(img.shape[2:], pred[:, :4], orig_img.shape)
            masks = ops.process_mask_native(proto[i], pred[:, 6:], pred[:, :4], orig_img.shape[:2])  # HWC
        else:
            #外扩盒子
            c, mh, mw = proto[i].shape  # CHW
            ih, iw = img.shape[2:]
            pred[:, :4][:, 0] -= iw / mw*1
            pred[:, :4][:, 1] -= ih / mh*1
            pred[:, :4][:, 2] += iw / mw*1
            pred[:, :4][:, 3] += ih / mh*1

            masks = ops.process_mask(proto[i], pred[:, 6:], pred[:, :4], img.shape[2:], upsample=True)  # HWC
            pred[:, :4] = ops.scale_boxes(img.shape[2:], pred[:, :4], orig_img.shape)
        results.append(Results(orig_img, path=img_path, names=self.model.names, boxes=pred[:, :6], masks=masks))
    return results

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

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

相关文章

分类预测 | Matlab实现LSTM-Attention-Adaboost基于长短期记忆网络融合注意力机制的Adaboost数据分类预测/故障识别

分类预测 | Matlab实现LSTM-Attention-Adaboost基于长短期记忆网络融合注意力机制的Adaboost数据分类预测/故障识别 目录 分类预测 | Matlab实现LSTM-Attention-Adaboost基于长短期记忆网络融合注意力机制的Adaboost数据分类预测/故障识别分类效果基本描述程序设计参考资料 分类…

【江科大】STM32:(超级详细)定时器输出比较

文章目录 输出比较单元特点 高级定时器:均有4个通道 PWM简介PWM(Pulse Width Modulation)脉冲宽度调制输出比较通道PWM基本结构基本定时器 参数计算捕获/比较通道的输出部分详细介绍如下: 舵机介绍硬件电路 直流电机介绍&#xff…

Python教程48:海龟画图turtle画太极八卦阵

---------------turtle源码集合--------------- Python教程91:关于海龟画图,Turtle模块需要学习的知识点 Python源码45:海龟画图turtle画雪容融 Python源码44:海龟画图turtle,画2022卡塔尔世界杯吉祥物 Python教程…

R语言简介

1.R语言 R语言是一种数学编程语言,主要用于统计分析、绘图和数据挖掘。 2.R语言特点 免费、开源,兼容性好(Windows、MacOS或Linux)。具有多种数据类型,如向量、矩阵、因子、数据集等常用数据结构。多用于交互式数据分析&#x…

C语言第六弹---分支语句(下)

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】 分支语句 1、 逻辑操作符:&& , || , !4.1、 逻辑取反运算符 !4.2、 与运算符4.3、 或运算符4.4、 练习:闰…

怎么给wordpress网站底部页脚添加备案号和链接?

以前“WordPress后台 >> 常规”最底部是有一个ICP备案号的,我们只需要填写备案号并保存更改即可让WordPress自带主题底部显示ICP备案号,但是现在新版本的WordPress已经没有了这个ICP备案号选项,而且也无法直接添加公安联网备案号&#…

内网环境横向移动——利用DCOM(1)

这里先提两个概念,COM和DCOM COM即组件对象模型(Component Object Model,COM) ,是基于 Windows 平台的一套组件对象接口标准,由一组构造规范和组件对象库组成。COM是许多微软产品和技术,如Windows媒体播放器和Windows …

耳鸣是怎么回事呢?

什么是耳鸣? 耳鸣是指在没有任何客观声响的情况下,个人主观上却感觉听到声音,有些人甚至觉得声音来自头部。耳鸣的感觉因人而异,声音多种多样。比如明明没有开任何电器,但却可以感觉到电流声,明明旁边没有…

华为服务器RAID5

0、BIOS默认密码 TaiShan 100服务器BIOS系统的默认密码为**“Huawei12#$”, TaiShan 200服务器BIOS系统的默认密码为“Admin9000”**。 1、服务器开机选择DEL,进行设置 2、选择设备管理器进入配置页面 3、选择AVAGO MegaRAID configuration utility 进入raid配置…

免费在线压缩图片网站分享

支持批量压缩处理,但需要注意,网站仅仅支持体积为5MB的图片,压缩率高达66%,压缩完成后,点下Donwnload all,就能将图片保存至本地。 网页端直接进行图片压缩 https://tinify.cn/

Educational Codeforces Round 161 (Div.2) A~F

A.Tricky Template (模拟) 题意: 询问是否存在一个字符串模板 t t t使得字符串 a a a, b b b与之匹配, c c c不匹配,匹配条件如下: 如果模板中第 i i i个字母是小写字母,那么 s i s_i si​必须与 t i t_…

用户体验革命:Facebook如何重新定义社交交互

在数字化的时代,社交媒体不仅仅是连接人与人之间的桥梁,更是用户体验不断演进的舞台。Facebook,作为全球最大的社交媒体平台之一,一直在努力通过创新和技术提升,重新定义社交交互,为用户带来更加丰富、便捷…

机器人DH建模

D-H 根据表达式判断所建立的DH模型是标准型(Standard DH)还是改进型(Modified DH) 第三四行的首元素为0的是标准型,参考博客 标准DH参数坐标系建立在传动轴上,而修正DH参数坐标系建立在驱动轴上。修正D…

二维码地址门牌管理系统:预约安全、智能生活

文章目录 前言一、访客预约功能二、安全性保障三、智慧小区生活 前言 二维码地址门牌管理系统的出现不仅提升了小区的安全性,还为访客提供了更便捷的预约服务,让亲朋好友轻松进入小区。 一、访客预约功能 该系统提供了访客预约功能,业主可为…

Spark UI中 Shuffle Exchange 和 BroadcastExchange 中的 dataSize 值为什么不一样

背景 Spark 3.5 最近在看Spark UI 上的一些指标看到一个很有意思的东西, 相邻的Shuffle Exechange 和 BroadcastExechange 中的 datasize 居然不一样, 前者为 765KB, 后者为 64.5MB。差别还不少,中间就增加了一个 AQEShuffleRead 计划 结论 Shuffle E…

c语言:链表

链表的大致思维导图: 链表的相关概念和解释: 节点(Node):链表中的每个元素都是一个节点,节点包含数据和指向下一个节点的指针。 头节点(Head Node):链表的第一个节点称…

【动态规划】879. 盈利计划

作者推荐 【动态规划】【广度优先搜索】【状态压缩】847 访问所有节点的最短路径 本文涉及知识点 动态规划汇总 LeetCode879. 盈利计划 集团里有 n 名员工,他们可以完成各种各样的工作创造利润。 第 i 种工作会产生 profit[i] 的利润,它要求 group[…

在linux部署Prometheus+Grafana+Exporter监控系统性能

Prometheus、Grafana和Report组件是什么? Prometheus、Grafana和Exporter是常用于系统监控和指标收集的组合。 Prometheus是一种开源的系统监控和警报工具。它可以收集各种指标数据,并提供强大的查询语言和灵活的警报规则,用于实时监控系统…

[框架系列]-[通用lock框架]集成及具体配置使用

目录 一:框架集成 1.添加pom依赖 2.开启lock配置 二:配置详细介绍 1.配置清单 2.具体配置介绍 (1)implementer (2)type (3)transactionStrategy (4&#xff09…

利用大模型审合同真的可以吗?

#大模型 #大模型审合同 最近有很多朋友留言,询问关于大模型审合同的问题,今天就小智一起来探讨下这个问题。 (智合同-采用深度学习、自然语言处理技术、知识图谱等人工智能技术,为企业提供专业的合同相关的智能服务。其服务包含…