HUOXIU

モバイル端末で最先端(SOTA)モデルを8倍高速に実行!Facebook AIが最強のフルスタック動画ライブラリ「PyTorchVideo」をオープンソース化!




    PanChuang AI シェアリング

出典: Facebook AI

編集者:眠いですね


[はじめに] 1年間の休止期間を経て、Facebook AIがPyTorchVideoで動画理解の戦場に帰ってきました。様々なコードライブラリとシームレスに統合できるだけでなく、LeCun氏が得意とする自己教師学習の基本的な理解も備えています。ちなみに、モバイルデバイスでも利用可能です!


ビデオは徐々にテキストや画像を超え、現在最も広く使用されているメディア形式になり、ユーザーの閲覧時間の多くを占めているため、ビデオの理解が特に重要になっています。


大手インターネット企業やトップクラスの大学が知恵を絞って、SOTA ビデオ理解モデルとアルゴリズムの研究に競い合っています。


Google、Facebook、Open-MM Labなどがそれぞれのキラー機能をリリースした後、Facebook AIはPySlowFastをリリースしてから1年後、PyTorchVideoで戦場に戻ってきました。

 

公式サイト: https://pytorchvideo.org/

 

今日は、PyTorchVideo がどのようなコードベースであるか、そしてそれがリリースされたその日にどのようにして GitHub トレンド リストに載ることができたのかについて詳しく説明します。




PyTorchVideo はどこでも使用できます。



ビデオでコードを学ぶときに自分のフレームワークにのみ焦点を当て、他のコードベースを調べることができない多くの皆さんとは異なり、私は同じことができません。


PyTorchVideo は、torchvision などの基礎ライブラリと同様に、「どこでも使用可能」です。PyTorchVideo は、ビデオ理解タスクだけでなく、他のタスクライブラリでも使用できます。


Facebook AI Labs の専門家は、PyTorchVideo を独自の PySlowFast コードベースにシームレスに統合しただけでなく、Classy Vision や PyTorch Lightening などのフレームワークにもシームレスに統合しました。


恵まれた環境で生まれた PyTorchVideo は、直接 PyTorch Lightning-Flash のビデオ理解ツールとなり、デフォルトで基本ライブラリとして使用されました。


たとえば、FiftyOne プロジェクトでは、オープンソース コミュニティのメンバーが Lightning-Flash を使用してビデオを閲覧するためのツールボックスを作成しました。これにより、ユーザーはビデオ内のアクション カテゴリを直接表示できます。


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



PyTorchVideo はほぼ何でもできます。



さらに素晴らしいのは、PyTorchVideo が「何でもできる」ように見えることです。ビデオ分類やモーション検出といった最先端のタスクに優れているだけではありません。


LeCun 氏のお気に入りの自己教師あり学習や、音声イベント検出、その他の奇妙なタスクについても「少し理解」しています。

 

PyTorchVideoのSlowFastモデルに基づくモーション検出



PyTorchVideo は携帯電話でも再生できます。



さらに驚くべきことに、PyTorchVideo はモバイル アクセラレーションの最適化もオープンソース化し、ビデオ モデルのコア カーネルを最適化して量子化を加速するためのステップバイステップのチュートリアルも提供しています。


複数回の高速化を経て、モバイルデバイス上でリアルタイムに動作します。AndroidおよびiOSモバイルデバイス向けの公式ソースコードも直接公開されており、ユーザーはSOTAビデオモデルをスマートフォンで直接実行して楽しむことができます。

 

Samsung Galaxy S10 フォンで実行される PyTorchVideo Accelerated X3D モデルは最大 8 倍高速で、1 秒のビデオを約 130 ミリ秒で処理します。



PyTorchVideo とは何ですか?



PyTorchVideo は、基本的にはビデオ理解のための機械学習ライブラリであり、さまざまなコードベース、さまざまな最先端 (SOTA) ビデオ モデル、オープンソース ビデオ モデルを提供できます。


また、基本的なビデオ アルゴリズム、ビデオ データ操作、一般的なビデオ データセット、ビデオ拡張、ビデオ モデルの高速量子化など、ビデオ関連のさまざまなトピックも取り上げます。




  PyTorchVideoの遊び方



まず、pip を使用します。



 pipでpytorchvideoをインストールする


