成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Qwen原生多模態開源,淺析一下!

發布于 2025-3-28 00:45
瀏覽
0收藏

Qwen2.5-Omni 7B開源,Qwen的第一個端到端的多模態模型,可以文本、圖像、音頻和視頻輸入,同時以流式方式生成文本和自然語音回復。

提出了 Thinker-Talker 架構。

Qwen原生多模態開源,淺析一下!-AI.x社區

PR還沒合進去,要注意安裝方式

Qwen原生多模態開源,淺析一下!-AI.x社區

評測的榜似乎畫的有點趕,看不出信息量。

Qwen原生多模態開源,淺析一下!-AI.x社區

提出了一種新的位置嵌入,稱為 TMRoPE(時間對齊多模態 RoPE),用于同步視頻輸入的時戳與音頻。

資源占用:理論值如下,實際要在高1.2倍,看起來消耗有點大。


瞄下代碼,關于輸入,每個模態都有專門的處理組件:

class Qwen2_5OmniProcessor(ProcessorMixin):
    attributes = ["omni_processor", "feature_extractor", "tokenizer"]
    omni_processor_class = "Qwen2VLImageProcessor"
    feature_extractor_class = "WhisperFeatureExtractor"
    tokenizer_class = ("Qwen2Tokenizer", "Qwen2TokenizerFast")

視頻這里,還計算每個視頻時間網格對應的實際秒數,用于TMRoPE中的時間對齊

if videos is not None:
    videos_inputs = self.omni_processor(images=None, videos=videos, **output_kwargs["videos_kwargs"])
    if fps is None:
        fps = [2.0] * len(videos)
    videos_inputs["video_second_per_grid"] = [
        fps[i] / self.omni_processor.temporal_patch_size for i in range(len(fps))
    ]

模型代碼的核心由3塊構成,Thinker,Talker,Token2Wav

talker是將文本轉成語音編碼,Token2Wav是將編碼轉成波形。

里邊實現了幾個Token2Wav變體:

  • Qwen2_5OmniToken2WavDiTModel:基于擴散模型的波形生成
  • Qwen2_5OmniToken2WavBigVGANModel:基于GAN的波形生成
  • Qwen2_5OmniToken2WavModel:通用基類

文本輸出和語音輸出是兩條并行的路徑:

  • 文本輸出:輸入 → Thinker → 文本輸出
  • 語音輸出:輸入 → Thinker → Talker → Token2Wav → 語音輸出

只有當需要語音輸出時,才會激活Talker模塊和Token2Wav模塊,將Thinker生成的文本內容轉換為語音。

細節可以自行看源碼,不貼了。


在看看新的位置編碼。

對于純文本,使用常規的1D位置編碼。

對于包含視覺(圖像/視頻)和文本的混合輸入,函數分別計算:

  • 視覺部分用3D位置編碼
  • 文本部分用1D位置編碼

比如說,一個有3個時間片、2×2空間分辨率的視頻示例:

輸入序列: [V V V V V V V V V V V V T T T T T]
視覺時間位置ID: [0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2]
視覺高度位置ID: [0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1]
視覺寬度位置ID: [0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1]
文本位置ID從視覺最大位置ID+1開始: [3, 4, 5, 6, 7]

將時間維度映射到位置ID,考慮每秒對應多少個位置單位(position_id_per_seconds)

t_index = (torch.arange(grid_t) * second_per_grids[video_idx] * position_id_per_seconds).long()
llm_pos_ids = self.get_llm_pos_ids_for_vision(
    start_idx, video_idx, spatial_merge_size, t_index, grid_hs, grid_ws
)

針對視頻中包含音頻的情況,還單獨處理了,視頻和音頻交替編碼,按時間塊組織,每個時間塊包含視頻幀和對應的音頻段,音頻有特殊的開始和結束標記(audio_start_token_id和audio_end_token_id)

# 視頻和音頻混合處理
t_index_split_chunk = self.split_list_into_ranges(t_index, t_ntoken_per_chunk)

for t_chunk in t_index_split_chunk:
    vision_ntoken_per_chunk = len(t_chunk) * grid_h * grid_w // (spatial_merge_size**2)
    new_src_item.extend([video_token_id] * vision_ntoken_per_chunk)
    # 為視頻區塊分配位置ID
    
    new_src_item.extend(min(t_ntoken_per_chunk, pure_audio_len - added_audio_len) * [audio_token_id])
    # 為音頻區塊分配位置ID

最后開源地址:https://huggingface.co/Qwen/Qwen2.5-Omni-7B

代碼地址:https://github.com/huggingface/transformers/blob/3a1ead0aabed473eafe527915eea8c197d424356/src/transformers/models/qwen2_5_omni/modeling_qwen2_5_omni.py#L1175

本文轉載自??NLP前沿??,作者:NLP前沿


收藏
回復
舉報
回復
相關推薦
主站蜘蛛池模板: 精品美女久久久久久免费 | 超碰日韩 | 免费观看色 | 国产精品日本一区二区在线播放 | 日日人人 | 日韩在线欧美 | 网色| 少妇性l交大片免费一 | 日韩中文在线 | 一区二区在线 | 亚洲欧美在线一区 | 天天成人综合网 | 夜夜摸天天操 | 日本一区二区三区四区 | 国产精品欧美一区二区三区不卡 | 草樱av | 久久视频免费观看 | 国产精品1区 | 9久久精品 | 国产精品免费一区二区三区 | 在线欧美一区 | 免费精品一区 | 香蕉二区| 91精品久久久久久久久 | 精品乱人伦一区二区三区 | 日韩精品久久久久久 | 亚洲一区二区三区在线播放 | 久久久成人精品 | 亚洲精品在线播放 | 亚洲成人中文字幕 | 婷婷在线网站 | 欧美一区二区三区久久精品视 | 国产精品视频综合 | 精品国产三级 | 99亚洲视频 | 男女免费在线观看视频 | 欧美亚洲视频在线观看 | 黄网站涩免费蜜桃网站 | 久久99网 | 成人深夜小视频 | 欧美日韩福利视频 |