弱监督语义分割学习计划(2)-使用CoT进行Open Vocabulary Label简单实现类激活图

零: 项目说明

是这样的一个事情,经过与deepseek的一番讨论和交流,DeepSeek为我设计了一个30天高强度学习计划,重点聚焦弱监督/无监督语义分割在野外场景的应用,结合理论与实践,并最终导向可落地的开源项目。目前开始了计划学习的第一天:

主要想法是做基于大模型的弱监督语义分割,主要步骤如下:

  • 自动生成标注:大模型生成图像级标签边框涂鸦点标注等几种弱监督标注类型的标注:
  • 生成伪标签:采用基于类激活图(CAM, Class Activation Mapping)的方法 + CRF后处理,利用分类网络生成伪标签pseudo
  • 训练分割模型:将伪标签作为监督信号,训练U-NetDeepLabv3+等分割网络。

代码在这里:不断改进中:
https://github.com/Tipriest/30Days-for-segmentation


参考引用:

https://zhuanlan.zhihu.com/p/29567314

一: 采用思维链Cot优化大模型的image label效果:

在上一篇文章中,主要采用了直接通过CLIP模型+阈值判断的方法和通过VLM模型:llava两种方法来对地形数据集的图片进行Image Level标注,如下图所示:
在这里插入图片描述

主要发现了如下问题:

  • CLIP模型对于主体的要求很高,当一个场景具有多个主体的时候,CLIP模型会拉低每一个图片中存在的物体的分类判断阈值。

  • 直接使用llava模型在召回率上甚至不如CLIP,对于很多特殊的地形场景如curd往往没有输出,导致某一些召回率可能很低。

  • 尝试采用思维链的方式进行优化:
    在这里插入图片描述
    比如,对于下面的这张图片
    在这里插入图片描述
    使用如上述所示的思维链的方式进行输出的结果如下所示:

Processing 4/60: ./steps/1_preprocess/key_frames/000202.jpgThe image shows a patch of land with various elements that could be described from the perspective of the terrain. There is no concrete road or paved paths visible in this particular section of the image. Instead, there appears to be bare soil with some patches of grass and weeds growing on it. The color of the soil is a mix of brown and gray, indicating it might be compacted dirt or soil that has been disturbed or left untended for some time.There are no visible curbs or other distinctive features that would suggest a paved path or road nearby. In terms 
of colors, the soil predominantly appears in shades of brown and gray, while the patches of grass and weeds have 
varying tones of green. The image does not show any water bodies, nor is there any indication of yellow or 
red paved paths that might be adjacent to this area.The perspective of the photo seems to be taken from a low angle looking up at the terrain, which gives an 
impression of the ground being uneven and unkempt. The overall scene suggests an outdoor setting with 
natural elements rather than urban infrastructure.
{"annotations": ["soil", "curb"]}

翻一下,大致是这样的结果:

处理4/60:./steps/1_preprocess/key_frames/000202.jpg
图像显示了一块土地,带有各种元素,可以从地形的角度描述。 图像的这一特定部分中没有可见的混凝土路或铺路路径。
取而代之的是,似乎有一些裸露的土壤,其中有一些草和杂草在上面生长。土壤的颜色是棕色和灰色的混合物,表明它可能是压实的污垢或土壤,
这些污垢或土壤已被打扰或没有一段时间。在颜色方面,土壤主要出现在棕色和灰色的阴影中,而草和杂草的斑块则具有不同的绿色色调。
该图像没有显示任何水体,也没有任何迹象表明可能与该区域相邻的黄色或红色铺路路径。整个场景表明,室外设置具有自然要素,而不是城市基础设施。{"annotations": ["soil", "curb"]}

目前使用思维链的方式确实有了一定召回率上的提示,相比于原来的直接用VLM输出结果,但是结果还不够好,这个后续再继续优化…

二: 关于类激活图:

Michael Yuan佬在自己的知乎上发表过一个非常易懂的关于类激活图的科普文章,这里借用一下佬的两张动图来直观说明一下:
CAM 指的是经过加权的特征图集重叠而成的一个特征图。它可以显示模型做出分类决策的依据主要来自于特征图集中的哪些特征图。(可以结合下面这张Michael Yuan佬画的图来理解)
在这里插入图片描述
由于采用迁移学习策略,因而整个模型在训练时,会发生变化的参数只有分类器的权重矩阵 ,因此对于同一张图片,卷积层输出的特征图集始终不变,但分类概率会随着权重矩阵的变化而不断改变。这也就是模型学习的过程,即:到底哪些特征图对于提高分类准确率最有帮助?

