日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

文本生成视频相关指标整理

發(fā)布時(shí)間:2024/3/24 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 文本生成视频相关指标整理 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

視頻生成相關(guān)指標(biāo)整理

  • FID ↓\downarrow
  • FVD ↓\downarrow
  • CLIPSIM ↑\uparrow
  • Acc ↑\uparrow
  • GFLOPs
  • Params
  • Runtime

FID ↓\downarrow

Fréchet Inception Distance

基本思想:直接考慮生成數(shù)據(jù)和真實(shí)數(shù)據(jù)在feature層次的距離。
預(yù)訓(xùn)練好的神經(jīng)網(wǎng)絡(luò)可以在在高層提取圖片的抽象特征。FID通常使用Inception Net-V3全連接前的2048維向量作為圖片的feature。
直觀感受,FID是反應(yīng)生成圖片和真實(shí)圖片的距離,數(shù)據(jù)越小越好。

具體而言,FID是衡量?jī)蓚€(gè)多元正態(tài)分布的距離,其公式如下
FID=∣∣μr?μg∣∣2+Tr(∑r+∑g?2∑r∑g1/2)FID = ||\mu_r-\mu_g||^2+Tr(\begin{matrix} \sum_r \end{matrix}+\begin{matrix} \sum_g\end{matrix}-2\begin{matrix} \sum_r\sum_g\end{matrix}^{1/2}) FID=∣∣μr??μg?2+Tr(r??+g???2r?g??1/2)
特點(diǎn):

  • 刷分不會(huì)導(dǎo)致生成圖片質(zhì)量變差
  • 生成模型的訓(xùn)練集可以和Inception Net-V3不同
  • FID是衡量多元正態(tài)分布直接按的距離,但提取的圖片特征不一定是符合多元正態(tài)分布
  • 無(wú)法解決過(guò)擬合問(wèn)題,如果生成模型只能生成和訓(xùn)練集一模一樣的數(shù)據(jù)無(wú)法檢測(cè)

代碼:
計(jì)算FID的代碼上傳到這里了–>pytorch_fid

FVD ↓\downarrow

