AIGC視頻生成明星——Emu Video模型

大家好,這里是好評筆記,公主號:Goodnote,專欄文章私信限時Free。本文詳細介紹Meta的視頻生成模型Emu Video,作為Meta發布的第二款視頻生成模型,在視頻生成領域發揮關鍵作用。

在這里插入圖片描述

🌺優質專欄回顧🌺:

  1. 機器學習筆記
  2. 深度學習筆記
  3. 多模態論文筆記
  4. AIGC—圖像

文章目錄

    • 論文
    • 摘要
    • 引言
    • 相關工作
      • 文本到圖像(T2I)擴散模型
      • 視頻生成/預測
      • 文本到視頻(T2V)生成
      • 分解生成
    • 方法
      • 預備知識
      • Emu Video
        • 生成步驟
        • 圖像條件
        • 模型結構
        • 零終端信噪比 噪聲調度
        • 插值模型
        • 實現簡單性
        • 穩健的人類評估(JUICE)
      • 實現細節
        • 架構與初始化
        • 高效的多階段多分辨率訓練
        • 高質量微調
        • 插值模型
    • 實驗
    • 倫理問題

論文

項目:https://emu-video.metademolab.com/assets/emu_video
論文:https://arxiv.org/pdf/2311.10709

摘要

本文提出Emu Video,這是一種文本到視頻生成模型,將生成過程分解為兩個步驟

  1. 先根據文本生成圖像;
  2. 再基于文本生成的圖像生成視頻

該模型在性能上超越了RunwayML的Gen2和Pika Labs等商業解決方案。

引言

T2I模型大規模的圖像文本對上訓練,已經很成功了,可使用視頻文本對進一步拓展文本到視頻(T2V)生成,但視頻生成質量和多樣性方面仍落后于圖像生成。原因在于:

  • 需要對更高維度的時空輸出空間進行建模,且僅以文本提示作為條件;
  • 視頻文本數據集通常比圖像文本數據集小一個數量級

當前視頻生成的主流范式是使用擴散模型一次性生成所有視頻幀。而不是NLP中的自回歸問題不同,自回歸方法在視頻生成中具有挑戰性,因為從擴散模型生成單個幀就需要多次迭代

Emu Video通過顯式的中間圖像生成步驟,將文本到視頻生成分解為兩個子問題

  1. 根據輸入文本提示生成圖像;
  2. 基于圖像和文本的強條件生成視頻。

直觀地說,給模型一個起始圖像和文本會使視頻生成更容易,因為模型只需要預測圖像未來的演變

由于視頻文本數據集遠小于圖像文本數據集,使用預訓練的文本到圖像(T2I)模型初始化T2V模型,并凍結其權重。在推理時,這種分解方法能顯式生成圖像,從而保留T2I模型的視覺多樣性、風格和質量。

Emu Video證明了將文本到視頻(T2V)生成過程分解為:先生成圖像,再用生成的圖像和文本生成視頻。可以大幅提高生成質量。

到此,作者確定了他們的關鍵設計決策 —— 改變擴散噪聲調度采用多階段訓練,從而能夠繞過先前工作中對深度級聯模型的需求高效生成 512 像素高分辨率的視頻。該模型也可以根據用戶提供的圖像和文本提示生成視頻。

相關工作

文本到圖像(T2I)擴散模型

相比于先前的生成對抗網絡(GAN)或自回歸方法,擴散模型是文本到圖像生成的前沿方法,通過加噪聲和預測加入的噪聲并去除來學習數據分布,生成輸出。

擴散模型去噪可以在像素空間使用,也可以在低維潛在空間使用,本文采用潛在擴散模型進行視頻生成

視頻生成/預測

許多先前工作,如掩碼預測、LSTMs、GANs 等通常在有限的領域中進行訓練和評估。它們適用的場景較為狹窄,可能只在特定類型的視頻數據、特定的任務要求或特定的應用場景中表現良好。

本文的研究中,目標是開放集的文本到視頻(T2V)生成。開放集意味著處理的數據和任務場景更為廣泛和多樣,沒有預先設定的嚴格限制,這與之前這些方法所適用的有限領域形成對比。

文本到視頻(T2V)生成

多數先前工作通過利用T2I模型來解決T2V生成問題

  • 采用無訓練方法,通過在T2I模型中注入運動信息進行零樣本T2V生成
  • 通過微調T2I模型實現單樣本T2V生成

這些方法生成的視頻質量和多樣性有限。