可以看到,模型做出分类决策的依据来源于权重矩阵。那么如何进行可视化呢?
矩阵本身只是一堆大小不一的权值而已,并不直观。不过我们可以注意到,权重矩阵对图像的理解基于对特征向量的加权,而特征向量背后是一个个特征图,因此可以跳过特征向量,直接将这些特征图用权重矩阵加权,再重叠合成为一张特征图,就可以很直观的看到到底模型是通过看哪片区域来做出判断的。
我在我的野外环境的数据集上,根据图像级标注生成的类激活图的效果,可以看到类激活图关注的主要是一个点而非全部,类似的类激活图也比较难用在我的语义分割伪标签生成任务中,后面的CRF过程会很麻烦。
在这里插入图片描述
在这里插入图片描述
目前我的类激活图的效果还并不好,理想的状态应该是如下的:

类别激活图示意图(文字描述)合理性判断标准
马路左侧大面积均匀暖色区域,渐冷至右侧边缘覆盖真实马路区域,无侵入其他类别
车道线中间细长亮黄色线条,周围马路区域为冷色线状激活宽度与实际车道线匹配
马路牙子右侧边缘窄条状高激活,分隔马路与红砖地严格沿垂直方向分布,无横向扩散
红砖地右侧斑块状/网格状激活,与马路牙子激活相邻纹理匹配,不污染左侧马路区域

因为类激活图做的人还是很多的,所以一些可能的改进方案如下:

  • 分辨率限制:传统CAM基于最后一个卷积层,可能导致激活图粗糙(如车道线变粗)。可尝试:

    • Grad-CAM++:增强细粒度结构的激活灵敏度

    • HiResCAM:保留更高空间分辨率

  • 多类别混淆:若多个类别同时高激活(如红砖地与马路牙子重叠),可能需要:

    • 逐类别生成CAM(每个类别单独可视化)

    • 结合注意力机制可视化(如Transformer-based模型的Attention Rollout)

  • 语义分割专用CAM:对于分割模型(如DeepLab、UNet),建议:

    • 使用SegCAM或Pixel-wise CAM直接关联像素级预测

    • 可视化中间层特征图(观察低级边缘/纹理特征)

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

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

相关文章

RabbitMQ操作实战

1.RabbitMQ安装 RabbitMQ Windows 安装、配置、使用 - 小白教程-腾讯云开发者社区-腾讯云下载erlang:http://www.erlang.org/downloads/https://cloud.tencent.com/developer/article/2192340 Windows 10安装RabbitMQ及延时消息插件rabbitmq_delayed_message_exch…

力扣27.移除元素(双指针)

题目看起来很乱&#xff0c;实际上意思是&#xff1a;把数组中值不等于val的元素放在下标为0,1,2,3......&#xff0c;并且返回数组中值不等于val的元素的个数 方法一&#xff1a;直接判断覆盖 class Solution { public:int removeElement(vector<int>& nums, int…

【弹性计算】弹性裸金属服务器和神龙虚拟化(二):适用场景

弹性裸金属服务器和神龙虚拟化&#xff08;二&#xff09;&#xff1a;适用场景 1.混合云和第三方虚拟化软件部署2.高隔离容器部署3.高质量计算服务4.高速低时延 RDMA 网络支持场景5.RISC CPU 支持6.GPU 性能无损输出 公共云服务提供商推出 弹性裸金属服务器&#xff0c;很显然…

深入解析 Spring WebFlux:原理与应用

优质博文&#xff1a;IT-BLOG-CN WebFlux 是 Spring Framework 5 引入的一种响应式编程框架&#xff0c;和Spring MVC同级&#xff0c;旨在处理高并发和低延迟的非阻塞应用。这是一个支持反应式编程模型的新Web框架体系。 顺便一提&#xff0c;Spring Cloud Gateway在实现上是…

命名管道的实现与共享内存介绍

1.命名管道实现 comm.hpp文件 1.定义宏 通过宏来简便代码中&#xff0c;判断错误用宏就可以少写代码。 #define ERR_EXIT(m) \do \{ \perror(m); \exit(EXIT_FAILURE); \} while (0)在宏定义中使用 do { ... …

Window下Redis的安装和部署详细图文教程(Redis的安装和可视化工具的使用)

文章目录 Redis下载地址&#xff1a;一、zip压缩包方式下载安装 1、下载Redis压缩包2、解压到文件夹3、启动Redis服务4、打开Redis客户端进行连接5、使用一些基础操作来测试 二、msi安装包方式下载安装 1、下载Redis安装包2、进行安装3、进行配置4、启动服务5、测试能否正常工…

哔哩哔哩IT私塾python爬虫视频教程中的项目文件

视频链接&#xff1a; Python课程天花板,Python入门Python爬虫Python数据分析5天项目实操/Python基础.Python教程_哔哩哔哩_bilibili 视频教程中要访问的链接&#xff1a; 豆瓣电影 Top 250 httpbin.org seo推广公司网站模板_站长素材 Examples - Apache ECharts WordCloud…

go前后端开源项目go-admin,本地启动

https://github.com/go-admin-team/go-admin 教程 1.拉取项目 git clone https://github.com/go-admin-team/go-admin.git 2.更新整理依赖 go mod tidy会整理依赖&#xff0c;下载缺少的包&#xff0c;移除不用的&#xff0c;并更新go.sum。 # 更新整理依赖 go mod tidy 3.编…

