了解FastSam:一个通用分割模型(草记)(2)

简介: 2 Sam相关项目阅读:Segment Anything(sam)项目整理汇总新鲜名词:点云分割,有趣的项目:

了解FastSam:一个通用分割模型(草记)(1):https://developer.aliyun.com/article/1407235?spm=a2c6h.13148508.setting.17.79f64f0ecKMDuK

2 Sam相关项目

阅读:Segment Anything(sam)项目整理汇总

新鲜名词:点云分割,

有趣的项目

Grounded-Segment-Anything:包含图像编辑,此外还有其它不少东西。


Personalize-SAM:仅给定一张带有参考mask的图像,PerSAM 无需任何训练即可在其他图像或视频中分割特定的目标,例如您的宠物狗。也提供了微调,但是只训练了2个参数。


Inpaint-Anything:图像编辑,包含移除目标,填充目标,替换目标等。


EditAnything:重新生成图像中的一部分。


小结:文章各种项目挺多的,不过好些都有些相似。包括对SAM模型的微调与场景移植,与视频处理结合,与文字提示结合(如CLIP),3d,以及一些相关的部署优化项目。此外还有辅助标注工具。

3 Sam论文解读

阅读:【论文解读】MetaAi SAM(Segment Anything) 分割一切

Sam模型的输出是无标记的纯掩码。

名词:prompt engineering,embedding,tokken,nms

摘句

在网络数据集上预训练的大语言模型具有强大的zero-shot(零样本)和few-shot(少样本)的泛化能力,这些"基础模型"可以推广到超出训练过程中的任务和数据分布,这种能力通过“prompt engineering”实现

比如CLIP和ALIGN利用对比学习,将文本和图像编码进行了对齐,通过提示语生成image encoder,就可以扩展到下游任务

论文的目的是建立一个图像分割的基础模型,开发一个具有提示能力的模型。

先标注数据进行训练模型,然后用模型辅助标注数据,如此建立一个数据循环。

训练时模拟交互分割的过程,从目标mask中随机选取前景点或者box,点是从gt mask选取,box增加长边10%的噪声,最大20像素。

在第一次prompt预测mask之后,后续是从预测mask和gt mask有差异的区域采样点,

mask 用focal loss和dice loss进行线性组合,系数(20:1),iou 用mse loss。

小结:感觉好像看了很多东西,但如果让我回忆一下,我脑子里面好像又没有什么东西。文中陌生的东西太多了,很多我都没什么概念,可能也就无法将它们联系起来而在我脑海里面生成一个整体的图景。

4 FastSam & Sam & MobileSam

阅读:(1)【Paper日记】FastSAM vs. MobileSAM vs. SAM


(2)【SAM】SAM & Fast SAM & Mobile SAM


名词:ViT-H,freeze解码器,知识蒸馏,对象提议,object-level


摘句:

FS虽然里面有SAM,但其实本质上并不是在SAM上进行优化架构,而是选择了一条完全不同的道路——采用带有实例分割分支的CNN网络。

一方面,按原始SAM的训练方法来训练一个新的SAM模型极不划算;另一方,由于图像编码器和分割掩码解码器之间的耦合优化,很难复现甚至改进FAIR他们的成果。

MS指出FS的工作achieved superior performance,而MS比FS的模型小7倍,速度快4倍,且mIoU远高于FS。

FastSAM经常无法预测一些对象;此外,有时很难解释掩模提议;其次,FastSAM经常生成具有非平滑边界的掩模。

虽然说FastSAM中带SAM,但其实已经和SAM的工作没有太大关系了,个人感觉是聚焦于Segment Anythin Task,用传统CNN的架构去解决大模型在实际应用中遇到的问题。而MobileSAM是基于SAM的架构提出了轻量化版本

sam模型是 promptable,包括 point, bbox, masks, text

(sam)训练过程中不使用任何数据增强

(fastsam的text-prompt效果差)个人分析原因为,CLIP 训练是 4 亿图文对特征对齐的训练,而并不是 object-level 与文本的对齐,使用分割数据训练好的 YOLOv8-seg 的图像特征直接与 CLIP 对应的文本特征进行强对齐(没经过训练),由于分割数据和训练 CLIP 的图像数据没有半毛钱关系,所以 mask 的特征与文本特征很难对齐,从而 text prompt 的方式效果很差是可以想通的。其实这一点是我一直想吐槽的,一直感觉将 CLIP 作为打通图文多模态的一个桥梁,多少是有点牵强的。

摘图:


Sam:

198766c300b348cb92c53d958b009564.pngFastSam

216cf7bd067d49ea9df8cb1e4b2ad253.png小结:脑子里还是比较模糊,fastsam和sam的区别。

文(2)中有些东西说得更加细致、丰富一些,但用的英文词比较多,比如object-level。

5 YOLACT

阅读:(1)【实例分割】YOLACT: Real-time Instance Segmentation


FastSam对于 all-instance segmentation阶段,网络结构基于YOLOv8-seg(YOLOv8 + YOLACT)


YOLACT:You Only Look At CoefficienTs.


(2)【经典论文解读】YOLACT 实例分割(YOLOv5、YOLOv8实例分割的基础)


