国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

多模態大模型輕量化探索-視覺大模型SAM的視覺編碼器 原創

發布于 2025-5-8 06:46
瀏覽
0收藏

往期,筆者基于LLava的數據對齊訓練,搞了一個??Reyes?多模態大模型,并且看了些多模態大模型,相關開源的多模態大模型如:KimiVL、Internvl、QwenVL等,其視覺編碼器的尺寸都比較大,如:MoonViT-SO-400M、InternViT-6B-448px-V2_5 等都非常大,對于特定的垂直場景(或者是端側落地都不大友好),也許并不需要這么大視覺編碼器。如:表格場景(??【多模態 & 文檔智能】一次多模態大模型表格識別解析探索小實踐記錄???),當時筆者用了一個8B參數的模型及百萬表格數據進行訓練達到了不錯的效果。近期,因此思考一些模型輕量化的方案,尋找一個輕量點的視覺編碼器(比如參數量小于100M),下面來看看SAM,供參考。

Segment Anything Model(SAM)是Meta AI發布的一個突破性圖像分割模型為計算機視覺領域提供一個通用的、靈活的基座視覺大模型。它受到自然語言處理(NLP)中基礎模型(如GPT、BERT)的啟發,強調零樣本遷移和提示式交互能力。在SA-1B數據集上的訓練,該數據集包含超過11百萬張圖像和11億個高質量分割掩碼,覆蓋了從日常場景到專業領域的多樣化內容。

多模態大模型輕量化探索-視覺大模型SAM的視覺編碼器-AI.x社區

SAM借鑒了NLP領域的Prompt策略,通過給圖像分割任務提供Prompt提示來完成任意目標的快速分割。Prompt類型可以是「前景/背景點集、粗略的框或遮罩、任意形式的文本或者任何指示圖像中需要進行分割」的信息。如圖(a)所示,模型的輸入是原始的圖像和一些prompt,目標是輸出"valid"的分割,所謂valid,就是當prompt的指向是模糊時,模型能夠輸出至少其中一個mask。

模型結構

多模態大模型輕量化探索-視覺大模型SAM的視覺編碼器-AI.x社區

SAM的模型結構由三個核心組件組成,Image Encoder、Prompt Encoder和Mask Decoder。分別負責圖像特征提取、提示編碼和掩碼生成。圖像經過Image Encoder編碼,Prompt提示經過Prompt Encoder編碼,兩部分Embedding再經過一個輕量化的Mask Decoder得到融合后的特征。其中,Encoder部分使用的是已有模型,Decoder部分使用Transformer。 下表為三個組件的總結:

組件名稱

功能

關鍵特點

Image Encoder

將輸入圖像轉換為密集特征表示

使用MAE預訓練的Vision Transformer(ViT-H/16),輸入1024x1024x3,輸出64x64x256嵌入。

Prompt Encoder

將用戶提示(點、框、文本、掩碼)編碼為嵌入

支持稀疏提示(點、框、文本)和密集提示(掩碼),使用CLIP處理文本,靈活適應多種輸入。

Mask Decoder

結合圖像和提示嵌入,生成最終分割掩碼

輕量級Transformer解碼器,通過自注意力與交叉注意力機制預測掩碼,實時高效。

Image Encoder

本文的目的是為了尋找一個輕量化的視覺編碼器,因此下面來詳細看下視覺編碼器部分。Image Encoder的作用是把圖像映射到特征空間,整體過程如下圖所示。

多模態大模型輕量化探索-視覺大模型SAM的視覺編碼器-AI.x社區

正如論文中所講,本質上這個Encoder可以是任何網絡結構,在這里使用的是微調的Detectron的ViT,當然它也可以被改成傳統的卷積結構,非常合理。

多模態大模型輕量化探索-視覺大模型SAM的視覺編碼器-AI.x社區

可以看到,Image Encoder就是一個ViT的結構,由PatchEmbed、Transformer Encoder、Neck Convolution組成。

輸入圖像經過ViT結構的過程如下:

1.Patch Embedding
輸入圖像通過一個卷積base,將圖像劃分為16x16的patches,步長也為16,這樣feature map的尺寸就縮小了16倍,同時channel從3映射到768。Patch Embedding示意圖如下所示。

多模態大模型輕量化探索-視覺大模型SAM的視覺編碼器-AI.x社區

多模態大模型輕量化探索-視覺大模型SAM的視覺編碼器-AI.x社區

將輸入的圖像轉換為序列化的特征向量

Patch Embedding過程在Vision Transformer結構圖中對應下圖所示。

多模態大模型輕量化探索-視覺大模型SAM的視覺編碼器-AI.x社區

2.Transformer Encode
feature map通過16個Transformer Block,其中12個Block使用了基于Window Partition(就是把特征圖分成14*14的windows做局部的Attention)的注意力機制,以處理局部信息。另外4個Block是全局注意力模塊(多頭注意力),它們穿插在Window Partition模塊之間,以捕捉圖像的全局上下文。

多模態大模型輕量化探索-視覺大模型SAM的視覺編碼器-AI.x社區