深入理解Spring @Async:异步编程的利器与实战指南

一、为什么需要异步编程&#xff1f; 在现代高并发系统中&#xff0c;同步阻塞式编程会带来两大核心问题&#xff1a; // 同步处理示例 public void processOrder(Order order) {// 1. 保存订单&#xff08;耗时50ms&#xff09;orderRepository.save(order); // 2. 发送短信…

PHP:IDEA开发工具配置XDebug,断点调试

文章目录 一、php.ini配置二、IDEA配置 一、php.ini配置 [xdebug] zend_extension"F:\wamp64\bin\php\php7.4.0\ext\php_xdebug-2.8.0-7.4-vc15-x86_64.dll" xdebug.remote_enable on xdebug.remote_host 127.0.0.1 xdebug.remote_port 9001 xdebug.idekey"…

FPGA开发,使用Deepseek V3还是R1(9):FPGA的全流程(详细版)

以下都是Deepseek生成的答案 FPGA开发&#xff0c;使用Deepseek V3还是R1&#xff08;1&#xff09;&#xff1a;应用场景 FPGA开发&#xff0c;使用Deepseek V3还是R1&#xff08;2&#xff09;&#xff1a;V3和R1的区别 FPGA开发&#xff0c;使用Deepseek V3还是R1&#x…

AtCoder Beginner Contest 001(A - 積雪深差、B - 視程の通報、C - 風力観測、D - 感雨時刻の整理)题目翻译

由于我发现网上很少有人会发很久之前AtCoder Beginner Contes的题&#xff0c;所以我打算从AtCoder Beginner Contest 001开始写。大约两周一更&#xff0c;需要的可以订阅专栏&#xff0c;感谢支持Thanks♪(&#xff65;ω&#xff65;)&#xff89; →题目讲解 A - 積雪深差 …

upload

&#xff08;上传一句话木马&#xff0c;用蚁剑链接验证是否成功/传有回显的&#xff1a;<?php phpinfo();?>&#xff09; 学看代码 #function checkfile(){}&#xff1a;定义了一个名叫checkfile的函数 #var file方法.(获取名为‘upload_file’的元素)[获取哪些&…

【漫话机器学习系列】110.线性可分(Linearly Separable)

线性可分与线性不可分的概念详解 1. 引言 在机器学习和模式识别领域&#xff0c;分类问题是一个重要的研究方向。在分类任务中&#xff0c;我们通常需要将不同类别的数据点分开&#xff0c;而如何进行分割是一个关键问题。线性可分&#xff08;Linearly Separable&#xff09…

5G学习笔记之BWP

我们只会经历一种人生&#xff0c;我们选择的人生。 参考&#xff1a;《5G NR标准》、《5G无线系统指南:如微见著&#xff0c;赋能数字化时代》 目录 1. 概述2. BWP频域位置3. 初始与专用BWP4. 默认BWP5. 切换BWP 1. 概述 在LTE的设计中&#xff0c;默认所有终端均能处理最大2…

在笔记本电脑上用DeepSeek搭建个人知识库

最近DeepSeek爆火&#xff0c;试用DeepSeek的企业和个人越来越多。最常见的应用场景就是知识库和知识问答。所以本人也试用了一下&#xff0c;在笔记本电脑上部署DeepSeek并使用开源工具搭建一套知识库&#xff0c;实现完全在本地环境下使用本地文档搭建个人知识库。操作过程共…

【实战 ES】实战 Elasticsearch:快速上手与深度实践-1.2.2倒排索引原理与分词器(Analyzer)

&#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 文章大纲 1.2.2倒排索引原理与分词器&#xff08;Analyzer&#xff09;1. 倒排索引&#xff1a;搜索引擎的基石1.1 正排索引 vs 倒排索引示例数据对比&#xff1a; 1.2 倒排索引核心结…

计算机毕业设计SpringBoot+Vue.js线上辅导班系统(源码+文档+PPT+讲解)

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

大模型原理与技术(毛玉仁)

一、基础知识 ①基于统计的语言模型&#xff1a;n-gram&#xff0c;基于前n-1个词预测第当前词&#xff0c;即统计词序个数计算概率&#xff08;n阶马尔科夫&#xff09;。如果预测句子的概率&#xff0c;需要将每个分词连乘。 常用的n小于5&#xff0c;随着n增大&#xff0c;…

ollama本地部署DeepSeek-R1大模型使用前端JS调用的详细流程

以下是关于如何在本地部署 DeepSeek-R1 大模型&#xff08;通过 Ollama&#xff09;&#xff0c;并使用前端 JavaScript 调用其功能的详细流程。 前提条件 硬件要求&#xff1a; 建议至少 16GB RAM&#xff08;运行较小模型如 1.5B 或 7B 参数版本&#xff09;&#xff0c;如果…