手机跑SOTA模型快8倍 Facebook AI开源超强全栈视频库PyTorchVideo

新闻 人工智能
时隔一年,Facebook AI携PyTorchVideo重回视频理解的战场。其不仅可以「无缝」接入各类代码库,甚至还「略懂」LeCun最爱的自监督学习。

 

 [[409522]]

视频已逐渐超过文字和图片,可以说成为了现在使用最广的媒体形式,同时也占据了用户更多的浏览时间,这就使得视频理解变得尤为重要。

各大互联网公司与顶尖高校纷纷绞尽脑汁,竞相研究SOTA的视频理解模型与算法。

在谷歌,脸书,Open-MM Lab等分别祭出各家杀器之后,脸书人工智能实验室(Facebook AI)在推出PySlowFast之后时隔一年,携PyTorchVideo重回战场。

手机跑SOTA模型快8倍 Facebook AI开源最强全栈视频库PyTorchVideo
[[409524]]

官方网站: https://pytorchvideo.org/

今天我们就来扒一下,PyTorchVideo究竟是怎样的一个代码库,又如何能在开源当天就跻身于GitHub Trending榜单。

手机跑SOTA模型快8倍 Facebook AI开源最强全栈视频库PyTorchVideo

PyTorchVideo哪儿都能用

不同于在座的各位视频代码理解框架只醉心于自家框架,无法移步与其他代码库。

PyTorchVideo像是torchvision等基础代码库一般,「哪儿都能用」!PyTorchVideo不但可以用在视频理解任务中,甚至可以用在其他任务的代码库。

脸书人工智能实验室的大佬们不但在「自家人」的PySlowFast代码库上无缝使用上了PyTorchVideo,并且还在Classy Vision,PyTorch Lightening等等框架上无缝插入。

作为含着金钥匙出生的PyTorchVideo,其直接成为了PyTorch Lightning-Flash的视频理解担当,作为基础库被默认使用。

这不,在FiftyOne项目中,开源社区的吃瓜群众就利用Lightning-Flash搞出了一个浏览视频的工具箱,可以直接查看视频的动作类别。

FiftyOne: https://medium.com/pytorch/ushering-in-the-new-age-of-video-understanding-with-pytorch-1d85078e8015

PyTorchVideo啥都能做

更厉害的是,PyTorchVideo似乎「啥都能做」!不但在视频分类,动作检测等任务中深耕SOTA。

甚至还「略懂」LeCun最爱的自监督学习,以及音频事件检测等等千奇百怪的任务也不在话下。

基于PyTorchVideo的SlowFast模型进行动作监测

PyTorchVideo手机也能玩

更丧心病狂的是,PyTorchVideo一并开源了移动端的加速优化,不但提供了手把手的教程,将视频模型一步步优化核心Kernel,量化(quantilize)加速。

数倍加速后在移动端实时运行,甚至官方直接暴力放出Android和iOS移动端开源代码,将SOTA的视频模型直接塞到手机里跑着玩玩。

在三星Galaxy S10手机上运行的PyTorchVideo加速X3D模型,运行速度快8倍,处理一秒视频大约需要130毫秒

PyTorchVideo是个啥

PyTorchVideo的真身是一个视频理解的机器学习库,可以服务于各种代码库,以及各类SOTA视频模型模型和开源视频模型。

以及各种视频基础算法,视频数据操作,各类流行视频数据集,视频增广,视频模型加速量化,等等一些列的全栈视频相关内容。

PyTorchVideo怎么玩

首先pip一下。

  1. pip install pytorchvideo 

然后,在浏览官方的教程并上手实验了一下之后,发现通过PyTorchVideo只需要寥寥几行就可以训练一个视频模型:

  1. from pytorchvideo import data, models, accelerator 
  2. # Create visual and acoustic models. 
  3. visual_model = models.slowfast.create_slowfast( 
  4.     model_num_class=400
  5. )  
  6. acoustic_model = models.resnet.create_acoustic_resnet( 
  7.     model_num_class=400
  8. )  
  9. # Create Kinetics data loader.  
  10. kinetics_loader = torch.utils.data.DataLoader( 
  11.     data.Kinetics( 
  12.         data_path=DATA_PATH, 
  13.         clip_sampler=data.make_clip_sampler( 
  14.             "uniform",  
  15.             CLIP_DURATION, 
  16.         ), 
  17.     ) 
  18.     batch_size=BATCH_SIZE, 
  19. )  
  20. # Deploy model. 
  21. visual_net_inst_deploy = accelerator.deployment.\  
  22.     convert_to_deployable_form(net_inst, input_tensor) 

那么从开源的训练模型库中直接使用模型效果如何?

  1. 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,分类视频仅仅只需三行。

  1. from flash import VideoClassifier  
  2. model = VideoClassifier.load_from_checkpoint("checkpoint_uri"
  3. model.predict("path_to_video_folder"

据官方博客透露,PyTorchVideo开源了一大票视频模型,包括脸书人工智能实验室近期出现在ICCV,ICML等工作:

  • Multiscale Vision Transformershttps://arxiv.org/abs/2104.11227
  • A large-scale study on unsupervised spatiotemporal representation learninghttps://arxiv.org/abs/2104.14558
  • Multiview pseudo-labeling for semi-supervised learning from videohttps://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 Transformershttps://arxiv.org/abs/2106.05392
  • SlowFast networks for video recognitionhttps://arxiv.org/abs/1812.03982
  • X3D: Expanding architectures for efficient video recognitionhttps://arxiv.org/abs/2004.04730
  • Audiovisual SlowFast networks for video recognitionhttps://arxiv.org/abs/2001.08740
  • Non-local neural networkshttps://arxiv.org/abs/1711.07971
  • A closer look at spatiotemporal convolutions for action recognitionhttps://arxiv.org/abs/1711.11248
  • Video classification with channel-separated convolutional networkshttps://arxiv.org/abs/1904.02811

似乎MultiScale Vision Transform也位列其中,有兴趣的朋友可以去一探究竟。

 

 

责任编辑:张燕妮 来源: 新智元
相关推荐

2020-01-07 14:37:59

代码开发AI

2022-02-25 14:58:51

神经网络芯片AI

2023-07-05 15:26:30

2023-11-20 22:02:54

开源模型

2021-08-30 15:41:23

代码开源微软

2023-06-21 13:20:14

系统模型

2019-06-06 10:19:33

谷歌开源计算库

2023-01-05 13:11:20

模型

2017-11-15 07:20:22

Facebook相似性搜索算法

2021-04-12 17:47:25

Facebook开源AI

2020-09-02 14:13:48

Facebook 开发开源

2024-01-12 19:07:26

GPT-4AI产品

2023-04-07 08:17:39

fasthttp场景设计HTTP

2016-08-01 10:38:14

华为

2024-04-10 09:10:27

Gaudi 3芯片英特尔

2022-12-06 14:11:32

开源模型

2018-10-08 13:31:56

华为AI人工智能

2014-07-30 14:37:00

FacebookiOS开源库

2012-07-10 16:31:56

快牙

2023-11-03 14:37:59

AI 模型开源
点赞
收藏

51CTO技术栈公众号