也有許多工作通過向T2I模型引入時間參數學習從文本條件到生成視頻的直接映射,來改進T2V生成。如

  • Make-A-Video利用預訓練的T2I模型和先驗網絡,在無配對視頻文本數據的情況下訓練T2V生成;
  • Imagen Video基于Imagen T2I模型構建級聯擴散模型

為解決高維時空空間建模的挑戰,部分工作在低維潛在空間訓練T2V擴散模型,但這些方法學習從文本到高維視頻空間的直接映射具有挑戰性

本文則 采用分解方法來增強條件信號

分解生成

與Emu Video在分解方面最相似的工作是CogVideo和Make-A-Video:

  • CogVideo基于預訓練的T2I模型,使用自回歸Transformer進行T2V生成,其自回歸性質在訓練和推理階段與Emu Video的顯式圖像條件有根本區別。
  • Make-A-Video 利用從共享圖像文本空間中學習到的圖像嵌入作為條件。

Emu Video直接利用第一幀作為條件,條件更強

此外,Make-A-Video從預訓練的T2I模型初始化,但對所有參數進行微調,無法像Emu Video那樣保留T2I模型的視覺質量和多樣性。Stable Video Diffusion是一項與Emu Video同時期的工作,也引入了類似的分解方法進行T2V生成。

Make-A-Video是Meta于2022年發布的模型/論文中:MAKE-A-VIDEO: TEXT-TO-VIDEO GENERATION WITHOUT TEXT-VIDEO DATA
CogVideo是國產的視頻生成模型,之前清華大學和智譜AI一起研發了CogView文本生成圖像模型,CogVideo由清華大學發布的論文:CogVideo: Large-scale Pretraining for Text-to-Video Generation via Transformers

方法

文本到視頻(T2V)生成的目標:構建一個模型,該模型以文本提示 P 作為輸入,生成由 T 個 RGB 幀組成的視頻 V

近期的一些模型僅使用文本作為條件,一次性直接生成 T 個視頻幀。作者在本論文中認為:通過文本和圖像共同提供更強的條件能夠提升視頻生成效果(驗證參見 3.2 節 )。

預備知識

條件擴散模型是一類生成模型,通過迭代對高斯噪聲去噪,根據條件輸入c生成輸出

在訓練時:

  • 將時間步 t ∈ [ 0 , N ] t \in[0, N] t[0,N]相關的高斯噪聲 ? t ~ N ( 0 , 1 ) \epsilon_{t} \sim N(0, 1) ?t?N(0,1)添加到原始輸入信號X上,得到有噪輸入 X t = α t X + 1 ? α t ? t X_{t}=\alpha_{t} X+\sqrt{1-\alpha_{t}} \epsilon_{t} Xt?=αt?X+1?αt? ??t?,其中 α t \alpha_{t} αt?定義 “噪聲調度”,N是擴散步驟總數。
  • 擴散模型通過預測噪聲 ? t \epsilon_{t} ?t? x x x v t = α t ? t ? 1 ? α t X v_{t}=\alpha_{t} \epsilon_{t}-\sqrt{1-\alpha_{t}} X vt?=αt??t??1?αt? ?X來對 x t x_{t} xt?進行去噪。時間步t的信噪比(SNR)為 ( α t 1 ? α t ) 2 (\frac{\alpha_{t}}{1-\alpha_{t}})^{2} (1?αt?αt??)2,并隨著 t → N t \to N tN而降低。

在推理時:

  • 純噪聲/高斯噪聲 X N ~ N ( 0 , 1 ) X_{N} \sim N(0, 1) XN?N(0,1)開始去噪生成樣本。

x t x_{t} xt?去噪的三種預測方式:

  • 預測 ? t \epsilon_{t} ?t?常用):
    • ? t \epsilon_{t} ?t?是在時間步 t t t添加到原始輸入信號 X X X的高斯噪聲 ? t ~ N ( 0 , 1 ) \epsilon_{t}\sim N(0, 1) ?t?N(0,1)。如果模型能夠準確預測出這個噪聲,那么就可以從含噪輸入 X t = α t X + 1 ? α t ? t X_{t}=\alpha_{t}X +\sqrt{1-\alpha_{t}}\epsilon_{t} Xt?=αt?X+1?αt? ??t?中減去預測的噪聲,從而達到去噪的目的。
  • 預測 x x x
    • 這里的 x x x是指原始輸入信號 X X X。模型直接預測原始信號本身,在得到預測的原始信號 X ^ \hat{X} X^后,就可以將含噪輸入 X t X_{t} Xt?中的噪聲部分去除。在實際操作中,直接預測原始信號可能會比較復雜,因為模型需要學習從含噪信號中還原出原始信號的復雜映射關系。
  • 預測 v t v_{t} vt?
    • v t = α t ? t ? 1 ? α t X v_{t}=\alpha_{t}\epsilon_{t}-\sqrt{1 - \alpha_{t}}X vt?=αt??t??1?αt? ?X是一種組合了噪聲 ? t \epsilon_{t} ?t?和原始信號 X X X的形式。當模型預測出 v t v_{t} vt? v ^ t \hat{v}_{t} v^t?時,可以通過一定的數學變換來去除噪聲,恢復原始信號。這種方式綜合考慮了噪聲和原始信號之間的關系,也是一種有效的去噪策略。