多模態大模型輕量化探索-視覺大模型SAM的視覺編碼器-AI.x社區

循環疊加Transformer Encode

3.Neck Convolution
最后,通過兩層卷積(Neck)將通道數降低至256,生成最終的Image Embedding。其結構圖如下所示。

多模態大模型輕量化探索-視覺大模型SAM的視覺編碼器-AI.x社區

多模態大模型輕量化探索-視覺大模型SAM的視覺編碼器-AI.x社區

SAM構建與輕量化編碼器提取

通過下面代碼提取一個參數量大小僅為80幾M的視覺編碼器。

import torch
from functools import partial
from modeling import ImageEncoderViT, MaskDecoder, PromptEncoder, Sam, TwoWayTransformer


def build_sam_vit_b(checkpoint=None):
    return _build_sam(
        encoder_embed_dim=768,
        encoder_depth=12,
        encoder_num_heads=12,
        encoder_global_attn_indexes=[2, 5, 8, 11],
        checkpoint=checkpoint,
    )


sam_model_registry = {
    "vit_b": build_sam_vit_b,
}


def _build_sam(
        encoder_embed_dim,
        encoder_depth,
        encoder_num_heads,
        encoder_global_attn_indexes,
        checkpoint=None,
):
    prompt_embed_dim = 256
    image_size = 1024
    vit_patch_size = 16
    image_embedding_size = image_size // vit_patch_size
    sam = Sam(
        image_encoder=ImageEncoderViT(
            depth=encoder_depth,
            embed_dim=encoder_embed_dim,
            img_size=image_size,
            mlp_ratio=4,
            norm_layer=partial(torch.nn.LayerNorm, eps=1e-6),
            num_heads=encoder_num_heads,
            patch_size=vit_patch_size,
            qkv_bias=True,
            use_rel_pos=True,
            global_attn_indexes=encoder_global_attn_indexes,
            window_size=14,
            out_chans=prompt_embed_dim,
        ),
        prompt_encoder=PromptEncoder(
            embed_dim=prompt_embed_dim,
            image_embedding_size=(image_embedding_size, image_embedding_size),
            input_image_size=(image_size, image_size),
            mask_in_chans=16,
        ),
        mask_decoder=MaskDecoder(
            num_multimask_outputs=3,
            transformer=TwoWayTransformer(
                depth=2,
                embedding_dim=prompt_embed_dim,
                mlp_dim=2048,
                num_heads=8,
            ),
            transformer_dim=prompt_embed_dim,
            iou_head_depth=3,
            iou_head_hidden_dim=256,
        ),
        pixel_mean=[123.675, 116.28, 103.53],
        pixel_std=[58.395, 57.12, 57.375],
    )
    sam.eval()
    if checkpoint is not None:
        with open(checkpoint, "rb") as f:
            state_dict = torch.load(f)
        sam.load_state_dict(state_dict)
    return sam


if __name__ == '__main__':
    x = torch.zeros(2, 3, 1024, 1024)
    net = build_sam_vit_b(checkpoint='sam_vit_b_01ec64.pth')
    image_encoder = net.image_encoder

    print(image_encoder)
    print(image_encoder(x).shape)  # 輸出:torch.Size([2, 256, 64, 64])
    
    total_params = sum(p.numel() for p in image_encoder.parameters())
    print(f"模型的參數量為: {(total_params/ 1e6):.2f}M")      # 模型的參數量為: 89.67M

參考文獻:

Segment Anything,https://arxiv.org/pdf/2304.02643

code:https://github.com/facebookresearch/segment-anything


公眾號大模型自然語言處理  作者:余俊暉

原文鏈接:??https://mp.weixin.qq.com/s/-bpeKqfBEAytKTVeFd7szQ??