基本思想: 相當(dāng)于把FID的圖像特征提取網(wǎng)絡(luò)換成視頻特征提取網(wǎng)絡(luò),其他都差不多。
幾種叫法:

  • FID2vid(BoGAN)
    來(lái)源論文:video-to-video synthesis
    特征提取器:I3D, ResNeXt
  • FID-vid(NvWA、TFGAN)
    特征提取器:3D Resnet-50 model
  • Cited from TFGAN:
    (3) Video-level FID: Features of the penultimate layer are extracted from 3D Resnet-50 model trained on the entire Kinetics dataset [Kay et al., 2017], and the FID score is computed between the real and generated videos. Note that lower the FID scores, better are the models.
    Kay et al., 2017. The kinetics human action video dataset.

  • Fréchet Video Distance(FVD) (Cogvide, make-a-video…)
    特征提取器:3D Resnet-50 model
    來(lái)源論文:Latent Video Transformer
  • 3D特征提取器分析:

    • 參考FID,已知生成模型的訓(xùn)練集可以和特征提取器不同。但是根據(jù)《video-to-video synthesis》論文里的結(jié)果,使用不同特征提取器的結(jié)果會(huì)不一樣,目前github和谷歌上都搜不到FVD比較官方的實(shí)現(xiàn),不能確定用哪個(gè)特征提取器;
    • BoGAN中沒(méi)有明確指出用的哪個(gè)3D特征提取器,其他幾篇指出用的kinetic-400中訓(xùn)練的3D ConvNet(C3D)。
    • 但是目前同樣沒(méi)有找到kinetics提供的這個(gè)預(yù)訓(xùn)練3D ConvNet,不過(guò)《video-to-video synthesis》中用到的I3D可以找到kinetics-400上預(yù)訓(xùn)練的checkpoint,故我的工作里目前使用I3D。

    代碼: 把特征提取器換掉參考FID的小修改就可以了。

    CLIPSIM ↑\uparrow

    來(lái)源論文:GODIVA
    使用論文:GODIVA、NVWA、make-a-video

    基本思想:
    利用具有zero-shot能力的多模態(tài)模型CLIP輸出文本和圖像相似度,在視頻任務(wù)中使用時(shí)采取每一幀相似度的平均值。

    使用:
    參考這個(gè)工具和CLIP代碼自己改編一下就好,我代碼寫太爛就不放了
    CLIP-as-sevice
    CLIP代碼參考1
    CLIP代碼參考2
    大致思路是用這個(gè)工具獲得valid set的幀編碼&文本編碼,然后可以獲得對(duì)應(yīng)文本圖像對(duì)的相似度,對(duì)每一幀都算,然后取均值。
    (用這個(gè)思路寫的代碼測(cè)試過(guò)make-a-video結(jié)果,跑出來(lái)的數(shù)差不多,但不知道對(duì)不對(duì),也沒(méi)找到官方代碼,如果有不對(duì)歡迎交流)

    Acc ↑\uparrow

    來(lái)源論文:T2V&TFGAN,用于Kinetic數(shù)據(jù)集
    使用論文:T2V、TFGAN、NVWA

    基本思想:相當(dāng)于IS指標(biāo)的變種

    GFLOPs

    參考鏈接:輕量級(jí)神經(jīng)網(wǎng)絡(luò)
    區(qū)分:

    • FLOPS (全部大寫)是floating-point operations per second的縮寫,意指每秒浮點(diǎn)運(yùn)算次數(shù)。用來(lái)衡量硬件的性能。
      常用當(dāng)然還有GFLOPs和TFLOPs
      GFLOPS 就是 Giga Floating-point Operations Per Second,即每秒10億次的浮點(diǎn)運(yùn)算數(shù),常作為GPU性能參數(shù)但不一定代表GPU的實(shí)際表現(xiàn),因?yàn)檫€要考慮具體如何拆分多邊形和像素、以及紋理填充,理論上該數(shù)值越高越好。1GFlops = 1,000MFlops。
    • FLOPs 是floating point of operations的縮寫,是浮點(diǎn)運(yùn)算次數(shù),可以用來(lái)衡量算法/模型復(fù)雜度。

    如何計(jì)算FLOPs
    對(duì)于卷積層而言,FLOPs的計(jì)算公式如下:
    FLOPs=2HW(CinK2+1)CoutFLOPs = 2HW( C_{in}K^2+ 1 )CoutFLOPs=2HW(Cin?K2+1)Cout
    其中的Cin是指卷積層輸入tensor的通道數(shù),Cout指的是卷積層輸出tensor的通道數(shù)。K指的是卷積核大小。
    而后把常數(shù)項(xiàng)去掉,簡(jiǎn)化小操作:

    FLOPs=HW(CinK2)CoutFLOPs = HW( C_{in}K^2 )CoutFLOPs=HW(Cin?K2)Cout

    而在實(shí)際中,我們不可能自己計(jì)算FLOPs,所以,本著能找?guī)炀驼規(guī)斓穆斆鞑拍?#xff0c;查了一下,還真有相關(guān)計(jì)算FLOPs的庫(kù),現(xiàn)查到的有兩個(gè)庫(kù),一個(gè)是torchstat以及thop。經(jīng)過(guò)測(cè)試,基本上兩個(gè)可以對(duì)齊的,所以說(shuō),任意選擇一個(gè)就好。具體用法寫兩個(gè)小demo吧。

    而在實(shí)際中,我們不可能自己計(jì)算FLOPs,所以,本著能找?guī)炀驼規(guī)斓穆斆鞑拍?#xff0c;查了一下,還真有相關(guān)計(jì)算FLOPs的庫(kù),現(xiàn)查到的有兩個(gè)庫(kù),一個(gè)是torchstat以及thop。經(jīng)過(guò)測(cè)試,基本上兩個(gè)可以對(duì)齊的,所以說(shuō),任意選擇一個(gè)就好。具體用法寫兩個(gè)小demo吧。

    對(duì)于torchstat:

    from torchstat import stat import torchvision.models as modelsmodel = model.densenet121() stat(model, (3, 224, 224))

    對(duì)于thop:

    from torchvision.models import densenet121 from thop import profile model = densenet121() input = torch.randn(1, 3, 224, 224) macs, params = profile(model, inputs=(input, ))

    例2

    pip install thop # 安裝thop庫(kù) import torch from thop import profile net = model() # 定義好的網(wǎng)絡(luò)模型 img1 = torch.randn(1, 3, 512, 512) img2 = torch.randn(1, 3, 512, 512) img3 = torch.randn(1, 3, 512, 512) macs, params = profile(net, (img1,img2,img3)) print('flops: ', 2*macs, 'params: ', params)

    為什么不能只用FLOPs作為指標(biāo)呢?
    作者認(rèn)為有如下幾個(gè)原因:
    1)FLOPs沒(méi)有考慮幾個(gè)對(duì)速度有相當(dāng)大影響的重要因素。
    2)計(jì)算平臺(tái)的不同。
    3) FLOPs沒(méi)有考慮幾個(gè)對(duì)速度有相當(dāng)大影響的重要因素:MAC和并行度

    Params

    參考鏈接


    獲取該值:
    例1

    net = model() # 定義好的網(wǎng)絡(luò)模型total = sum([param.nelement() for param in net.parameters()])print("Number of parameter: %.2fM" % total)

    這是網(wǎng)上很常見的直接用自帶方法計(jì)算params,基本不會(huì)出錯(cuò)。勝在簡(jiǎn)潔。

    例2

    #model = 你自己的模型,eg:CNN() ResNet() SegNet()....params = list(model.parameters())k = 0for i in params:l = 1print("該層的結(jié)構(gòu):" + str(list(i.size())))for j in i.size():l *= jprint("該層參數(shù)和:" + str(l))k = k + lprint("總參數(shù)數(shù)量和:" + str(k))

    Runtime

    對(duì)比inference speeds
    這個(gè)值怎么獲取沒(méi)弄懂
    相關(guān)論文里也沒(méi)有講解,待更新…

    總結(jié)

    以上是生活随笔為你收集整理的文本生成视频相关指标整理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。