Emu Video

在這里插入圖片描述

圖3描述了分解的文本 - 視頻生成過程。

  • 首先根據文本 p p p生成圖像 I I I
  • 然后使用更強的條件,即生成的圖像和文本來生成視頻 V V V

為了使我們的模型 F \mathcal{F} F以圖像為條件,我們在時間維度上對圖像進行零填充,并將其與一個二進制掩碼連接起來,該掩碼指示哪些幀是零填充的【類似Trandformer的填充遮蔽(Padding Masking)與未來遮蔽(Future Masking)】,以及含噪輸入。

生成步驟

將文本到視頻生成分解為兩個步驟:

  • 首先,根據文本提示 p p p 生成第一幀(圖像);
  • 然后,利用文本提示 p p p 和圖像條件【下面會介紹圖像條件怎么來的】生成T幀視頻。

這兩個步驟均使用潛在擴散模型 F \mathcal{F} F實現,使用預訓練的文本到圖像模型初始化 F \mathcal{F} F,確保其在初始化時能夠生成圖像

只需訓練 F \mathcal{F} F解決第二步,即根據文本提示和起始幀/圖像推出視頻。使用視頻文本對訓練 F \mathcal{F} F,通過采樣起始幀/圖像 I I I,讓模型根據文本提示 P P P和圖像 I I I條件預測 T T T幀( T T T幀會被獨立地添加噪聲,以生成含噪輸入 x t x_{t} xt?,而擴散模型的訓練目標就是對這個含噪輸入進行去噪)。

首先通過逐幀應用圖像自動編碼器的編碼器將視頻 v v v轉換到潛在空間 X ∈ R T × C × H × W X \in \mathbb{R}^{T×C×H×W} XRT×C×H×W,這會降低空間維度。潛在空間中的數據可以通過自動編碼器的解碼器轉換回像素空間。

圖像條件

通過將起始幀 I I I與噪聲拼接(如上圖的concatenate),為模型提供條件。將 I I I表示為單幀視頻( T = 1 T=1 T=1),并對其進行零填充,得到 T × C × H × W T ×C ×H ×W T×C×H×W張量,同時使用形狀為 T × 1 × H × W T ×1 ×H ×W T×1×H×W二進制掩碼m,在第一時間位置設置為1表示起始幀位置,其他位置為0。將掩碼m、起始幀I和有噪視頻 x t x_{t} xt?按通道連接作為模型輸入。

Make-a-video等模型中基于語義嵌入設定條件的方法不同,Emu Video 的拼接的方式讓模型利用起始幀 I 的全部信息。基于語義嵌入的方法會在條件設定時丟失部分圖像信息,而 Emu Video 的設計避免了這一問題,為生成高質量視頻提供了更多有效信息。

掩碼 m 用于標記起始幀在序列中的位置幫助模型識別起始幀,對后續視頻生成過程進行更精準的指導。

模型結構

使用預訓練的T2I模型Emu初始化潛在擴散模型 F \mathcal{F} F,并添加新的可學習時間參數

  • 在每個空間卷積層之后添加一維時間卷積層;
  • 在每個空間注意力層之后添加一維時間注意力層 ;
  • 原始的空間卷積層和注意力層保持凍結狀態。

在Runway的Gen-1中的時空潛在擴散中也使用了可學習時間參數:

  • 在每個殘差塊中的每個 2D 空間卷積之后引入一個1D 時間卷積。
  • 在每個空間 2D 空間注意力塊后引入一個時間1D 時間注意力塊。

預訓練的 T2I 模型以文本作為條件與上一節的圖像條件相結合后,模型 F \mathcal{F} F 同時以文本和圖像作為條件。

