讓手機跑SOTA模型快8倍!Facebook AI開源最強全棧視頻庫:PyTorchVideo!

極市導(dǎo)讀
時隔一年,F(xiàn)acebook AI攜PyTorchVideo重回視頻理解的戰(zhàn)場。其不僅可以「無縫」接入各類代碼庫,甚至還「略懂」LeCun最愛的自監(jiān)督學習。順便一提,手機也能玩!>>加入極市CV技術(shù)交流群,走在計算機視覺的最前沿
視頻已逐漸超過文字和圖片,可以說成為了現(xiàn)在使用最廣的媒體形式,同時也占據(jù)了用戶更多的瀏覽時間,這就使得視頻理解變得尤為重要。
各大互聯(lián)網(wǎng)公司與頂尖高校紛紛絞盡腦汁,競相研究SOTA的視頻理解模型與算法。
在谷歌,臉書,Open-MM Lab等分別祭出各家殺器之后,臉書人工智能實驗室(Facebook AI)在推出PySlowFast之后時隔一年,攜PyTorchVideo重回戰(zhàn)場。


官方網(wǎng)站: https://pytorchvideo.org/
今天我們就來扒一下,PyTorchVideo究竟是怎樣的一個代碼庫,又如何能在開源當天就躋身于GitHub Trending榜單。

PyTorchVideo哪兒都能用
不同于在座的各位視頻代碼理解框架只醉心于自家框架,無法移步與其他代碼庫。
PyTorchVideo像是torchvision等基礎(chǔ)代碼庫一般,「哪兒都能用」!PyTorchVideo不但可以用在視頻理解任務(wù)中,甚至可以用在其他任務(wù)的代碼庫。
臉書人工智能實驗室的大佬們不但在「自家人」的PySlowFast代碼庫上無縫使用上了PyTorchVideo,并且還在Classy Vision,PyTorch Lightening等等框架上無縫插入。
作為含著金鑰匙出生的PyTorchVideo,其直接成為了PyTorch Lightning-Flash的視頻理解擔當,作為基礎(chǔ)庫被默認使用。
這不,在FiftyOne項目中,開源社區(qū)的吃瓜群眾就利用Lightning-Flash搞出了一個瀏覽視頻的工具箱,可以直接查看視頻的動作類別。

FiftyOne: https://medium.com/pytorch/ushering-in-the-new-age-of-video-understanding-with-pytorch-1d85078e8015
PyTorchVideo啥都能做
更厲害的是,PyTorchVideo似乎「啥都能做」!不但在視頻分類,動作檢測等任務(wù)中深耕SOTA。
甚至還「略懂」LeCun最愛的自監(jiān)督學習,以及音頻事件檢測等等千奇百怪的任務(wù)也不在話下。

基于PyTorchVideo的SlowFast模型進行動作監(jiān)測
PyTorchVideo手機也能玩
更喪心病狂的是,PyTorchVideo一并開源了移動端的加速優(yōu)化,不但提供了手把手的教程,將視頻模型一步步優(yōu)化核心Kernel,量化(quantilize)加速。
數(shù)倍加速后在移動端實時運行,甚至官方直接暴力放出Android和iOS移動端開源代碼,將SOTA的視頻模型直接塞到手機里跑著玩玩。