?著作權歸作者所有,如需轉載,請注明出處,否則將追究法律責任
已于2025-5-8 06:46:04修改
收藏
回復
舉報
回復
相關推薦
国产精品欧美一级免费| 国产毛片一区二区三区| 国产日韩欧美一区二区三区乱码| 国产日韩精品在线| 男人的天堂免费在线视频| 亚洲黄一区二区三区| 日韩一级特黄毛片| 国产精品videossex久久发布| 欧美猛交ⅹxxx乱大交视频| 欧美黄色激情| 香蕉成人伊视频在线观看| 日本成人中文字幕在线| 久久国产精品色| 国产伦精品一区二区三区免费视频| 噜噜噜狠狠夜夜躁精品仙踪林| 亚洲精品资源在线| 亚洲小说区图片区都市| 日本乱人伦aⅴ精品| 丝袜美女写真福利视频| 国产精品国产三级国产aⅴ入口 | 国产精品私人影院| 国产亚洲精品久久久久久久| 在线亚洲自拍| 999热视频在线观看| 成人激情在线| 欧洲成人免费视频| 波多野结衣在线一区二区| 久久亚洲春色中文字幕| 国产香蕉久久| 俺去亚洲欧洲欧美日韩| 日韩精品第二页| 三级精品视频久久久久| 亚洲四虎影院| 久久亚洲精品国产亚洲老地址| 中文字幕系列一区| 色狠狠久久aa北条麻妃| 亚洲欧美在线人成swag| 欧美成人免费网| 91久久精品无嫩草影院| 久久久久久高潮国产精品视| 国产精品男女| 欧美一区二区三区……| 精品日产免费二区日产免费二区| 日本久久久久久久久久久| 国产成人一区二区三区影院| 国产精品视频永久免费播放| 91视频一区| 久久精品二区| 免费在线看一区| 国产av不卡一区二区| 丁香激情综合国产| 91最新在线观看| 洋洋成人永久网站入口| 一区二区三区高清在线视频| 欧美自拍丝袜亚洲| 色呦呦在线视频| 少妇久久久久久| 日韩精品社区| 亚洲xxxxx性| 日韩成人一级片| 日本福利视频在线| 一区二区三区中文字幕精品精品| 久香视频在线观看| 亚洲精品720p| 香蕉成人app| 国产精品一区二区久久久久| 国产一区二区三区自拍| 米仓穗香在线观看| 国产精品久99| 男人在线资源站| 色狠狠久久aa北条麻妃 | 日本xxx免费| 国产亚洲人成网站| 亚洲精华国产精华| 日韩女优视频免费观看| 精品国产不卡一区二区| 91美女片黄在线观看游戏| 日韩电影在线看| 亚洲欧美国产中文| 欧美一区在线视频| 亚洲2区在线| 国产精品区二区三区日本| 国产v日产∨综合v精品视频| 在线天堂日本| 日韩精品在线免费| av永久不卡| 91成人在线视频观看| 亚洲精品欧美综合四区| 美女网站在线看| 成人国产精品av| 成人黄色国产精品网站大全在线免费观看 | 神马亚洲视频| 亚洲欧美国内爽妇网| 久久视频在线观看| 欧美一区二区在线视频观看| 欧美国产日本视频| 青青草视频在线免费直播| 欧美又大又粗又长| 国产一区欧美一区| 台湾av在线二三区观看| 日韩中文字幕在线观看| 亚洲日韩视频| 少妇一级淫免费放| 亚洲精品在线观看视频| 精品美女久久| 怡红院av亚洲一区二区三区h| 在线亚洲欧美专区二区| 最新国产精品精品视频| 热re99久久精品国产99热| 一区二区三区美女| 午夜不卡一区| 亚洲砖区区免费| 在线一区二区三区做爰视频网站| 草莓视频一区二区三区| 乱子伦一区二区| 日韩一区和二区| 国产精品久久久久久久久久小说 | 精品欧美激情精品一区| 成人在线视频免费| 久久亚洲高清| 亚洲成人在线网站| 亚洲91网站| 免费看日本黄色| 欧美一区二区三区四区五区 | 91pron在线| 国产精品污网站| 91综合国产| 影音先锋在线亚洲| 欧美日韩精品系列| 日韩久久久久| 1024亚洲| 97视频在线观看亚洲| 99这里都是精品| 亚洲mmav| 国产在线拍揄自揄拍无码| 日韩午夜激情av| 99av国产精品欲麻豆| 飘雪影院手机免费高清版在线观看| 欧美在线亚洲在线| 亚洲国产精品黑人久久久| 精品国产欧美| 波多野结衣家庭教师视频| 怡红院精品视频| 国产成人一区在线| 久久99久久99精品免观看软件| 一本久久a久久精品vr综合| 日韩欧美一级二级三级久久久| 精品69视频一区二区三区Q| 中国在线观看免费国语版电影 | 欧美精品一区二区三区精品| 天堂av在线网站| 日韩在线视频国产| 成人午夜又粗又硬又大| 中文字幕系列一区| 国产精品入口芒果| 久久亚洲精品小早川怜子66| 久久久久久久电影| 久久综合五月婷婷| 日本中文视频| 亚洲影视中文字幕| 欧美性xxxxx极品少妇| 国产精品久久国产愉拍| 羞羞视频在线观看免费| 亚洲精美视频| 在线看国产精品| 久久精品人人爽人人爽| 亚洲老女人视频免费| 中文字幕不卡免费视频| 99re6热在线精品视频播放速度| 在线免费视频一区二区| 久久一区亚洲| 日本肉肉一区| www亚洲天堂| caoporn国产精品免费公开| 日韩欧美一二三区| 成人av手机在线观看| 欧美天堂社区| 欧美一区二区少妇| 欧美日韩一区在线观看视频| 亚洲天堂网站在线观看视频| 久久久综合九色合综国产精品| 欧美自拍视频| 99re在线视频| 国产精品av免费| 欧美激情久久久| 污片在线观看一区二区| 日韩不卡手机在线v区| 警花av一区二区三区| 中文在线有码| 国产日韩视频在线播放| 91爱视频在线| 欧美日韩免费不卡视频一区二区三区| 男女男精品视频网| heyzo欧美激情| jizz在线观看中文| 国产亚洲黄色片| 成人网中文字幕| 亚洲精品乱码久久久久久金桔影视 | 四虎国产精品免费观看| caoprom在线|