Emu是Meta發布的一款T2I模型,論文為:Emu: Enhancing Image Generation Models Using Photogenic Needles in a Haystack

零終端信噪比 噪聲調度

作者發現,先前工作(Emu和SD模型)中使用的擴散噪聲調度存在訓練 - 測試差異,這會阻礙高質量視頻的生成

在訓練過程中,該噪聲調度會留下一些殘留信號,也就是說,即使在擴散的終端時間步N,信噪比(SNR)仍不為零。當我們從不含真實數據信號的隨機高斯噪聲中采樣時,這會導致擴散模型在測試時無法很好地泛化。由于高分辨率視頻幀在空間和時間上存在冗余像素,其殘留信號更為明顯。

作者通過縮放噪聲調度并將最終的 α N = 0 \alpha_N = 0 αN?=0來解決這個問題,這使得在訓練過程中的時間步為N時(擴散過程的最后一個階段),信噪比也為零。我們發現這個設計決策對于高分辨率視頻的生成至關重要

這個問題和縮放噪聲調度方法并非本文首創,在之前的:Common diffusion noise schedules and sample steps are flawed也發現了這個問題。【來源于字節跳動】

插值模型

使用與 F \mathcal{F} F結構相同的插值模型 I I I,將低幀率的 T T T幀視頻轉換為高幀率的 T p T_{p} Tp?幀視頻。 輸入的 T T T幀通過零交錯生成 T p T_{p} Tp?幀,并將指示 T T T幀存在的二進制掩碼m連接到有噪輸入。為提高效率,從 F \mathcal{F} F初始化 I I I,并僅針對插值任務訓練 I I I的時間參數。

將低幀率的 T T T幀視頻轉換為高幀率的 T p T_p Tp?幀,能提升視頻流暢度與視覺效果,適應多樣化應用場景,增強模型競爭力,為用戶帶來更好體驗。

實現簡單性

Emu Video在實現方面的簡單且高效:

  1. 訓練數據與模型結構簡單
    • 標準數據集訓練:Emu Video采用標準視頻文本數據集進行訓練,這意味著其訓練數據來源廣泛且具有通用性,不需要特殊定制的數據集,降低了數據準備的難度和成本。
    • 無需深度級聯模型:在生成高分辨率視頻時,Emu Video不需要像某些其他方法(如Imagen Video中使用7個模型的深度級聯結構)那樣復雜的模型架構,簡化了模型構建和訓練流程。
  2. 推理過程
    • 圖像與視頻生成:推理時,先運行去除時間層的模型F根據文本提示生成圖像I再將I和文本提示作為輸入,通過F直接生成高分辨率的T幀視頻,這種推理方式簡潔高效。
    • 幀率提升:借助插值模型I可提高視頻幀率,進一步增強視頻的視覺效果,且這一操作融入到了整體的推理流程中。
  3. 模型初始化與風格保留
    • 初始化策略:空間層從預訓練的T2I模型初始化并保持凍結,這樣可以利用T2I模型在大規模圖像文本數據集上學習到的概念和風格多樣性。
    • 風格保留優勢:相比Imagen Video需要在圖像和視頻數據上聯合微調以維持風格,Emu Video不需要額外的訓練成本就能保留并運用這些風格來生成圖像I。許多直接的T2V方法,如Make-a-video,雖然也從預訓練T2I模型初始化并凍結空間層,但由于沒有采用基于圖像的分解方法,無法像Emu Video一樣保留T2I模型的質量和多樣性 。
穩健的人類評估(JUICE)

由于自動評估指標不能反映質量的提升,主要使用人類評估來衡量T2V生成性能,從視頻生成質量(Quality,Q)和生成視頻與文本提示的對齊或 “保真度”(Faithfulness,F)兩個正交方面進行評估。提出JUICE評估方案,要求評估者在成對比較視頻生成結果時說明選擇理由,顯著提高了標注者之間的一致性。評估者可選擇像素清晰度、運動平滑度、可識別對象/場景、幀一致性和運動量等理由來評價視頻質量;使用空間文本對齊和時間文本對齊來評價保真度。

實現細節

附錄第 1 節提供完整的實現細節,詳細內容可以參考附錄第 1 節,這里只介紹關鍵細節。

架構與初始化

采用Emu中的文本到圖像 U-Net 架構構建模型,并使用預訓練模型初始化所有空間參數。