这篇文章解释得要更清楚、细致些。

名词:FCN,anchor,NMS(又看见它),protonet,FPN特征金字塔,


摘句:


mask 模板产生的分支(protonet)针对每幅图像预测 k 个模板mask,用FCN的方式来实现protonet,FCN最后一层有 k 个channel,每个channel对应一个模板。

c57177663b094767b2810743848aacda.png

小结:文中说模型分为两个并行的过程(1)产生一系列模板mask,该mask是不基于任何一个实例的,而是基于整张输入图片的;(2)预测对于每个实例mask的系数。之后将模板mask和实例mask系数进行线性组合来获得实例的mask。


可是看了后面的解释,我还是没有懂文中的**”预测mask的系数“和”线性组合“**,具体是在干嘛。


将实例分割任务,划分为两个并行任务;(目标检测Detect、实例分割mask 是并行计算的,这样设计的网络是单阶段的,适合YOLO系列,速度快)

比如在一张街道场景的图片,图中有行人、车辆、建筑物、树木等,当检测分支框中的是行人,那么行人相关的mask原型图置信度高(头、身体、手、脚、随身物品等的位置、轮廓、编码位置敏感的方向等原型图),其它的类别mask原型图置信度低,这样组合形成实例分割的结果。

在 prototype 空间,某些 prototypes 对图片空间分块,某些 prototypes 定位实例······ (不懂这些分工与组合是怎样产生的)


相关文章
|
机器学习/深度学习 算法 自动驾驶
|
移动开发 文字识别 算法
论文推荐|[PR 2019]SegLink++:基于实例感知与组件组合的任意形状密集场景文本检测方法
本文简要介绍Pattern Recognition 2019论文“SegLink++: Detecting Dense and Arbitrary-shaped Scene Text by Instance-aware Component Grouping”的主要工作。该论文提出一种对文字实例敏感的自下而上的文字检测方法,解决了自然场景中密集文本和不规则文本的检测问题。
1947 0
论文推荐|[PR 2019]SegLink++:基于实例感知与组件组合的任意形状密集场景文本检测方法
|
1月前
|
机器学习/深度学习 JSON 算法
语义分割笔记(二):DeepLab V3对图像进行分割(自定义数据集从零到一进行训练、验证和测试)
本文介绍了DeepLab V3在语义分割中的应用,包括数据集准备、模型训练、测试和评估,提供了代码和资源链接。
166 0
语义分割笔记(二):DeepLab V3对图像进行分割(自定义数据集从零到一进行训练、验证和测试)
|
6月前
|
机器学习/深度学习 算法 计算机视觉
YOLOv8改进-论文笔记】 AKConv(可改变核卷积):任意数量的参数和任意采样形状的即插即用的卷积
AKConv是一种可改变核卷积,旨在解决传统卷积的局限,包括固定大小的卷积窗口和卷积核尺寸。AKConv提供灵活的卷积核参数和采样形状,适应不同尺度特征。其创新点包括:1)支持任意大小和形状的卷积核;2)使用新算法确定初始采样位置;3)应用动态偏移调整采样位置;4)优化模型参数和计算效率。AKConv已应用于YOLOv8,提高网络性能。相关代码可在<https://github.com/CV-ZhangXin/AKConv>找到。
|
6月前
|
SQL Oracle 关系型数据库
C# 利用IDbDataAdapter / IDataReader 实现通用数据集获取
C# 利用IDbDataAdapter / IDataReader 实现通用数据集获取
|
6月前
|
测试技术 网络架构 C++
使用MergeKit创建自己的专家混合模型:将多个模型组合成单个MoE
MoE架构通过MergeKit实现新突破,允许整合预训练模型创建frankenMoEs,如FrankenMoE,区别于头开始训练的MoEs。MergeKit工具支持选择专家模型,定义正负提示,并生成MoE配置。
246 2
|
6月前
|
Python
python隶属关系图模型:基于模型的网络中密集重叠社区检测方法
python隶属关系图模型:基于模型的网络中密集重叠社区检测方法
|
6月前
|
机器学习/深度学习 存储 编解码
了解FastSam:一个通用分割模型(草记)(1)
一、FastSam下载与体验 1 问题记录 似乎从网页上下载压缩包,会比使用git clone要方便很多。 1 CLIP是什么?
380 0
|
编解码 自然语言处理 并行计算
【经典论文解读】YOLACT 实例分割(YOLOv5、YOLOv8实例分割的基础)
 YOLACT是经典的单阶段、实时、实例分割方法,在YOLOv5和YOLOv8中的实例分割,也是基于 YOLACT实现的,有必要理解一下它的模型结构和设计思路。
1622 0
|
机器学习/深度学习 人工智能 自然语言处理
MaskFormer:将语义分割和实例分割作为同一任务进行训练
目标检测和实例分割是计算机视觉的基本任务,在从自动驾驶到医学成像的无数应用中发挥着关键作用。目标检测的传统方法中通常利用边界框技术进行对象定位,然后利用逐像素分类为这些本地化实例分配类。但是当处理同一类的重叠对象时,或者在每个图像的对象数量不同的情况下,这些方法通常会出现问题。
4851 0