在三星Galaxy S10手機上運行的PyTorchVideo加速X3D模型,運行速度快8倍,處理一秒視頻大約需要130毫秒
PyTorchVideo是個啥
PyTorchVideo的真身是一個視頻理解的機器學習庫,可以服務(wù)于各種代碼庫,以及各類SOTA視頻模型模型和開源視頻模型。
以及各種視頻基礎(chǔ)算法,視頻數(shù)據(jù)操作,各類流行視頻數(shù)據(jù)集,視頻增廣,視頻模型加速量化,等等一些列的全棧視頻相關(guān)內(nèi)容。
PyTorchVideo怎么玩
首先pip一下。
pip install pytorchvideo然后,在瀏覽官方的教程并上手實驗了一下之后,發(fā)現(xiàn)通過PyTorchVideo只需要寥寥幾行就可以訓練一個視頻模型:
from pytorchvideo import data, models, accelerator# Create visual and acoustic models.visual_model = models.slowfast.create_slowfast(model_num_class=400,acoustic_model = models.resnet.create_acoustic_resnet(model_num_class=400,# Create Kinetics data loader.kinetics_loader = torch.utils.data.DataLoader(data.Kinetics(data_path=DATA_PATH,clip_sampler=data.make_clip_sampler(CLIP_DURATION,),)batch_size=BATCH_SIZE,# Deploy model.visual_net_inst_deploy = accelerator.deployment.\convert_to_deployable_form(net_inst, input_tensor)
那么從開源的訓練模型庫中直接使用模型效果如何?
model = torch.hub.load("facebookresearch/pytorchvideo", model=model_name, pretrained=True)
官方的模型庫太豐富,簡直眼花繚亂。
Kinetics-400
arch | depth | frame length x sample rate | top 1 | Flops (G) x views | Params (M) |
C2D | R50 | 8x8 | 71.46 | 25.89 x 3 x 10 | 24.33 |
I3D | R50 | 8x8 | 73.27 | 37.53 x 3 x 10 | 28.04 |
Slow | R50 | 4x16 | 72.40 | 27.55 x 3 x 10 | 32.45 |
Slow | R50 | 8x8 | 74.58 | 54.52 x 3 x 10 | 32.45 |
SlowFast | R50 | 4x16 | 75.34 | 36.69 x 3 x 10 | 34.48 |
SlowFast | R50 | 8x8 | 76.94 | 65.71 x 3 x 10 | 34.57 |
SlowFast | R101 | 8x8 | 77.90 | 127.20 x 3 x 10 | 62.83 |
SlowFast | R101 | 16x8 | 78.70 | 215.61 x 3 x 10 | 53.77 |
CSN | R101 | 32x2 | 77.00 | 75.62 x 3 x 10 | 22.21 |
R(2+1)D | R50 | 16x4 | 76.01 | 76.45 x 3 x 10 | 28.11 |
X3D | XS | 4x12 | 69.12 | 0.91 x 3 x 10 | 3.79 |
X3D | S | 13x6 | 73.33 | 2.96 x 3 x 10 | 3.79 |
X3D | M | 16x5 | 75.94 | 6.72 x 3 x 10 | 3.79 |
X3D | L | 16x5 | 77.44 | 26.64 x 3 x 10 | 6.15 |
Something-Something V2
arch | depth | pretrain | frame length x sample rate | top 1 | Flops (G) x views | Params (M) |
Slow | R50 | Kinetics 400 | 8x8 | 60.04 | 55.10 x 3 x 1 | 31.96 |
SlowFast | R50 | Kinetics 400 | 8x8 | 61.68 | 66.60 x 3 x 1 | 34.04 |
Charades
arch | depth | pretrain | frame length x sample rate | MAP | Flops (G) x views | Params (M) |
Slow | R50 | Kinetics 400 | 8x8 | 34.72 | 55.10 x 3 x 10 | 31.96 |
SlowFast | R50 | Kinetics 400 | 8x8 | 37.24 | 66.60 x 3 x 10 | 34.00 |
AVA (V2.2)
arch | depth | pretrain | frame length x sample rate | MAP | Params (M) |
Slow | R50 | Kinetics 400 | 4x16 | 19.5 | 31.78 |
SlowFast | R50 | Kinetics 400 | 8x8 | 24.67 | 33.82 |
甚至通過PyTorchVideo加持的 Lightning Flash,分類視頻僅僅只需三行。
from flash import VideoClassifiermodel = VideoClassifier.load_from_checkpoint("checkpoint_uri")model.predict("path_to_video_folder")
據(jù)官方博客透露,PyTorchVideo開源了一大票視頻模型,包括臉書人工智能實驗室近期出現(xiàn)在ICCV,ICML等工作:
Multiscale Vision Transformers
https://arxiv.org/abs/2104.11227
A large-scale study on unsupervised spatiotemporal representation learning
https://arxiv.org/abs/2104.14558
Multiview pseudo-labeling for semi-supervised learning from video
https://arxiv.org/abs/2104.00682
Is space-time attention all you need for video understanding?
https://arxiv.org/abs/2102.05095
Keeping Your Eye on the Ball: Trajectory Attention in Video Transformers
https://arxiv.org/abs/2106.05392
SlowFast networks for video recognition
https://arxiv.org/abs/1812.03982
X3D: Expanding architectures for efficient video recognition
https://arxiv.org/abs/2004.04730
Audiovisual SlowFast networks for video recognition
https://arxiv.org/abs/2001.08740
Non-local neural networks
https://arxiv.org/abs/1711.07971
A closer look at spatiotemporal convolutions for action recognition
https://arxiv.org/abs/1711.11248
Video classification with channel-separated convolutional networks
https://arxiv.org/abs/1904.02811
似乎MultiScale Vision Transform也位列其中,有興趣的朋友可以去一探究竟。
參考資料:
https://pytorchvideo.org/
https://ai.facebook.com/blog/pytorchvideo-a-deep-learning-library-for-video-understanding/
如果覺得有用,就請分享到朋友圈吧!
公眾號后臺回復(fù)“目標檢測綜述”獲取綜述:目標檢測二十年(2001-2021)~

# CV技術(shù)社群邀請函 #
備注:姓名-學校/公司-研究方向-城市(如:小極-北大-目標檢測-深圳)
即可申請加入極市目標檢測/圖像分割/工業(yè)檢測/人臉/醫(yī)學影像/3D/SLAM/自動駕駛/超分辨率/姿態(tài)估計/ReID/GAN/圖像增強/OCR/視頻理解等技術(shù)交流群
每月大咖直播分享、真實項目需求對接、求職內(nèi)推、算法競賽、干貨資訊匯總、與 10000+來自港科大、北大、清華、中科院、CMU、騰訊、百度等名校名企視覺開發(fā)者互動交流~