預訓練模型使用一個 8 通道、64×64 的潛在向量,經自動編碼器在空間上進行 8 倍下采樣,生成 512px 的方形圖像。
該模型同時使用一個凍結的 T5-XL 和一個凍結的 CLIP 文本編碼器從文本提示中提取特征

高效的多階段多分辨率訓練

為降低計算復雜度,分兩個階段進行訓練

  1. 先在低分辨率下,訓練更簡單的任務,即生成256px、8fps、1s的視頻。
  2. 然后在期望的高分辨率下訓練,對4fps、2s的視頻進行15K次迭代訓練。
    a. 使用同SD一樣的噪聲調度進行256px訓練。
    b. 在512px訓練中使用零終端信噪比噪聲調度,擴散訓練步數 N = 1000 N = 1000 N=1000
    c. 使用DDIM采樣器進行采樣,采樣步數為250步。

SD中的噪聲調度是:線性調度。
SD 系列文章參考:Stable Diffusion

高質量微調

通過在一小部分高運動和高質量視頻上微調模型,可改善生成視頻的運動效果。從訓練集中自動識別出1600個具有高運動(根據H.264編碼視頻中存儲的運動信號計算)的視頻作為微調子集,并根據美學分數和視頻文本與第一幀CLIP相似度進行篩選。

插值模型

插值模型I從視頻模型F初始化,輸入8幀,輸出 T p = 37 T_{p} = 37 Tp?=37幀,幀率為16fps。在訓練時使用噪聲增強,在推理時對F的樣本進行噪聲增強。

實驗

參照論文原文

倫理問題

參照論文原文

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/66793.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/66793.shtml
英文地址,請注明出處:http://en.pswp.cn/web/66793.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Debian 上安裝PHP

1、安裝軟件源拓展工具 apt -y install software-properties-common apt-transport-https lsb-release ca-certificates 2、添加 Ond?ej Sur 的 PHP PPA 源,需要按一次回車: add-apt-repository ppa:ondrej/php 3、更新軟件源緩存: apt-g…

office 2019 關閉word窗口后卡死未響應

