当前位置: 首页 > news >正文

弱监督语义分割学习计划(1)-简单实现Open Vocabulary Label但是效果不好

零: 项目说明

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

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

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

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

一: 自动生成图像级标注

前面的对视频提取帧,提取关键帧的代码都很简单,最后的效果大致就是这样:
在这里插入图片描述

1.1 采用CLIP生成图像级标注

CLIP这个模型很有意思,可以形成图像-文本对,也就是给定一系列的词,给定一张图片,可以选择出最高可能性的图片,比如下图所示,能够以极高的概率确定我的这个图片是一只狗。
在这里插入图片描述
在这里插入图片描述
但是我的图片是类似下图所示的这种图片,所以直接使用CLIP的话,给定一个词汇表会导致模型没办法输出一个唯一正确的结果,实际应用起来的效果并不好,就像是下面的这个CVPR工作所展示的,一张图片没有办法分类渔民还是鱼儿,这篇文章的解决方案是加入mask或者是bounding box来提升对于局部区域的识别准确率。
在这里插入图片描述

  • 才知道出名的llava视觉语言模型的基座是CLIP
  • 上面的那种方法效果是挺好的,但是在我的这个任务中,我使用CLIP本身其实就是不想再使用人工进行标注,而是完全使得标注流程自动化,因此这种方法也并不适用于我的课题场景。
    在这里插入图片描述
  • 拿右边的groundtruth是我标注的,可以看到如果只使用CLIP去标注一个图片的话,效果还是比较差,准确率不是很高,这里是把词汇列表中可能阈值大于0.2的都列举出来作为图像标注。
    在这里插入图片描述
    简单统计一下准确率和召回率,这里其实可以看到对于主要的grass和soil这种作为主体比较好分辨的场景,还是能够有比较高的概率分辨出来的,主要是召回率不太行,尤其是对yellow brick roadcurb,这两个的召回率差了不少,感觉就是一个图片做多场景分类还是比较勉强,或许加一个相同层的mask是一个可以接受的选择?找一下DINO这样子,然后随机采样一些点,然后获得mask,在用mask+CLIP的这个方案来做一点事情,但是还在考虑…
    在这里插入图片描述

1.2 采用Deepseek:14b大模型生成图像级标注

之前学了一下DataWhale的handy-ollama的课程,可以在本地部署大模型,能够做图片理解,我是RTX4080super的显卡,所以可以部署deepseek:14B这样的模型以及llava这样的多模态的模型,尝试用了一下,用了llava,然后用json格式固定了输出写到csv文件中,然后再用calF1.py计算准确率和召回率。
这个是用llava模型做了一个简单的计算,但是效果相比上一个CLIP模型,在准确率和召回率上其实都差了不少。
在这里插入图片描述
llava模型其实也是基于CLIP模型作为基座的,但是这个准确率着实一般,我感觉可能是我ollama部署的这个llava模型参数量还是太小了,知识储备可能不是很够用,想看一下有没有别的可以部署的ViT模型做一下图片理解+标注。
在这里插入图片描述
下载了一个13B的llava模型试一下,感觉效果上好了一些,但是还是不如直接使用CLIP模型的效果,有点奇怪,另外确实发现了修改提示词对于准确度的提升影响非常大,想办法能不能实验出一个好点的提示词,尤其是关于yellow brick road这种,可以在提示词里做一点手脚,比如解释一下这样子,又变成提示词工程师了[doge]
在这里插入图片描述
发现paperwithcode上有一些在各种测试集上的open vocabulary segmentation的相关工作,准备要尝试一下,下一篇文章再记录吧


http://www.mrgr.cn/news/92525.html

相关文章:

  • Vue 3 搭建前端模板并集成 Ant Design Vue(2025)
  • 编写Redis开机自启动脚本
  • Imagination GPU 3D Graphics Wrokload
  • 蓝桥杯第十六届嵌入式模拟编程题解析
  • lattice hdl实现spi接口
  • Flask笔记
  • lowagie(itext)老版本手绘PDF,包含页码、水印、图片、复选框、复杂行列合并、行高设置等。
  • kubernetes 初学命令
  • Docker 部署 MinIO 对象存储服务
  • 【Qt】为程序增加闪退crash报告日志
  • 27.[前端开发-JavaScript基础]Day04-函数基本使用-递归-变量作用域-函数式编程
  • 24.[前端开发-JavaScript基础]Day01-插件配置-变量-数据
  • SpringBoot项目注入 traceId 来追踪整个请求的日志链路
  • RAG 阿里云
  • 数据开发的简历及面试
  • C# Unity 唐老狮 No.2 模拟面试题
  • Oracle 12c Docker安装问题排查 sga_target 1536M is too small
  • Vue2+Element实现Excel文件上传下载预览【超详细图解】
  • deepseek-r1-centos-本地服务器配置方法
  • 【三维分割】LangSplat: 3D Language Gaussian Splatting(CVPR 2024 highlight)