その後、公式チュートリアルを閲覧して実験してみたところ、PyTorchVideo を使用すると、わずか数行のコードでビデオ モデルをトレーニングできることが分かりました。
























 from pytorchvideo import data, models, accelerate# 視覚モデルと音響モデルを作成します。visual_model = models.slowfast.create_slowfast( model_num_class=400,) acoustic_model = models.resnet.create_acoustic_resnet( model_num_class=400,) # Kinetics データ ローダーを作成します。 kinetics_loader = torch.utils.data.DataLoader( data.Kinetics( data_path=DATA_PATH, clip_sampler=data.make_clip_sampler( "uniform", CLIP_DURATION, ), ) batch_size=BATCH_SIZE,) # モデルをデプロイします。visual_net_inst_deploy = accelerate.deployment.\ convert_to_deployable_form(net_inst, input_tensor) 


では、オープンソースのトレーニング モデル ライブラリからモデルを直接使用することはどれほど効果的でしょうか?

 


モデル = torch.hub.load("facebookresearch/pytorchvideo", model=model_name, pretrained=True) 

 

公式モデルライブラリは非常に広範囲にわたるので、驚かされます。  

 

キネティクス-400


アーチ

深さ

フレーム長 x サンプルレート

トップ1

フロップス(G)×視聴回数

パラメータ(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

遅い

R50

4x16

72.40

27.55 x 3 x 10

32.45

遅い

R50

8x8

74.58

54.52 x 3 x 10

32.45

スローファスト

R50

4x16

75.34

36.69 x 3 x 10

34.48

スローファスト

R50

8x8

76.94

65.71 x 3 x 10

34.57

スローファスト

R101

8x8

77.90

127.20 x 3 x 10

62.83

スローファスト

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×3×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


サムシングサムシングV2

アーチ

深さ

事前トレーニング

フレーム長 x サンプルレート

トップ1

フロップス(G)×視聴回数

パラメータ(M)

遅い

R50

キネティクス400

8x8

60.04

55.10 x 3 x 1

31.96

スローファスト

R50

キネティクス400

8x8

61.68

66.60 x 3 x 1

34.04


ジェスチャーゲーム

アーチ

深さ

事前トレーニング

フレーム長 x サンプルレート

地図

フロップス(G)×視聴回数

パラメータ(M)

遅い

R50

キネティクス400

8x8

34.72

55.10 x 3 x 10

31.96

スローファスト

R50

キネティクス400

8x8

37.24

66.60 x 3 x 10

34.00


アヴァ(V2.2)

アーチ

深さ

事前トレーニング

フレーム長 x サンプルレート

地図

パラメータ(M)

遅い

R50

キネティクス400

4x16

19.5

31.78

スローファスト

R50

キネティクス400

8x8

24.67

33.82


PyTorchVideo 対応の Lightning Flash でも、ビデオの分類に必要なのは 3 行だけです。

 




 flash からインポート VideoClassifier model = VideoClassifier.load_from_checkpoint("checkpoint_uri")model.predict("path_to_video_folder")


公式ブログによると、PyTorchVideo は、ICCV、ICML、その他のカンファレンスで Facebook AI Labs が最近発表したものも含め、多数のビデオモデルをオープンソース化しているという。


  • マルチスケールビジョントランスフォーマー

    https://arxiv.org/abs/2104.11227

  • 教師なし時空間表現学習に関する大規模研究

    https://arxiv.org/abs/2104.14558

  • ビデオからの半教師あり学習のためのマルチビュー疑似ラベリング

    https://arxiv.org/abs/2104.00682

  • ビデオを理解するために必要なのは時空間への注意だけですか?

    https://arxiv.org/abs/2102.05095

  • ボールから目を離さない:ビデオトランスフォーマーにおける軌道への注目

    https://arxiv.org/abs/2106.05392

  • ビデオ認識のためのSlowFastネットワーク

    https://arxiv.org/abs/1812.03982

  • X3D: 効率的なビデオ認識のためのアーキテクチャの拡張

    https://arxiv.org/abs/2004.04730

  • ビデオ認識のためのオーディオビジュアルSlowFastネットワーク

    https://arxiv.org/abs/2001.08740

  • 非局所ニューラルネットワーク

    https://arxiv.org/abs/1711.07971

  • 行動認識のための時空間畳み込みの詳細

    https://arxiv.org/abs/1711.11248

  • チャネル分離畳み込みネットワークによるビデオ分類

    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/