最近關閉word文件總是出現卡死未響應的狀態,必須從任務管理器才能殺掉word 進程,然后重新打開word再保存,很是麻煩。(#其他特征,在word中打字會特別變慢,敲擊鍵盤半秒才出現字符。) office官網…

SecureUtil.aes數據加密工具類

數據加密、解密工具類 包含map和vo的數據轉換 import cn.hutool.core.bean.BeanUtil; import cn.hutool.crypto.SecureUtil;import java.util.HashMap; import java.util.Map;/*** 數據解析**/ public class ParamUtils {/*** 數據解密** param params 參數* param secretKe…

機器學習:支持向量機

支持向量機(Support Vector Machine)是一種二類分類模型,其基本模型定義為特征空間上的間隔最大的廣義線性分類器,其學習策略便是間隔最大化,最終可轉化為一個凸二次規劃問題的求解。 假設兩類數據可以被 H x : w T x…

SQL-leetcode—1148. 文章瀏覽 I

1148. 文章瀏覽 I Views 表: ---------------------- | Column Name | Type | ---------------------- | article_id | int | | author_id | int | | viewer_id | int | | view_date | date | ---------------------- 此表可能會存在重復行。(換句話說…

k8s資源預留

k8s資源預留 https://kubernetes.io/zh-cn/docs/tasks/administer-cluster/reserve-compute-resources/ vim /var/lib/kubelet/config.yamlenforceNodeAllocatable: - pods kubeReserved: # 配置 kube 資源預留cpu: 500mmemory: 1Giephemeral-storage: 1Gi systemReserved: #…

[STM32 HAL庫]串口空閑中斷+DMA接收不定長數據

一、空閑中斷 STM32的串口具有空閑中斷,什么叫做空閑呢?如何觸發空閑中斷呢? 空閑:串口發送的兩個字符之間間隔非常短,所以在兩個字符之間不叫空閑。空閑的定義是總線上在一個字節的時間內沒有再接收到數據。觸發條件…

Unity Line Renderer Component入門

Overview Line Renderer 組件是 Unity 中用于繪制連續線段的工具。它通過在三維空間中的兩個或兩個以上的點的數組,并在每個點之間繪制一條直線。可以繪制從簡單的直線到復雜的螺旋線等各種圖形。 1. 連續性和獨立線條 連續性:Line Renderer 繪制的線條…

純 Python、Django、FastAPI、Flask、Pyramid、Jupyter、dbt 解析和差異分析

一、純 Python 1.1 基礎概念 Python 是一種高級、通用、解釋型的編程語言,以其簡潔易讀的語法和豐富的標準庫而聞名。“純 Python” 在這里指的是不依賴特定的 Web 框架或數據分析工具,僅使用 Python 原生的功能和標準庫來開發應用程序或執行任務。 1.…

SQL記錄學習日志

刪除表 DROP TABLE:徹底刪除表和其數據,無法恢復。 DROP TABLE IF EXISTS:在刪除之前檢查表是否存在。 TRUNCATE TABLE:刪除所有數據,但保留表的結構。 DELETE:刪除表中的所有數據,但保留表的結…

QT:tftp client 和 Server

1.TFTP簡介 TFTP(Trivial File Transfer Protocol,簡單文件傳輸協議)是TCP/IP協議族中的一個用來在客戶機與服務器之間進行簡單文件傳輸的協議,提供不復雜、開銷不大的文件傳輸服務。端口號為69。 FTP是一個傳輸文件的簡單協議,…

WPF5-x名稱空間

1. x名稱空間2. x名稱空間內容3. x名稱空間內容分類 3.1. x:Name3.2. x:Key3.3. x:Class3.4. x:TypeArguments 4. 總結 1. x名稱空間 “x名稱空間”的x是映射XAML名稱空間時給它取的名字(取XAML的首字母),里面的成員(如x:Class、…

前端jquery 實現文本框輸入出現自動補全提示功能

git倉庫:web_study/some-demos/inputAutoFit at main Cong0925/web_study (github.com) 壓縮包:已綁定到指定資源 示例圖: 實現說明: 1.首先,html部分設置好相關的定位標簽如圖: 2.主要函數 3.默認數據

緩存之美:萬文詳解 Caffeine 實現原理(上)

由于社區最大字數限制,本文章將分為兩篇,第二篇文章為緩存之美:萬文詳解 Caffeine 實現原理(下) 大家好,我是 方圓。文章將采用“總-分-總”的結構對配置固定大小元素驅逐策略的 Caffeine 緩存進行介紹&…

Qt實踐:一個簡單的絲滑側滑欄實現

Qt實踐:一個簡單的絲滑側滑欄實現 筆者前段時間突然看到了側滑欄,覺得這個抽屜式的側滑欄非常的有趣,打算這里首先嘗試實現一個簡單的絲滑側滑欄。 首先是上效果圖 (C,GIF幀率砍到毛都不剩了) QProperty…

工作流引擎Camunda與LiteFlow核心組件對比

以下為 Camunda 7 和 LiteFlow 詳細的介紹,包括它們的核心組件和用途。 1. Camunda 7 詳細介紹 Camunda 7 是一個基于 BPMN 2.0 標準的企業級工作流和決策自動化平臺。它被廣泛應用于復雜業務流程的管理和執行,其核心目標是通過流程自動化來提升企業效…

css動畫水球圖

由于echarts水球圖動畫會導致ios卡頓&#xff0c;所以純css模擬 展示效果 組件 <template><div class"water-box"><div class"water"><div class"progress" :style"{ --newProgress: newProgress % }"><…

iOS 權限管理:同時請求相機和麥克風權限的最佳實踐

引言 在開發視頻類應用時&#xff0c;我們常常會遇到需要同時請求相機和麥克風權限的場景。比如&#xff0c;在用戶發布視頻動態時&#xff0c;相機用于捕捉畫面&#xff0c;麥克風用于錄制聲音&#xff1b;又或者在直播功能中&#xff0c;只有獲得這兩項權限&#xff0c;用戶…

Java 泛型上下限詳解:以 Info 泛型類和方法實現為例

本文將通過一個實際示例&#xff0c;來深入講解 Java 泛型中的上下限及其應用場景。在這個示例中&#xff0c;我們會實現一個泛型類 Info 和兩個泛型方法 upperLimit 和 lowerLimit&#xff0c;并解釋其工作機制。 1. 什么是 Java 泛型上下限&#xff1f; Java 泛型的上下限是…

客戶服務創新:數字化時代的策略與實踐

在數字化時代背景下&#xff0c;客戶服務已成為企業競爭的關鍵領域。隨著消費者需求的日益多樣化和個性化&#xff0c;傳統的客戶服務模式已難以滿足市場的要求。因此&#xff0c;企業需要不斷探索和創新客戶服務策略&#xff0c;以適應數字化時代的變化。 一、數字化時代客戶服…