Buckets:
| import{s as Ce,o as fe,n as ge}from"../chunks/scheduler.9bc65507.js";import{S as Ze,i as ve,g as p,s as t,r as m,A as Ge,h as M,f as a,c as n,j as ue,u as y,x as i,k as va,y as We,a as e,v as c,d as J,t as j,w as o}from"../chunks/index.707bf1b6.js";import{T as Be}from"../chunks/Tip.c2ecdbf4.js";import{C as U}from"../chunks/CodeBlock.54a9f38d.js";import{D as _e}from"../chunks/DocNotebookDropdown.41f65cb5.js";import{H as Ls,E as Ae}from"../chunks/EditOnGithub.922df6ba.js";function ke(Ks){let w,b='このタスクと互換性のあるすべてのアーキテクチャとチェックポイントを確認するには、<a href="https://huggingface.co/tasks/video-classification" rel="nofollow">タスクページ</a> を確認することをお勧めします。';return{c(){w=p("p"),w.innerHTML=b},l(T){w=M(T,"P",{"data-svelte-h":!0}),i(w)!=="svelte-1v5c5i6"&&(w.innerHTML=b)},m(T,qs){e(T,w,qs)},p:ge,d(T){T&&a(w)}}}function Ve(Ks){let w,b,T,qs,I,Ps,u,Os,C,Ga="ビデオ分類は、ビデオ全体にラベルまたはクラスを割り当てるタスクです。ビデオには、各ビデオに 1 つのクラスのみが含まれることが期待されます。ビデオ分類モデルはビデオを入力として受け取り、ビデオがどのクラスに属するかについての予測を返します。これらのモデルを使用して、ビデオの内容を分類できます。ビデオ分類の実際のアプリケーションはアクション/アクティビティ認識であり、フィットネス アプリケーションに役立ちます。また、視覚障害のある人にとって、特に通勤時に役立ちます。",sl,f,Wa="このガイドでは、次の方法を説明します。",ll,g,Ba='<li><a href="https://www.crcv.ucf.edu/" rel="nofollow">UCF101</a> のサブセットで <a href="https://huggingface.co/docs/transformers/main/en/model_doc/videomae" rel="nofollow">VideoMAE</a> を微調整します。 data/UCF101.php) データセット。</li> <li>微調整したモデルを推論に使用します。</li>',al,h,el,Z,_a="始める前に、必要なライブラリがすべてインストールされていることを確認してください。",tl,v,nl,G,Aa='<a href="https://pytorchvideo.org/" rel="nofollow">PyTorchVideo</a> (<code>pytorchvideo</code> と呼ばれます) を使用してビデオを処理し、準備します。',pl,W,ka="モデルをアップロードしてコミュニティと共有できるように、Hugging Face アカウントにログインすることをお勧めします。プロンプトが表示されたら、トークンを入力してログインします。",Ml,B,il,_,ml,A,Va='まず、<a href="https://www.crcv.ucf.edu/data/UCF101.php" rel="nofollow">UCF-101 データセット</a> のサブセットをロードします。これにより、完全なデータセットのトレーニングにさらに時間を費やす前に、実験してすべてが機能することを確認する機会が得られます。',yl,k,cl,V,Ra="サブセットをダウンロードした後、圧縮アーカイブを抽出する必要があります。",Jl,R,jl,x,xa="大まかに言うと、データセットは次のように構成されています。",ol,$,Ul,X,$a="(<code>sorted</code>)された ビデオ パスは次のように表示されます。",wl,F,Tl,z,Xa="同じグループ/シーンに属するビデオ クリップがあり、ビデオ ファイル パスではグループが<code>g</code>で示されていることがわかります。たとえば、<code>v_ApplyEyeMakeup_g07_c04.avi</code>や<code>v_ApplyEyeMakeup_g07_c06.avi</code>などです。",hl,Y,Fa='検証と評価の分割では、<a href="https://www.kaggle.com/code/alexisbcook/data-leakage" rel="nofollow">データ漏洩</a> を防ぐために、同じグループ/シーンからのビデオ クリップを使用しないでください。このチュートリアルで使用しているサブセットでは、この情報が考慮されています。',rl,E,za="次に、データセット内に存在するラベルのセットを取得します。また、モデルを初期化するときに役立つ 2 つの辞書を作成します。",dl,S,Ya="<li><code>label2id</code>: クラス名を整数にマップします。</li> <li><code>id2label</code>: 整数をクラス名にマッピングします。</li>",bl,Q,Il,N,Ea="個性的なクラスが10種類あります。トレーニング セットには、クラスごとに 30 個のビデオがあります。",ul,H,Cl,L,Sa="事前トレーニングされたチェックポイントとそれに関連する画像プロセッサからビデオ分類モデルをインスタンス化します。モデルのエンコーダーには事前トレーニングされたパラメーターが付属しており、分類ヘッドはランダムに初期化されます。画像プロセッサは、データセットの前処理パイプラインを作成するときに役立ちます。",fl,q,gl,D,Qa="モデルのロード中に、次の警告が表示される場合があります。",Zl,K,vl,P,Na="この警告は、一部の重み (たとえば、<code>classifier</code>層の重みとバイアス) を破棄し、他のいくつかの重み (新しい<code>classifier</code>層の重みとバイアス) をランダムに初期化していることを示しています。この場合、これは予想されることです。事前にトレーニングされた重みを持たない新しい頭部を追加しているため、推論に使用する前にこのモデルを微調整する必要があるとライブラリが警告します。これはまさに私たちが行おうとしているものです。する。",Gl,O,Ha='<strong>注意</strong> <a href="https://huggingface.co/MCG-NJU/videomae-base-finetuned-kinetics" rel="nofollow">このチェックポイント</a> は、同様のダウンストリームで微調整されてチェックポイントが取得されたため、このタスクのパフォーマンスが向上することに注意してください。かなりのドメインの重複があるタスク。 <code>MCG-NJU/videomae-base-finetuned-kinetics</code> を微調整して取得した <a href="https://huggingface.co/sayakpaul/videomae-base-finetuned-kinetics-finetuned-ucf101-subset" rel="nofollow">このチェックポイント</a> を確認できます。 -キネティクス`。',Wl,ss,Bl,ls,La='ビデオの前処理には、<a href="https://pytorchvideo.org/" rel="nofollow">PyTorchVideo ライブラリ</a> を利用します。まず、必要な依存関係をインポートします。',_l,as,Al,es,qa='トレーニング データセットの変換には、均一な時間サブサンプリング、ピクセル正規化、ランダム クロッピング、およびランダムな水平反転を組み合わせて使用します。検証および評価のデータセット変換では、ランダムなトリミングと水平反転を除き、同じ変換チェーンを維持します。これらの変換の詳細については、<a href="https://pytorchvideo.org" rel="nofollow">PyTorchVideo の公式ドキュメント</a> を参照してください。',kl,ts,Da="事前トレーニングされたモデルに関連付けられた<code>image_processor</code>を使用して、次の情報を取得します。",Vl,ns,Ka="<li>ビデオ フレームのピクセルが正規化される画像の平均値と標準偏差。</li> <li>ビデオ フレームのサイズが変更される空間解像度。</li>",Rl,ps,Pa="まず、いくつかの定数を定義します。",xl,Ms,$l,is,Oa="次に、データセット固有の変換とデータセットをそれぞれ定義します。トレーニングセットから始めます:",Xl,ms,Fl,ys,se="同じ一連のワークフローを検証セットと評価セットに適用できます。",zl,cs,Yl,Js,le='<strong>注意</strong>: 上記のデータセット パイプラインは、<a href="https://pytorchvideo.org/docs/tutorial_classification#dataset" rel="nofollow">公式 PyTorchVideo サンプル</a> から取得したものです。 <a href="https://pytorchvideo.readthedocs.io/en/latest/api/data/data.html#pytorchvideo.data.Ucf101" rel="nofollow"><code>pytorchvideo.data.Ucf101()</code></a> 関数を使用しています。 UCF-101 データセット。内部では、<a href="https://pytorchvideo.readthedocs.io/en/latest/api/data/data.html#pytorchvideo.data.LabeledVideoDataset" rel="nofollow"><code>pytorchvideo.data.labeled_video_dataset.LabeledVideoDataset</code></a> オブジェクトを返します。 <code>LabeledVideoDataset</code> クラスは、PyTorchVideo データセット内のすべてのビデオの基本クラスです。したがって、PyTorchVideo で既製でサポートされていないカスタム データセットを使用したい場合は、それに応じて <code>LabeledVideoDataset</code> クラスを拡張できます。詳細については、<code>data</code>API <a href="https://pytorchvideo.readthedocs.io/en/latest/api/data/data.html" rel="nofollow">ドキュメント</a>を参照してください。また、データセットが同様の構造 (上に示したもの) に従っている場合は、<code>pytorchvideo.data.Ucf101()</code> を使用すると問題なく動作するはずです。',El,js,ae="<code>num_videos</code> 引数にアクセスすると、データセット内のビデオの数を知ることができます。",Sl,os,Ql,Us,Nl,ws,Hl,r,ee='<img src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/transformers/tasks/sample_gif.gif" alt="Person playing basketball"/>',Ll,Ts,ql,hs,te='🤗 Transformers の <a href="https://huggingface.co/docs/transformers/main_classes/trainer" rel="nofollow"><code>Trainer</code></a> をモデルのトレーニングに利用します。 <code>Trainer</code>をインスタンス化するには、トレーニング構成と評価メトリクスを定義する必要があります。最も重要なのは <a href="https://huggingface.co/transformers/main_classes/trainer.html#transformers.TrainingArguments" rel="nofollow"><code>TrainingArguments</code></a> で、これはトレーニングを構成するためのすべての属性を含むクラスです。モデルのチェックポイントを保存するために使用される出力フォルダー名が必要です。また、🤗 Hub 上のモデル リポジトリ内のすべての情報を同期するのにも役立ちます。',Dl,rs,ne="トレーニング引数のほとんどは一目瞭然ですが、ここで非常に重要なのは<code>remove_unused_columns=False</code>です。これにより、モデルの呼び出し関数で使用されない機能が削除されます。デフォルトでは<code>True</code>です。これは、通常、未使用の特徴列を削除し、モデルの呼び出し関数への入力を解凍しやすくすることが理想的であるためです。ただし、この場合、<code>pixel_values</code> (モデルが入力で期待する必須キーです) を作成するには、未使用の機能 (特に<code>video</code>) が必要です。",Kl,ds,Pl,bs,pe="<code>pytorchvideo.data.Ucf101()</code> によって返されるデータセットは <code>__len__</code> メソッドを実装していません。そのため、<code>TrainingArguments</code>をインスタンス化するときに<code>max_steps</code>を定義する必要があります。",Ol,Is,Me="次に、予測からメトリクスを計算する関数を定義する必要があります。これは、これからロードする<code>metric</code>を使用します。必要な前処理は、予測されたロジットの argmax を取得することだけです。",sa,us,la,Cs,ie="<strong>評価に関する注意事項</strong>:",aa,fs,me='<a href="https://arxiv.org/abs/2203.12602" rel="nofollow">VideoMAE 論文</a> では、著者は次の評価戦略を使用しています。彼らはテスト ビデオからのいくつかのクリップでモデルを評価し、それらのクリップにさまざまなクロップを適用して、合計スコアを報告します。ただし、単純さと簡潔さを保つために、このチュートリアルではそれを考慮しません。',ea,gs,ye="また、サンプルをまとめてバッチ処理するために使用される <code>collate_fn</code> を定義します。各バッチは、<code>pixel_values</code> と <code>labels</code> という 2 つのキーで構成されます。",ta,Zs,na,vs,ce="次に、これらすべてをデータセットとともに<code>Trainer</code>に渡すだけです。",pa,Gs,Ma,Ws,Je="すでにデータを前処理しているのに、なぜトークナイザーとして<code>image_processor</code>を渡したのか不思議に思うかもしれません。これは、イメージ プロセッサ構成ファイル (JSON として保存) もハブ上のリポジトリにアップロードされるようにするためだけです。",ia,Bs,je="次に、<code>train</code> メソッドを呼び出してモデルを微調整します。",ma,_s,ya,As,oe='トレーニングが完了したら、 <a href="/docs/transformers/pr_33686/ja/main_classes/trainer#transformers.Trainer.push_to_hub">push_to_hub()</a> メソッドを使用してモデルをハブに共有し、誰もがモデルを使用できるようにします。',ca,ks,Ja,Vs,ja,Rs,Ue="モデルを微調整したので、それを推論に使用できるようになりました。",oa,xs,we="推論のためにビデオをロードします。",Ua,$s,wa,d,Te='<img src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/transformers/tasks/sample_gif_two.gif" alt="Teams playing basketball"/>',Ta,Xs,he='推論用に微調整されたモデルを試す最も簡単な方法は、それを <a href="https://huggingface.co/docs/transformers/main/en/main_classes/pipelines#transformers.VideoClassificationPipeline" rel="nofollow"><code>pipeline</code></a>. で使用することです。モデルを使用してビデオ分類用の<code>pipeline</code>をインスタンス化し、それにビデオを渡します。',ha,Fs,ra,zs,re="必要に応じて、<code>pipeline</code>の結果を手動で複製することもできます。",da,Ys,ba,Es,de="次に、入力をモデルに渡し、<code>logits </code>を返します。",Ia,Ss,ua,Qs,be="<code>logits</code> をデコードすると、次のようになります。",Ca,Ns,fa,Hs,ga,Ds,Za;return I=new Ls({props:{title:"Video classification",local:"video-classification",headingTag:"h1"}}),u=new _e({props:{classNames:"absolute z-10 right-0 top-0",options:[{label:"Mixed",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/main/transformers_doc/ja/video_classification.ipynb"},{label:"PyTorch",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/main/transformers_doc/ja/pytorch/video_classification.ipynb"},{label:"TensorFlow",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/main/transformers_doc/ja/tensorflow/video_classification.ipynb"},{label:"Mixed",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/main/transformers_doc/ja/video_classification.ipynb"},{label:"PyTorch",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/main/transformers_doc/ja/pytorch/video_classification.ipynb"},{label:"TensorFlow",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/main/transformers_doc/ja/tensorflow/video_classification.ipynb"}]}}),h=new Be({props:{$$slots:{default:[ke]},$$scope:{ctx:Ks}}}),v=new U({props:{code:"cGlwJTIwaW5zdGFsbCUyMC1xJTIwcHl0b3JjaHZpZGVvJTIwdHJhbnNmb3JtZXJzJTIwZXZhbHVhdGU=",highlighted:"pip install -q pytorchvideo transformers evaluate",wrap:!1}}),B=new U({props:{code:"ZnJvbSUyMGh1Z2dpbmdmYWNlX2h1YiUyMGltcG9ydCUyMG5vdGVib29rX2xvZ2luJTBBJTBBbm90ZWJvb2tfbG9naW4oKQ==",highlighted:`<span class="hljs-meta">>>> </span><span class="hljs-keyword">from</span> huggingface_hub <span class="hljs-keyword">import</span> notebook_login | |
| <span class="hljs-meta">>>> </span>notebook_login()`,wrap:!1}}),_=new Ls({props:{title:"Load UCF101 dataset",local:"load-ucf101-dataset",headingTag:"h2"}}),k=new U({props:{code:"ZnJvbSUyMGh1Z2dpbmdmYWNlX2h1YiUyMGltcG9ydCUyMGhmX2h1Yl9kb3dubG9hZCUwQSUwQWhmX2RhdGFzZXRfaWRlbnRpZmllciUyMCUzRCUyMCUyMnNheWFrcGF1bCUyRnVjZjEwMS1zdWJzZXQlMjIlMEFmaWxlbmFtZSUyMCUzRCUyMCUyMlVDRjEwMV9zdWJzZXQudGFyLmd6JTIyJTBBZmlsZV9wYXRoJTIwJTNEJTIwaGZfaHViX2Rvd25sb2FkKHJlcG9faWQlM0RoZl9kYXRhc2V0X2lkZW50aWZpZXIlMkMlMjBmaWxlbmFtZSUzRGZpbGVuYW1lJTJDJTIwcmVwb190eXBlJTNEJTIyZGF0YXNldCUyMik=",highlighted:`<span class="hljs-meta">>>> </span><span class="hljs-keyword">from</span> huggingface_hub <span class="hljs-keyword">import</span> hf_hub_download | |
| <span class="hljs-meta">>>> </span>hf_dataset_identifier = <span class="hljs-string">"sayakpaul/ucf101-subset"</span> | |
| <span class="hljs-meta">>>> </span>filename = <span class="hljs-string">"UCF101_subset.tar.gz"</span> | |
| <span class="hljs-meta">>>> </span>file_path = hf_hub_download(repo_id=hf_dataset_identifier, filename=filename, repo_type=<span class="hljs-string">"dataset"</span>)`,wrap:!1}}),R=new U({props:{code:"aW1wb3J0JTIwdGFyZmlsZSUwQSUwQXdpdGglMjB0YXJmaWxlLm9wZW4oZmlsZV9wYXRoKSUyMGFzJTIwdCUzQSUwQSUyMCUyMCUyMCUyMCUyMHQuZXh0cmFjdGFsbCglMjIuJTIyKQ==",highlighted:`<span class="hljs-meta">>>> </span><span class="hljs-keyword">import</span> tarfile | |
| <span class="hljs-meta">>>> </span><span class="hljs-keyword">with</span> tarfile.<span class="hljs-built_in">open</span>(file_path) <span class="hljs-keyword">as</span> t: | |
| <span class="hljs-meta">... </span> t.extractall(<span class="hljs-string">"."</span>)`,wrap:!1}}),$=new U({props:{code:"VUNGMTAxX3N1YnNldCUyRiUwQSUyMCUyMCUyMCUyMHRyYWluJTJGJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwQmFuZE1hcmNoaW5nJTJGJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwdmlkZW9fMS5tcDQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjB2aWRlb18yLm1wNCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMC4uLiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMEFyY2hlcnklMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjB2aWRlb18xLm1wNCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHZpZGVvXzIubXA0JTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwLi4uJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwLi4uJTBBJTIwJTIwJTIwJTIwdmFsJTJGJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwQmFuZE1hcmNoaW5nJTJGJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwdmlkZW9fMS5tcDQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjB2aWRlb18yLm1wNCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMC4uLiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMEFyY2hlcnklMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjB2aWRlb18xLm1wNCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHZpZGVvXzIubXA0JTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwLi4uJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwLi4uJTBBJTIwJTIwJTIwJTIwdGVzdCUyRiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMEJhbmRNYXJjaGluZyUyRiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHZpZGVvXzEubXA0JTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwdmlkZW9fMi5tcDQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAuLi4lMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBBcmNoZXJ5JTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwdmlkZW9fMS5tcDQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjB2aWRlb18yLm1wNCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMC4uLiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMC4uLg==",highlighted:`UCF101_subset/ | |
| train/ | |
| BandMarching/ | |
| video_1.mp4 | |
| video_2.mp4 | |
| ... | |
| Archery | |
| video_1.mp4 | |
| video_2.mp4 | |
| ... | |
| ... | |
| val/ | |
| BandMarching/ | |
| video_1.mp4 | |
| video_2.mp4 | |
| ... | |
| Archery | |
| video_1.mp4 | |
| video_2.mp4 | |
| ... | |
| ... | |
| <span class="hljs-built_in">test</span>/ | |
| BandMarching/ | |
| video_1.mp4 | |
| video_2.mp4 | |
| ... | |
| Archery | |
| video_1.mp4 | |
| video_2.mp4 | |
| ... | |
| ...`,wrap:!1}}),F=new U({props:{code:"",highlighted:`... | |
| <span class="hljs-string">'UCF101_subset/train/ApplyEyeMakeup/v_ApplyEyeMakeup_g07_c04.avi'</span>, | |
| <span class="hljs-string">'UCF101_subset/train/ApplyEyeMakeup/v_ApplyEyeMakeup_g07_c06.avi'</span>, | |
| <span class="hljs-string">'UCF101_subset/train/ApplyEyeMakeup/v_ApplyEyeMakeup_g08_c01.avi'</span>, | |
| <span class="hljs-string">'UCF101_subset/train/ApplyEyeMakeup/v_ApplyEyeMakeup_g09_c02.avi'</span>, | |
| <span class="hljs-string">'UCF101_subset/train/ApplyEyeMakeup/v_ApplyEyeMakeup_g09_c06.avi'</span> | |
| ...`,wrap:!1}}),Q=new U({props:{code:"Y2xhc3NfbGFiZWxzJTIwJTNEJTIwc29ydGVkKCU3QnN0cihwYXRoKS5zcGxpdCglMjIlMkYlMjIpJTVCMiU1RCUyMGZvciUyMHBhdGglMjBpbiUyMGFsbF92aWRlb19maWxlX3BhdGhzJTdEKSUwQWxhYmVsMmlkJTIwJTNEJTIwJTdCbGFiZWwlM0ElMjBpJTIwZm9yJTIwaSUyQyUyMGxhYmVsJTIwaW4lMjBlbnVtZXJhdGUoY2xhc3NfbGFiZWxzKSU3RCUwQWlkMmxhYmVsJTIwJTNEJTIwJTdCaSUzQSUyMGxhYmVsJTIwZm9yJTIwbGFiZWwlMkMlMjBpJTIwaW4lMjBsYWJlbDJpZC5pdGVtcygpJTdEJTBBJTBBcHJpbnQoZiUyMlVuaXF1ZSUyMGNsYXNzZXMlM0ElMjAlN0JsaXN0KGxhYmVsMmlkLmtleXMoKSklN0QuJTIyKSUwQQ==",highlighted:`<span class="hljs-meta">>>> </span>class_labels = <span class="hljs-built_in">sorted</span>({<span class="hljs-built_in">str</span>(path).split(<span class="hljs-string">"/"</span>)[<span class="hljs-number">2</span>] <span class="hljs-keyword">for</span> path <span class="hljs-keyword">in</span> all_video_file_paths}) | |
| <span class="hljs-meta">>>> </span>label2id = {label: i <span class="hljs-keyword">for</span> i, label <span class="hljs-keyword">in</span> <span class="hljs-built_in">enumerate</span>(class_labels)} | |
| <span class="hljs-meta">>>> </span>id2label = {i: label <span class="hljs-keyword">for</span> label, i <span class="hljs-keyword">in</span> label2id.items()} | |
| <span class="hljs-meta">>>> </span><span class="hljs-built_in">print</span>(<span class="hljs-string">f"Unique classes: <span class="hljs-subst">{<span class="hljs-built_in">list</span>(label2id.keys())}</span>."</span>) | |
| <span class="hljs-comment"># Unique classes: ['ApplyEyeMakeup', 'ApplyLipstick', 'Archery', 'BabyCrawling', 'BalanceBeam', 'BandMarching', 'BaseballPitch', 'Basketball', 'BasketballDunk', 'BenchPress'].</span>`,wrap:!1}}),H=new Ls({props:{title:"Load a model to fine-tune",local:"load-a-model-to-fine-tune",headingTag:"h2"}}),q=new U({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMFZpZGVvTUFFSW1hZ2VQcm9jZXNzb3IlMkMlMjBWaWRlb01BRUZvclZpZGVvQ2xhc3NpZmljYXRpb24lMEElMEFtb2RlbF9ja3B0JTIwJTNEJTIwJTIyTUNHLU5KVSUyRnZpZGVvbWFlLWJhc2UlMjIlMEFpbWFnZV9wcm9jZXNzb3IlMjAlM0QlMjBWaWRlb01BRUltYWdlUHJvY2Vzc29yLmZyb21fcHJldHJhaW5lZChtb2RlbF9ja3B0KSUwQW1vZGVsJTIwJTNEJTIwVmlkZW9NQUVGb3JWaWRlb0NsYXNzaWZpY2F0aW9uLmZyb21fcHJldHJhaW5lZCglMEElMjAlMjAlMjAlMjBtb2RlbF9ja3B0JTJDJTBBJTIwJTIwJTIwJTIwbGFiZWwyaWQlM0RsYWJlbDJpZCUyQyUwQSUyMCUyMCUyMCUyMGlkMmxhYmVsJTNEaWQybGFiZWwlMkMlMEElMjAlMjAlMjAlMjBpZ25vcmVfbWlzbWF0Y2hlZF9zaXplcyUzRFRydWUlMkMlMjAlMjAlMjMlMjBwcm92aWRlJTIwdGhpcyUyMGluJTIwY2FzZSUyMHlvdSdyZSUyMHBsYW5uaW5nJTIwdG8lMjBmaW5lLXR1bmUlMjBhbiUyMGFscmVhZHklMjBmaW5lLXR1bmVkJTIwY2hlY2twb2ludCUwQSk=",highlighted:`<span class="hljs-meta">>>> </span><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> VideoMAEImageProcessor, VideoMAEForVideoClassification | |
| <span class="hljs-meta">>>> </span>model_ckpt = <span class="hljs-string">"MCG-NJU/videomae-base"</span> | |
| <span class="hljs-meta">>>> </span>image_processor = VideoMAEImageProcessor.from_pretrained(model_ckpt) | |
| <span class="hljs-meta">>>> </span>model = VideoMAEForVideoClassification.from_pretrained( | |
| <span class="hljs-meta">... </span> model_ckpt, | |
| <span class="hljs-meta">... </span> label2id=label2id, | |
| <span class="hljs-meta">... </span> id2label=id2label, | |
| <span class="hljs-meta">... </span> ignore_mismatched_sizes=<span class="hljs-literal">True</span>, <span class="hljs-comment"># provide this in case you're planning to fine-tune an already fine-tuned checkpoint</span> | |
| <span class="hljs-meta">... </span>)`,wrap:!1}}),K=new U({props:{code:"U29tZSUyMHdlaWdodHMlMjBvZiUyMHRoZSUyMG1vZGVsJTIwY2hlY2twb2ludCUyMGF0JTIwTUNHLU5KVSUyRnZpZGVvbWFlLWJhc2UlMjB3ZXJlJTIwbm90JTIwdXNlZCUyMHdoZW4lMjBpbml0aWFsaXppbmclMjBWaWRlb01BRUZvclZpZGVvQ2xhc3NpZmljYXRpb24lM0ElMjAlNUIuLi4lMkMlMjAnZGVjb2Rlci5kZWNvZGVyX2xheWVycy4xLmF0dGVudGlvbi5vdXRwdXQuZGVuc2UuYmlhcyclMkMlMjAnZGVjb2Rlci5kZWNvZGVyX2xheWVycy4yLmF0dGVudGlvbi5hdHRlbnRpb24ua2V5LndlaWdodCclNUQlMEEtJTIwVGhpcyUyMElTJTIwZXhwZWN0ZWQlMjBpZiUyMHlvdSUyMGFyZSUyMGluaXRpYWxpemluZyUyMFZpZGVvTUFFRm9yVmlkZW9DbGFzc2lmaWNhdGlvbiUyMGZyb20lMjB0aGUlMjBjaGVja3BvaW50JTIwb2YlMjBhJTIwbW9kZWwlMjB0cmFpbmVkJTIwb24lMjBhbm90aGVyJTIwdGFzayUyMG9yJTIwd2l0aCUyMGFub3RoZXIlMjBhcmNoaXRlY3R1cmUlMjAoZS5nLiUyMGluaXRpYWxpemluZyUyMGElMjBCZXJ0Rm9yU2VxdWVuY2VDbGFzc2lmaWNhdGlvbiUyMG1vZGVsJTIwZnJvbSUyMGElMjBCZXJ0Rm9yUHJlVHJhaW5pbmclMjBtb2RlbCkuJTBBLSUyMFRoaXMlMjBJUyUyME5PVCUyMGV4cGVjdGVkJTIwaWYlMjB5b3UlMjBhcmUlMjBpbml0aWFsaXppbmclMjBWaWRlb01BRUZvclZpZGVvQ2xhc3NpZmljYXRpb24lMjBmcm9tJTIwdGhlJTIwY2hlY2twb2ludCUyMG9mJTIwYSUyMG1vZGVsJTIwdGhhdCUyMHlvdSUyMGV4cGVjdCUyMHRvJTIwYmUlMjBleGFjdGx5JTIwaWRlbnRpY2FsJTIwKGluaXRpYWxpemluZyUyMGElMjBCZXJ0Rm9yU2VxdWVuY2VDbGFzc2lmaWNhdGlvbiUyMG1vZGVsJTIwZnJvbSUyMGElMjBCZXJ0Rm9yU2VxdWVuY2VDbGFzc2lmaWNhdGlvbiUyMG1vZGVsKS4lMEFTb21lJTIwd2VpZ2h0cyUyMG9mJTIwVmlkZW9NQUVGb3JWaWRlb0NsYXNzaWZpY2F0aW9uJTIwd2VyZSUyMG5vdCUyMGluaXRpYWxpemVkJTIwZnJvbSUyMHRoZSUyMG1vZGVsJTIwY2hlY2twb2ludCUyMGF0JTIwTUNHLU5KVSUyRnZpZGVvbWFlLWJhc2UlMjBhbmQlMjBhcmUlMjBuZXdseSUyMGluaXRpYWxpemVkJTNBJTIwJTVCJ2NsYXNzaWZpZXIuYmlhcyclMkMlMjAnY2xhc3NpZmllci53ZWlnaHQnJTVEJTBBWW91JTIwc2hvdWxkJTIwcHJvYmFibHklMjBUUkFJTiUyMHRoaXMlMjBtb2RlbCUyMG9uJTIwYSUyMGRvd24tc3RyZWFtJTIwdGFzayUyMHRvJTIwYmUlMjBhYmxlJTIwdG8lMjB1c2UlMjBpdCUyMGZvciUyMHByZWRpY3Rpb25zJTIwYW5kJTIwaW5mZXJlbmNlLg==",highlighted:`Some weights of the model checkpoint at MCG-NJU/videomae-base were not used when initializing VideoMAEForVideoClassification: [..., <span class="hljs-string">'decoder.decoder_layers.1.attention.output.dense.bias'</span>, <span class="hljs-string">'decoder.decoder_layers.2.attention.attention.key.weight'</span>] | |
| - This IS expected <span class="hljs-keyword">if</span> you are initializing VideoMAEForVideoClassification from the checkpoint of a model trained on another task or with another architecture (e.g. initializing a BertForSequenceClassification model from a BertForPreTraining model). | |
| - This IS NOT expected <span class="hljs-keyword">if</span> you are initializing VideoMAEForVideoClassification from the checkpoint of a model that you expect to be exactly identical (initializing a BertForSequenceClassification model from a BertForSequenceClassification model). | |
| Some weights of VideoMAEForVideoClassification were not initialized from the model checkpoint at MCG-NJU/videomae-base and are newly initialized: [<span class="hljs-string">'classifier.bias'</span>, <span class="hljs-string">'classifier.weight'</span>] | |
| You should probably TRAIN this model on a down-stream task to be able to use it <span class="hljs-keyword">for</span> predictions and inference.`,wrap:!1}}),ss=new Ls({props:{title:"Prepare the datasets for training",local:"prepare-the-datasets-for-training",headingTag:"h2"}}),as=new U({props:{code:"aW1wb3J0JTIwcHl0b3JjaHZpZGVvLmRhdGElMEElMEFmcm9tJTIwcHl0b3JjaHZpZGVvLnRyYW5zZm9ybXMlMjBpbXBvcnQlMjAoJTBBJTIwJTIwJTIwJTIwQXBwbHlUcmFuc2Zvcm1Ub0tleSUyQyUwQSUyMCUyMCUyMCUyME5vcm1hbGl6ZSUyQyUwQSUyMCUyMCUyMCUyMFJhbmRvbVNob3J0U2lkZVNjYWxlJTJDJTBBJTIwJTIwJTIwJTIwUmVtb3ZlS2V5JTJDJTBBJTIwJTIwJTIwJTIwU2hvcnRTaWRlU2NhbGUlMkMlMEElMjAlMjAlMjAlMjBVbmlmb3JtVGVtcG9yYWxTdWJzYW1wbGUlMkMlMEEpJTBBJTBBZnJvbSUyMHRvcmNodmlzaW9uLnRyYW5zZm9ybXMlMjBpbXBvcnQlMjAoJTBBJTIwJTIwJTIwJTIwQ29tcG9zZSUyQyUwQSUyMCUyMCUyMCUyMExhbWJkYSUyQyUwQSUyMCUyMCUyMCUyMFJhbmRvbUNyb3AlMkMlMEElMjAlMjAlMjAlMjBSYW5kb21Ib3Jpem9udGFsRmxpcCUyQyUwQSUyMCUyMCUyMCUyMFJlc2l6ZSUyQyUwQSk=",highlighted:`<span class="hljs-meta">>>> </span><span class="hljs-keyword">import</span> pytorchvideo.data | |
| <span class="hljs-meta">>>> </span><span class="hljs-keyword">from</span> pytorchvideo.transforms <span class="hljs-keyword">import</span> ( | |
| <span class="hljs-meta">... </span> ApplyTransformToKey, | |
| <span class="hljs-meta">... </span> Normalize, | |
| <span class="hljs-meta">... </span> RandomShortSideScale, | |
| <span class="hljs-meta">... </span> RemoveKey, | |
| <span class="hljs-meta">... </span> ShortSideScale, | |
| <span class="hljs-meta">... </span> UniformTemporalSubsample, | |
| <span class="hljs-meta">... </span>) | |
| <span class="hljs-meta">>>> </span><span class="hljs-keyword">from</span> torchvision.transforms <span class="hljs-keyword">import</span> ( | |
| <span class="hljs-meta">... </span> Compose, | |
| <span class="hljs-meta">... </span> Lambda, | |
| <span class="hljs-meta">... </span> RandomCrop, | |
| <span class="hljs-meta">... </span> RandomHorizontalFlip, | |
| <span class="hljs-meta">... </span> Resize, | |
| <span class="hljs-meta">... </span>)`,wrap:!1}}),Ms=new U({props:{code:"bWVhbiUyMCUzRCUyMGltYWdlX3Byb2Nlc3Nvci5pbWFnZV9tZWFuJTBBc3RkJTIwJTNEJTIwaW1hZ2VfcHJvY2Vzc29yLmltYWdlX3N0ZCUwQWlmJTIwJTIyc2hvcnRlc3RfZWRnZSUyMiUyMGluJTIwaW1hZ2VfcHJvY2Vzc29yLnNpemUlM0ElMEElMjAlMjAlMjAlMjBoZWlnaHQlMjAlM0QlMjB3aWR0aCUyMCUzRCUyMGltYWdlX3Byb2Nlc3Nvci5zaXplJTVCJTIyc2hvcnRlc3RfZWRnZSUyMiU1RCUwQWVsc2UlM0ElMEElMjAlMjAlMjAlMjBoZWlnaHQlMjAlM0QlMjBpbWFnZV9wcm9jZXNzb3Iuc2l6ZSU1QiUyMmhlaWdodCUyMiU1RCUwQSUyMCUyMCUyMCUyMHdpZHRoJTIwJTNEJTIwaW1hZ2VfcHJvY2Vzc29yLnNpemUlNUIlMjJ3aWR0aCUyMiU1RCUwQXJlc2l6ZV90byUyMCUzRCUyMChoZWlnaHQlMkMlMjB3aWR0aCklMEElMEFudW1fZnJhbWVzX3RvX3NhbXBsZSUyMCUzRCUyMG1vZGVsLmNvbmZpZy5udW1fZnJhbWVzJTBBc2FtcGxlX3JhdGUlMjAlM0QlMjA0JTBBZnBzJTIwJTNEJTIwMzAlMEFjbGlwX2R1cmF0aW9uJTIwJTNEJTIwbnVtX2ZyYW1lc190b19zYW1wbGUlMjAqJTIwc2FtcGxlX3JhdGUlMjAlMkYlMjBmcHM=",highlighted:`<span class="hljs-meta">>>> </span>mean = image_processor.image_mean | |
| <span class="hljs-meta">>>> </span>std = image_processor.image_std | |
| <span class="hljs-meta">>>> </span><span class="hljs-keyword">if</span> <span class="hljs-string">"shortest_edge"</span> <span class="hljs-keyword">in</span> image_processor.size: | |
| <span class="hljs-meta">... </span> height = width = image_processor.size[<span class="hljs-string">"shortest_edge"</span>] | |
| <span class="hljs-meta">>>> </span><span class="hljs-keyword">else</span>: | |
| <span class="hljs-meta">... </span> height = image_processor.size[<span class="hljs-string">"height"</span>] | |
| <span class="hljs-meta">... </span> width = image_processor.size[<span class="hljs-string">"width"</span>] | |
| <span class="hljs-meta">>>> </span>resize_to = (height, width) | |
| <span class="hljs-meta">>>> </span>num_frames_to_sample = model.config.num_frames | |
| <span class="hljs-meta">>>> </span>sample_rate = <span class="hljs-number">4</span> | |
| <span class="hljs-meta">>>> </span>fps = <span class="hljs-number">30</span> | |
| <span class="hljs-meta">>>> </span>clip_duration = num_frames_to_sample * sample_rate / fps`,wrap:!1}}),ms=new U({props:{code:"dHJhaW5fdHJhbnNmb3JtJTIwJTNEJTIwQ29tcG9zZSglMEElMjAlMjAlMjAlMjAlNUIlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBBcHBseVRyYW5zZm9ybVRvS2V5KCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGtleSUzRCUyMnZpZGVvJTIyJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwdHJhbnNmb3JtJTNEQ29tcG9zZSglMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlNUIlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBVbmlmb3JtVGVtcG9yYWxTdWJzYW1wbGUobnVtX2ZyYW1lc190b19zYW1wbGUpJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwTGFtYmRhKGxhbWJkYSUyMHglM0ElMjB4JTIwJTJGJTIwMjU1LjApJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwTm9ybWFsaXplKG1lYW4lMkMlMjBzdGQpJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwUmFuZG9tU2hvcnRTaWRlU2NhbGUobWluX3NpemUlM0QyNTYlMkMlMjBtYXhfc2l6ZSUzRDMyMCklMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBSYW5kb21Dcm9wKHJlc2l6ZV90byklMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBSYW5kb21Ib3Jpem9udGFsRmxpcChwJTNEMC41KSUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU1RCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCklMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjApJTJDJTBBJTIwJTIwJTIwJTIwJTVEJTBBKSUwQSUwQXRyYWluX2RhdGFzZXQlMjAlM0QlMjBweXRvcmNodmlkZW8uZGF0YS5VY2YxMDEoJTBBJTIwJTIwJTIwJTIwZGF0YV9wYXRoJTNEb3MucGF0aC5qb2luKGRhdGFzZXRfcm9vdF9wYXRoJTJDJTIwJTIydHJhaW4lMjIpJTJDJTBBJTIwJTIwJTIwJTIwY2xpcF9zYW1wbGVyJTNEcHl0b3JjaHZpZGVvLmRhdGEubWFrZV9jbGlwX3NhbXBsZXIoJTIycmFuZG9tJTIyJTJDJTIwY2xpcF9kdXJhdGlvbiklMkMlMEElMjAlMjAlMjAlMjBkZWNvZGVfYXVkaW8lM0RGYWxzZSUyQyUwQSUyMCUyMCUyMCUyMHRyYW5zZm9ybSUzRHRyYWluX3RyYW5zZm9ybSUyQyUwQSk=",highlighted:`<span class="hljs-meta">>>> </span>train_transform = Compose( | |
| <span class="hljs-meta">... </span> [ | |
| <span class="hljs-meta">... </span> ApplyTransformToKey( | |
| <span class="hljs-meta">... </span> key=<span class="hljs-string">"video"</span>, | |
| <span class="hljs-meta">... </span> transform=Compose( | |
| <span class="hljs-meta">... </span> [ | |
| <span class="hljs-meta">... </span> UniformTemporalSubsample(num_frames_to_sample), | |
| <span class="hljs-meta">... </span> Lambda(<span class="hljs-keyword">lambda</span> x: x / <span class="hljs-number">255.0</span>), | |
| <span class="hljs-meta">... </span> Normalize(mean, std), | |
| <span class="hljs-meta">... </span> RandomShortSideScale(min_size=<span class="hljs-number">256</span>, max_size=<span class="hljs-number">320</span>), | |
| <span class="hljs-meta">... </span> RandomCrop(resize_to), | |
| <span class="hljs-meta">... </span> RandomHorizontalFlip(p=<span class="hljs-number">0.5</span>), | |
| <span class="hljs-meta">... </span> ] | |
| <span class="hljs-meta">... </span> ), | |
| <span class="hljs-meta">... </span> ), | |
| <span class="hljs-meta">... </span> ] | |
| <span class="hljs-meta">... </span>) | |
| <span class="hljs-meta">>>> </span>train_dataset = pytorchvideo.data.Ucf101( | |
| <span class="hljs-meta">... </span> data_path=os.path.join(dataset_root_path, <span class="hljs-string">"train"</span>), | |
| <span class="hljs-meta">... </span> clip_sampler=pytorchvideo.data.make_clip_sampler(<span class="hljs-string">"random"</span>, clip_duration), | |
| <span class="hljs-meta">... </span> decode_audio=<span class="hljs-literal">False</span>, | |
| <span class="hljs-meta">... </span> transform=train_transform, | |
| <span class="hljs-meta">... </span>)`,wrap:!1}}),cs=new U({props:{code:"dmFsX3RyYW5zZm9ybSUyMCUzRCUyMENvbXBvc2UoJTBBJTIwJTIwJTIwJTIwJTVCJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwQXBwbHlUcmFuc2Zvcm1Ub0tleSglMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBrZXklM0QlMjJ2aWRlbyUyMiUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHRyYW5zZm9ybSUzRENvbXBvc2UoJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTVCJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwVW5pZm9ybVRlbXBvcmFsU3Vic2FtcGxlKG51bV9mcmFtZXNfdG9fc2FtcGxlKSUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMExhbWJkYShsYW1iZGElMjB4JTNBJTIweCUyMCUyRiUyMDI1NS4wKSUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyME5vcm1hbGl6ZShtZWFuJTJDJTIwc3RkKSUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMFJlc2l6ZShyZXNpemVfdG8pJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTVEJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwKSUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCklMkMlMEElMjAlMjAlMjAlMjAlNUQlMEEpJTBBJTBBdmFsX2RhdGFzZXQlMjAlM0QlMjBweXRvcmNodmlkZW8uZGF0YS5VY2YxMDEoJTBBJTIwJTIwJTIwJTIwZGF0YV9wYXRoJTNEb3MucGF0aC5qb2luKGRhdGFzZXRfcm9vdF9wYXRoJTJDJTIwJTIydmFsJTIyKSUyQyUwQSUyMCUyMCUyMCUyMGNsaXBfc2FtcGxlciUzRHB5dG9yY2h2aWRlby5kYXRhLm1ha2VfY2xpcF9zYW1wbGVyKCUyMnVuaWZvcm0lMjIlMkMlMjBjbGlwX2R1cmF0aW9uKSUyQyUwQSUyMCUyMCUyMCUyMGRlY29kZV9hdWRpbyUzREZhbHNlJTJDJTBBJTIwJTIwJTIwJTIwdHJhbnNmb3JtJTNEdmFsX3RyYW5zZm9ybSUyQyUwQSklMEElMEF0ZXN0X2RhdGFzZXQlMjAlM0QlMjBweXRvcmNodmlkZW8uZGF0YS5VY2YxMDEoJTBBJTIwJTIwJTIwJTIwZGF0YV9wYXRoJTNEb3MucGF0aC5qb2luKGRhdGFzZXRfcm9vdF9wYXRoJTJDJTIwJTIydGVzdCUyMiklMkMlMEElMjAlMjAlMjAlMjBjbGlwX3NhbXBsZXIlM0RweXRvcmNodmlkZW8uZGF0YS5tYWtlX2NsaXBfc2FtcGxlciglMjJ1bmlmb3JtJTIyJTJDJTIwY2xpcF9kdXJhdGlvbiklMkMlMEElMjAlMjAlMjAlMjBkZWNvZGVfYXVkaW8lM0RGYWxzZSUyQyUwQSUyMCUyMCUyMCUyMHRyYW5zZm9ybSUzRHZhbF90cmFuc2Zvcm0lMkMlMEEp",highlighted:`<span class="hljs-meta">>>> </span>val_transform = Compose( | |
| <span class="hljs-meta">... </span> [ | |
| <span class="hljs-meta">... </span> ApplyTransformToKey( | |
| <span class="hljs-meta">... </span> key=<span class="hljs-string">"video"</span>, | |
| <span class="hljs-meta">... </span> transform=Compose( | |
| <span class="hljs-meta">... </span> [ | |
| <span class="hljs-meta">... </span> UniformTemporalSubsample(num_frames_to_sample), | |
| <span class="hljs-meta">... </span> Lambda(<span class="hljs-keyword">lambda</span> x: x / <span class="hljs-number">255.0</span>), | |
| <span class="hljs-meta">... </span> Normalize(mean, std), | |
| <span class="hljs-meta">... </span> Resize(resize_to), | |
| <span class="hljs-meta">... </span> ] | |
| <span class="hljs-meta">... </span> ), | |
| <span class="hljs-meta">... </span> ), | |
| <span class="hljs-meta">... </span> ] | |
| <span class="hljs-meta">... </span>) | |
| <span class="hljs-meta">>>> </span>val_dataset = pytorchvideo.data.Ucf101( | |
| <span class="hljs-meta">... </span> data_path=os.path.join(dataset_root_path, <span class="hljs-string">"val"</span>), | |
| <span class="hljs-meta">... </span> clip_sampler=pytorchvideo.data.make_clip_sampler(<span class="hljs-string">"uniform"</span>, clip_duration), | |
| <span class="hljs-meta">... </span> decode_audio=<span class="hljs-literal">False</span>, | |
| <span class="hljs-meta">... </span> transform=val_transform, | |
| <span class="hljs-meta">... </span>) | |
| <span class="hljs-meta">>>> </span>test_dataset = pytorchvideo.data.Ucf101( | |
| <span class="hljs-meta">... </span> data_path=os.path.join(dataset_root_path, <span class="hljs-string">"test"</span>), | |
| <span class="hljs-meta">... </span> clip_sampler=pytorchvideo.data.make_clip_sampler(<span class="hljs-string">"uniform"</span>, clip_duration), | |
| <span class="hljs-meta">... </span> decode_audio=<span class="hljs-literal">False</span>, | |
| <span class="hljs-meta">... </span> transform=val_transform, | |
| <span class="hljs-meta">... </span>)`,wrap:!1}}),os=new U({props:{code:"cHJpbnQodHJhaW5fZGF0YXNldC5udW1fdmlkZW9zJTJDJTIwdmFsX2RhdGFzZXQubnVtX3ZpZGVvcyUyQyUyMHRlc3RfZGF0YXNldC5udW1fdmlkZW9zKQ==",highlighted:`<span class="hljs-meta">>>> </span><span class="hljs-built_in">print</span>(train_dataset.num_videos, val_dataset.num_videos, test_dataset.num_videos) | |
| <span class="hljs-comment"># (300, 30, 75)</span>`,wrap:!1}}),Us=new Ls({props:{title:"Visualize the preprocessed video for better debugging",local:"visualize-the-preprocessed-video-for-better-debugging",headingTag:"h2"}}),ws=new U({props:{code:"aW1wb3J0JTIwaW1hZ2VpbyUwQWltcG9ydCUyMG51bXB5JTIwYXMlMjBucCUwQWZyb20lMjBJUHl0aG9uLmRpc3BsYXklMjBpbXBvcnQlMjBJbWFnZSUwQSUwQWRlZiUyMHVubm9ybWFsaXplX2ltZyhpbWcpJTNBJTBBJTIwJTIwJTIwJTIwJTIyJTIyJTIyVW4tbm9ybWFsaXplcyUyMHRoZSUyMGltYWdlJTIwcGl4ZWxzLiUyMiUyMiUyMiUwQSUyMCUyMCUyMCUyMGltZyUyMCUzRCUyMChpbWclMjAqJTIwc3RkKSUyMCUyQiUyMG1lYW4lMEElMjAlMjAlMjAlMjBpbWclMjAlM0QlMjAoaW1nJTIwKiUyMDI1NSkuYXN0eXBlKCUyMnVpbnQ4JTIyKSUwQSUyMCUyMCUyMCUyMHJldHVybiUyMGltZy5jbGlwKDAlMkMlMjAyNTUpJTBBJTBBZGVmJTIwY3JlYXRlX2dpZih2aWRlb190ZW5zb3IlMkMlMjBmaWxlbmFtZSUzRCUyMnNhbXBsZS5naWYlMjIpJTNBJTBBJTIwJTIwJTIwJTIwJTIyJTIyJTIyUHJlcGFyZXMlMjBhJTIwR0lGJTIwZnJvbSUyMGElMjB2aWRlbyUyMHRlbnNvci4lMEElMjAlMjAlMjAlMjAlMEElMjAlMjAlMjAlMjBUaGUlMjB2aWRlbyUyMHRlbnNvciUyMGlzJTIwZXhwZWN0ZWQlMjB0byUyMGhhdmUlMjB0aGUlMjBmb2xsb3dpbmclMjBzaGFwZSUzQSUwQSUyMCUyMCUyMCUyMChudW1fZnJhbWVzJTJDJTIwbnVtX2NoYW5uZWxzJTJDJTIwaGVpZ2h0JTJDJTIwd2lkdGgpLiUwQSUyMCUyMCUyMCUyMCUyMiUyMiUyMiUwQSUyMCUyMCUyMCUyMGZyYW1lcyUyMCUzRCUyMCU1QiU1RCUwQSUyMCUyMCUyMCUyMGZvciUyMHZpZGVvX2ZyYW1lJTIwaW4lMjB2aWRlb190ZW5zb3IlM0ElMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBmcmFtZV91bm5vcm1hbGl6ZWQlMjAlM0QlMjB1bm5vcm1hbGl6ZV9pbWcodmlkZW9fZnJhbWUucGVybXV0ZSgxJTJDJTIwMiUyQyUyMDApLm51bXB5KCkpJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwZnJhbWVzLmFwcGVuZChmcmFtZV91bm5vcm1hbGl6ZWQpJTBBJTIwJTIwJTIwJTIwa2FyZ3MlMjAlM0QlMjAlN0IlMjJkdXJhdGlvbiUyMiUzQSUyMDAuMjUlN0QlMEElMjAlMjAlMjAlMjBpbWFnZWlvLm1pbXNhdmUoZmlsZW5hbWUlMkMlMjBmcmFtZXMlMkMlMjAlMjJHSUYlMjIlMkMlMjAqKmthcmdzKSUwQSUyMCUyMCUyMCUyMHJldHVybiUyMGZpbGVuYW1lJTBBJTBBZGVmJTIwZGlzcGxheV9naWYodmlkZW9fdGVuc29yJTJDJTIwZ2lmX25hbWUlM0QlMjJzYW1wbGUuZ2lmJTIyKSUzQSUwQSUyMCUyMCUyMCUyMCUyMiUyMiUyMlByZXBhcmVzJTIwYW5kJTIwZGlzcGxheXMlMjBhJTIwR0lGJTIwZnJvbSUyMGElMjB2aWRlbyUyMHRlbnNvci4lMjIlMjIlMjIlMEElMjAlMjAlMjAlMjB2aWRlb190ZW5zb3IlMjAlM0QlMjB2aWRlb190ZW5zb3IucGVybXV0ZSgxJTJDJTIwMCUyQyUyMDIlMkMlMjAzKSUwQSUyMCUyMCUyMCUyMGdpZl9maWxlbmFtZSUyMCUzRCUyMGNyZWF0ZV9naWYodmlkZW9fdGVuc29yJTJDJTIwZ2lmX25hbWUpJTBBJTIwJTIwJTIwJTIwcmV0dXJuJTIwSW1hZ2UoZmlsZW5hbWUlM0RnaWZfZmlsZW5hbWUpJTBBJTBBc2FtcGxlX3ZpZGVvJTIwJTNEJTIwbmV4dChpdGVyKHRyYWluX2RhdGFzZXQpKSUwQXZpZGVvX3RlbnNvciUyMCUzRCUyMHNhbXBsZV92aWRlbyU1QiUyMnZpZGVvJTIyJTVEJTBBZGlzcGxheV9naWYodmlkZW9fdGVuc29yKQ==",highlighted:`<span class="hljs-meta">>>> </span><span class="hljs-keyword">import</span> imageio | |
| <span class="hljs-meta">>>> </span><span class="hljs-keyword">import</span> numpy <span class="hljs-keyword">as</span> np | |
| <span class="hljs-meta">>>> </span><span class="hljs-keyword">from</span> IPython.display <span class="hljs-keyword">import</span> Image | |
| <span class="hljs-meta">>>> </span><span class="hljs-keyword">def</span> <span class="hljs-title function_">unnormalize_img</span>(<span class="hljs-params">img</span>): | |
| <span class="hljs-meta">... </span> <span class="hljs-string">"""Un-normalizes the image pixels."""</span> | |
| <span class="hljs-meta">... </span> img = (img * std) + mean | |
| <span class="hljs-meta">... </span> img = (img * <span class="hljs-number">255</span>).astype(<span class="hljs-string">"uint8"</span>) | |
| <span class="hljs-meta">... </span> <span class="hljs-keyword">return</span> img.clip(<span class="hljs-number">0</span>, <span class="hljs-number">255</span>) | |
| <span class="hljs-meta">>>> </span><span class="hljs-keyword">def</span> <span class="hljs-title function_">create_gif</span>(<span class="hljs-params">video_tensor, filename=<span class="hljs-string">"sample.gif"</span></span>): | |
| <span class="hljs-meta">... </span> <span class="hljs-string">"""Prepares a GIF from a video tensor. | |
| <span class="hljs-meta">... </span> | |
| <span class="hljs-meta">... </span> The video tensor is expected to have the following shape: | |
| <span class="hljs-meta">... </span> (num_frames, num_channels, height, width). | |
| <span class="hljs-meta">... </span> """</span> | |
| <span class="hljs-meta">... </span> frames = [] | |
| <span class="hljs-meta">... </span> <span class="hljs-keyword">for</span> video_frame <span class="hljs-keyword">in</span> video_tensor: | |
| <span class="hljs-meta">... </span> frame_unnormalized = unnormalize_img(video_frame.permute(<span class="hljs-number">1</span>, <span class="hljs-number">2</span>, <span class="hljs-number">0</span>).numpy()) | |
| <span class="hljs-meta">... </span> frames.append(frame_unnormalized) | |
| <span class="hljs-meta">... </span> kargs = {<span class="hljs-string">"duration"</span>: <span class="hljs-number">0.25</span>} | |
| <span class="hljs-meta">... </span> imageio.mimsave(filename, frames, <span class="hljs-string">"GIF"</span>, **kargs) | |
| <span class="hljs-meta">... </span> <span class="hljs-keyword">return</span> filename | |
| <span class="hljs-meta">>>> </span><span class="hljs-keyword">def</span> <span class="hljs-title function_">display_gif</span>(<span class="hljs-params">video_tensor, gif_name=<span class="hljs-string">"sample.gif"</span></span>): | |
| <span class="hljs-meta">... </span> <span class="hljs-string">"""Prepares and displays a GIF from a video tensor."""</span> | |
| <span class="hljs-meta">... </span> video_tensor = video_tensor.permute(<span class="hljs-number">1</span>, <span class="hljs-number">0</span>, <span class="hljs-number">2</span>, <span class="hljs-number">3</span>) | |
| <span class="hljs-meta">... </span> gif_filename = create_gif(video_tensor, gif_name) | |
| <span class="hljs-meta">... </span> <span class="hljs-keyword">return</span> Image(filename=gif_filename) | |
| <span class="hljs-meta">>>> </span>sample_video = <span class="hljs-built_in">next</span>(<span class="hljs-built_in">iter</span>(train_dataset)) | |
| <span class="hljs-meta">>>> </span>video_tensor = sample_video[<span class="hljs-string">"video"</span>] | |
| <span class="hljs-meta">>>> </span>display_gif(video_tensor)`,wrap:!1}}),Ts=new Ls({props:{title:"Train the model",local:"train-the-model",headingTag:"h2"}}),ds=new U({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMFRyYWluaW5nQXJndW1lbnRzJTJDJTIwVHJhaW5lciUwQSUwQW1vZGVsX25hbWUlMjAlM0QlMjBtb2RlbF9ja3B0LnNwbGl0KCUyMiUyRiUyMiklNUItMSU1RCUwQW5ld19tb2RlbF9uYW1lJTIwJTNEJTIwZiUyMiU3Qm1vZGVsX25hbWUlN0QtZmluZXR1bmVkLXVjZjEwMS1zdWJzZXQlMjIlMEFudW1fZXBvY2hzJTIwJTNEJTIwNCUwQSUwQWFyZ3MlMjAlM0QlMjBUcmFpbmluZ0FyZ3VtZW50cyglMEElMjAlMjAlMjAlMjBuZXdfbW9kZWxfbmFtZSUyQyUwQSUyMCUyMCUyMCUyMHJlbW92ZV91bnVzZWRfY29sdW1ucyUzREZhbHNlJTJDJTBBJTIwJTIwJTIwJTIwZXZhbF9zdHJhdGVneSUzRCUyMmVwb2NoJTIyJTJDJTBBJTIwJTIwJTIwJTIwc2F2ZV9zdHJhdGVneSUzRCUyMmVwb2NoJTIyJTJDJTBBJTIwJTIwJTIwJTIwbGVhcm5pbmdfcmF0ZSUzRDVlLTUlMkMlMEElMjAlMjAlMjAlMjBwZXJfZGV2aWNlX3RyYWluX2JhdGNoX3NpemUlM0RiYXRjaF9zaXplJTJDJTBBJTIwJTIwJTIwJTIwcGVyX2RldmljZV9ldmFsX2JhdGNoX3NpemUlM0RiYXRjaF9zaXplJTJDJTBBJTIwJTIwJTIwJTIwd2FybXVwX3JhdGlvJTNEMC4xJTJDJTBBJTIwJTIwJTIwJTIwbG9nZ2luZ19zdGVwcyUzRDEwJTJDJTBBJTIwJTIwJTIwJTIwbG9hZF9iZXN0X21vZGVsX2F0X2VuZCUzRFRydWUlMkMlMEElMjAlMjAlMjAlMjBtZXRyaWNfZm9yX2Jlc3RfbW9kZWwlM0QlMjJhY2N1cmFjeSUyMiUyQyUwQSUyMCUyMCUyMCUyMHB1c2hfdG9faHViJTNEVHJ1ZSUyQyUwQSUyMCUyMCUyMCUyMG1heF9zdGVwcyUzRCh0cmFpbl9kYXRhc2V0Lm51bV92aWRlb3MlMjAlMkYlMkYlMjBiYXRjaF9zaXplKSUyMColMjBudW1fZXBvY2hzJTJDJTBBKQ==",highlighted:`<span class="hljs-meta">>>> </span><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> TrainingArguments, Trainer | |
| <span class="hljs-meta">>>> </span>model_name = model_ckpt.split(<span class="hljs-string">"/"</span>)[-<span class="hljs-number">1</span>] | |
| <span class="hljs-meta">>>> </span>new_model_name = <span class="hljs-string">f"<span class="hljs-subst">{model_name}</span>-finetuned-ucf101-subset"</span> | |
| <span class="hljs-meta">>>> </span>num_epochs = <span class="hljs-number">4</span> | |
| <span class="hljs-meta">>>> </span>args = TrainingArguments( | |
| <span class="hljs-meta">... </span> new_model_name, | |
| <span class="hljs-meta">... </span> remove_unused_columns=<span class="hljs-literal">False</span>, | |
| <span class="hljs-meta">... </span> eval_strategy=<span class="hljs-string">"epoch"</span>, | |
| <span class="hljs-meta">... </span> save_strategy=<span class="hljs-string">"epoch"</span>, | |
| <span class="hljs-meta">... </span> learning_rate=<span class="hljs-number">5e-5</span>, | |
| <span class="hljs-meta">... </span> per_device_train_batch_size=batch_size, | |
| <span class="hljs-meta">... </span> per_device_eval_batch_size=batch_size, | |
| <span class="hljs-meta">... </span> warmup_ratio=<span class="hljs-number">0.1</span>, | |
| <span class="hljs-meta">... </span> logging_steps=<span class="hljs-number">10</span>, | |
| <span class="hljs-meta">... </span> load_best_model_at_end=<span class="hljs-literal">True</span>, | |
| <span class="hljs-meta">... </span> metric_for_best_model=<span class="hljs-string">"accuracy"</span>, | |
| <span class="hljs-meta">... </span> push_to_hub=<span class="hljs-literal">True</span>, | |
| <span class="hljs-meta">... </span> max_steps=(train_dataset.num_videos // batch_size) * num_epochs, | |
| <span class="hljs-meta">... </span>)`,wrap:!1}}),us=new U({props:{code:"aW1wb3J0JTIwZXZhbHVhdGUlMEElMEFtZXRyaWMlMjAlM0QlMjBldmFsdWF0ZS5sb2FkKCUyMmFjY3VyYWN5JTIyKSUwQSUwQSUwQWRlZiUyMGNvbXB1dGVfbWV0cmljcyhldmFsX3ByZWQpJTNBJTBBJTIwJTIwJTIwJTIwcHJlZGljdGlvbnMlMjAlM0QlMjBucC5hcmdtYXgoZXZhbF9wcmVkLnByZWRpY3Rpb25zJTJDJTIwYXhpcyUzRDEpJTBBJTIwJTIwJTIwJTIwcmV0dXJuJTIwbWV0cmljLmNvbXB1dGUocHJlZGljdGlvbnMlM0RwcmVkaWN0aW9ucyUyQyUyMHJlZmVyZW5jZXMlM0RldmFsX3ByZWQubGFiZWxfaWRzKQ==",highlighted:`<span class="hljs-keyword">import</span> evaluate | |
| metric = evaluate.load(<span class="hljs-string">"accuracy"</span>) | |
| <span class="hljs-keyword">def</span> <span class="hljs-title function_">compute_metrics</span>(<span class="hljs-params">eval_pred</span>): | |
| predictions = np.argmax(eval_pred.predictions, axis=<span class="hljs-number">1</span>) | |
| <span class="hljs-keyword">return</span> metric.compute(predictions=predictions, references=eval_pred.label_ids)`,wrap:!1}}),Zs=new U({props:{code:"ZGVmJTIwY29sbGF0ZV9mbihleGFtcGxlcyklM0ElMEElMjAlMjAlMjAlMjAlMjMlMjBwZXJtdXRlJTIwdG8lMjAobnVtX2ZyYW1lcyUyQyUyMG51bV9jaGFubmVscyUyQyUyMGhlaWdodCUyQyUyMHdpZHRoKSUwQSUyMCUyMCUyMCUyMHBpeGVsX3ZhbHVlcyUyMCUzRCUyMHRvcmNoLnN0YWNrKCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU1QmV4YW1wbGUlNUIlMjJ2aWRlbyUyMiU1RC5wZXJtdXRlKDElMkMlMjAwJTJDJTIwMiUyQyUyMDMpJTIwZm9yJTIwZXhhbXBsZSUyMGluJTIwZXhhbXBsZXMlNUQlMEElMjAlMjAlMjAlMjApJTBBJTIwJTIwJTIwJTIwbGFiZWxzJTIwJTNEJTIwdG9yY2gudGVuc29yKCU1QmV4YW1wbGUlNUIlMjJsYWJlbCUyMiU1RCUyMGZvciUyMGV4YW1wbGUlMjBpbiUyMGV4YW1wbGVzJTVEKSUwQSUyMCUyMCUyMCUyMHJldHVybiUyMCU3QiUyMnBpeGVsX3ZhbHVlcyUyMiUzQSUyMHBpeGVsX3ZhbHVlcyUyQyUyMCUyMmxhYmVscyUyMiUzQSUyMGxhYmVscyU3RA==",highlighted:`<span class="hljs-meta">>>> </span><span class="hljs-keyword">def</span> <span class="hljs-title function_">collate_fn</span>(<span class="hljs-params">examples</span>): | |
| <span class="hljs-meta">... </span> <span class="hljs-comment"># permute to (num_frames, num_channels, height, width)</span> | |
| <span class="hljs-meta">... </span> pixel_values = torch.stack( | |
| <span class="hljs-meta">... </span> [example[<span class="hljs-string">"video"</span>].permute(<span class="hljs-number">1</span>, <span class="hljs-number">0</span>, <span class="hljs-number">2</span>, <span class="hljs-number">3</span>) <span class="hljs-keyword">for</span> example <span class="hljs-keyword">in</span> examples] | |
| <span class="hljs-meta">... </span> ) | |
| <span class="hljs-meta">... </span> labels = torch.tensor([example[<span class="hljs-string">"label"</span>] <span class="hljs-keyword">for</span> example <span class="hljs-keyword">in</span> examples]) | |
| <span class="hljs-meta">... </span> <span class="hljs-keyword">return</span> {<span class="hljs-string">"pixel_values"</span>: pixel_values, <span class="hljs-string">"labels"</span>: labels}`,wrap:!1}}),Gs=new U({props:{code:"dHJhaW5lciUyMCUzRCUyMFRyYWluZXIoJTBBJTIwJTIwJTIwJTIwbW9kZWwlMkMlMEElMjAlMjAlMjAlMjBhcmdzJTJDJTBBJTIwJTIwJTIwJTIwdHJhaW5fZGF0YXNldCUzRHRyYWluX2RhdGFzZXQlMkMlMEElMjAlMjAlMjAlMjBldmFsX2RhdGFzZXQlM0R2YWxfZGF0YXNldCUyQyUwQSUyMCUyMCUyMCUyMHRva2VuaXplciUzRGltYWdlX3Byb2Nlc3NvciUyQyUwQSUyMCUyMCUyMCUyMGNvbXB1dGVfbWV0cmljcyUzRGNvbXB1dGVfbWV0cmljcyUyQyUwQSUyMCUyMCUyMCUyMGRhdGFfY29sbGF0b3IlM0Rjb2xsYXRlX2ZuJTJDJTBBKQ==",highlighted:`<span class="hljs-meta">>>> </span>trainer = Trainer( | |
| <span class="hljs-meta">... </span> model, | |
| <span class="hljs-meta">... </span> args, | |
| <span class="hljs-meta">... </span> train_dataset=train_dataset, | |
| <span class="hljs-meta">... </span> eval_dataset=val_dataset, | |
| <span class="hljs-meta">... </span> tokenizer=image_processor, | |
| <span class="hljs-meta">... </span> compute_metrics=compute_metrics, | |
| <span class="hljs-meta">... </span> data_collator=collate_fn, | |
| <span class="hljs-meta">... </span>)`,wrap:!1}}),_s=new U({props:{code:"dHJhaW5fcmVzdWx0cyUyMCUzRCUyMHRyYWluZXIudHJhaW4oKQ==",highlighted:'<span class="hljs-meta">>>> </span>train_results = trainer.train()',wrap:!1}}),ks=new U({props:{code:"dHJhaW5lci5wdXNoX3RvX2h1Yigp",highlighted:'<span class="hljs-meta">>>> </span>trainer.push_to_hub()',wrap:!1}}),Vs=new Ls({props:{title:"Inference",local:"inference",headingTag:"h2"}}),$s=new U({props:{code:"c2FtcGxlX3Rlc3RfdmlkZW8lMjAlM0QlMjBuZXh0KGl0ZXIodGVzdF9kYXRhc2V0KSk=",highlighted:'<span class="hljs-meta">>>> </span>sample_test_video = <span class="hljs-built_in">next</span>(<span class="hljs-built_in">iter</span>(test_dataset))',wrap:!1}}),Fs=new U({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMHBpcGVsaW5lJTBBJTBBdmlkZW9fY2xzJTIwJTNEJTIwcGlwZWxpbmUobW9kZWwlM0QlMjJteV9hd2Vzb21lX3ZpZGVvX2Nsc19tb2RlbCUyMiklMEF2aWRlb19jbHMoJTIyaHR0cHMlM0ElMkYlMkZodWdnaW5nZmFjZS5jbyUyRmRhdGFzZXRzJTJGc2F5YWtwYXVsJTJGdWNmMTAxLXN1YnNldCUyRnJlc29sdmUlMkZtYWluJTJGdl9CYXNrZXRiYWxsRHVua19nMTRfYzA2LmF2aSUyMik=",highlighted:`<span class="hljs-meta">>>> </span><span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> pipeline | |
| <span class="hljs-meta">>>> </span>video_cls = pipeline(model=<span class="hljs-string">"my_awesome_video_cls_model"</span>) | |
| <span class="hljs-meta">>>> </span>video_cls(<span class="hljs-string">"https://huggingface.co/datasets/sayakpaul/ucf101-subset/resolve/main/v_BasketballDunk_g14_c06.avi"</span>) | |
| [{<span class="hljs-string">'score'</span>: <span class="hljs-number">0.9272987842559814</span>, <span class="hljs-string">'label'</span>: <span class="hljs-string">'BasketballDunk'</span>}, | |
| {<span class="hljs-string">'score'</span>: <span class="hljs-number">0.017777055501937866</span>, <span class="hljs-string">'label'</span>: <span class="hljs-string">'BabyCrawling'</span>}, | |
| {<span class="hljs-string">'score'</span>: <span class="hljs-number">0.01663011871278286</span>, <span class="hljs-string">'label'</span>: <span class="hljs-string">'BalanceBeam'</span>}, | |
| {<span class="hljs-string">'score'</span>: <span class="hljs-number">0.009560945443809032</span>, <span class="hljs-string">'label'</span>: <span class="hljs-string">'BandMarching'</span>}, | |
| {<span class="hljs-string">'score'</span>: <span class="hljs-number">0.0068979403004050255</span>, <span class="hljs-string">'label'</span>: <span class="hljs-string">'BaseballPitch'</span>}]`,wrap:!1}}),Ys=new U({props:{code:"ZGVmJTIwcnVuX2luZmVyZW5jZShtb2RlbCUyQyUyMHZpZGVvKSUzQSUwQSUyMCUyMCUyMCUyMCUyMyUyMChudW1fZnJhbWVzJTJDJTIwbnVtX2NoYW5uZWxzJTJDJTIwaGVpZ2h0JTJDJTIwd2lkdGgpJTBBJTIwJTIwJTIwJTIwcGVydW11dGVkX3NhbXBsZV90ZXN0X3ZpZGVvJTIwJTNEJTIwdmlkZW8ucGVybXV0ZSgxJTJDJTIwMCUyQyUyMDIlMkMlMjAzKSUwQSUyMCUyMCUyMCUyMGlucHV0cyUyMCUzRCUyMCU3QiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMnBpeGVsX3ZhbHVlcyUyMiUzQSUyMHBlcnVtdXRlZF9zYW1wbGVfdGVzdF92aWRlby51bnNxdWVlemUoMCklMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjJsYWJlbHMlMjIlM0ElMjB0b3JjaC50ZW5zb3IoJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTVCc2FtcGxlX3Rlc3RfdmlkZW8lNUIlMjJsYWJlbCUyMiU1RCU1RCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCklMkMlMjAlMjAlMjMlMjB0aGlzJTIwY2FuJTIwYmUlMjBza2lwcGVkJTIwaWYlMjB5b3UlMjBkb24ndCUyMGhhdmUlMjBsYWJlbHMlMjBhdmFpbGFibGUuJTBBJTIwJTIwJTIwJTIwJTdEJTBBJTBBJTIwJTIwJTIwJTIwZGV2aWNlJTIwJTNEJTIwdG9yY2guZGV2aWNlKCUyMmN1ZGElMjIlMjBpZiUyMHRvcmNoLmN1ZGEuaXNfYXZhaWxhYmxlKCklMjBlbHNlJTIwJTIyY3B1JTIyKSUwQSUyMCUyMCUyMCUyMGlucHV0cyUyMCUzRCUyMCU3QmslM0ElMjB2LnRvKGRldmljZSklMjBmb3IlMjBrJTJDJTIwdiUyMGluJTIwaW5wdXRzLml0ZW1zKCklN0QlMEElMjAlMjAlMjAlMjBtb2RlbCUyMCUzRCUyMG1vZGVsLnRvKGRldmljZSklMEElMEElMjAlMjAlMjAlMjAlMjMlMjBmb3J3YXJkJTIwcGFzcyUwQSUyMCUyMCUyMCUyMHdpdGglMjB0b3JjaC5ub19ncmFkKCklM0ElMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBvdXRwdXRzJTIwJTNEJTIwbW9kZWwoKippbnB1dHMpJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwbG9naXRzJTIwJTNEJTIwb3V0cHV0cy5sb2dpdHMlMEElMEElMjAlMjAlMjAlMjByZXR1cm4lMjBsb2dpdHM=",highlighted:`<span class="hljs-meta">>>> </span><span class="hljs-keyword">def</span> <span class="hljs-title function_">run_inference</span>(<span class="hljs-params">model, video</span>): | |
| <span class="hljs-meta">... </span> <span class="hljs-comment"># (num_frames, num_channels, height, width)</span> | |
| <span class="hljs-meta">... </span> perumuted_sample_test_video = video.permute(<span class="hljs-number">1</span>, <span class="hljs-number">0</span>, <span class="hljs-number">2</span>, <span class="hljs-number">3</span>) | |
| <span class="hljs-meta">... </span> inputs = { | |
| <span class="hljs-meta">... </span> <span class="hljs-string">"pixel_values"</span>: perumuted_sample_test_video.unsqueeze(<span class="hljs-number">0</span>), | |
| <span class="hljs-meta">... </span> <span class="hljs-string">"labels"</span>: torch.tensor( | |
| <span class="hljs-meta">... </span> [sample_test_video[<span class="hljs-string">"label"</span>]] | |
| <span class="hljs-meta">... </span> ), <span class="hljs-comment"># this can be skipped if you don't have labels available.</span> | |
| <span class="hljs-meta">... </span> } | |
| <span class="hljs-meta">... </span> device = torch.device(<span class="hljs-string">"cuda"</span> <span class="hljs-keyword">if</span> torch.cuda.is_available() <span class="hljs-keyword">else</span> <span class="hljs-string">"cpu"</span>) | |
| <span class="hljs-meta">... </span> inputs = {k: v.to(device) <span class="hljs-keyword">for</span> k, v <span class="hljs-keyword">in</span> inputs.items()} | |
| <span class="hljs-meta">... </span> model = model.to(device) | |
| <span class="hljs-meta">... </span> <span class="hljs-comment"># forward pass</span> | |
| <span class="hljs-meta">... </span> <span class="hljs-keyword">with</span> torch.no_grad(): | |
| <span class="hljs-meta">... </span> outputs = model(**inputs) | |
| <span class="hljs-meta">... </span> logits = outputs.logits | |
| <span class="hljs-meta">... </span> <span class="hljs-keyword">return</span> logits`,wrap:!1}}),Ss=new U({props:{code:"bG9naXRzJTIwJTNEJTIwcnVuX2luZmVyZW5jZSh0cmFpbmVkX21vZGVsJTJDJTIwc2FtcGxlX3Rlc3RfdmlkZW8lNUIlMjJ2aWRlbyUyMiU1RCk=",highlighted:'<span class="hljs-meta">>>> </span>logits = run_inference(trained_model, sample_test_video[<span class="hljs-string">"video"</span>])',wrap:!1}}),Ns=new U({props:{code:"cHJlZGljdGVkX2NsYXNzX2lkeCUyMCUzRCUyMGxvZ2l0cy5hcmdtYXgoLTEpLml0ZW0oKSUwQXByaW50KCUyMlByZWRpY3RlZCUyMGNsYXNzJTNBJTIyJTJDJTIwbW9kZWwuY29uZmlnLmlkMmxhYmVsJTVCcHJlZGljdGVkX2NsYXNzX2lkeCU1RCk=",highlighted:`<span class="hljs-meta">>>> </span>predicted_class_idx = logits.argmax(-<span class="hljs-number">1</span>).item() | |
| <span class="hljs-meta">>>> </span><span class="hljs-built_in">print</span>(<span class="hljs-string">"Predicted class:"</span>, model.config.id2label[predicted_class_idx]) | |
| <span class="hljs-comment"># Predicted class: BasketballDunk</span>`,wrap:!1}}),Hs=new Ae({props:{source:"https://github.com/huggingface/transformers/blob/main/docs/source/ja/tasks/video_classification.md"}}),{c(){w=p("meta"),b=t(),T=p("p"),qs=t(),m(I.$$.fragment),Ps=t(),m(u.$$.fragment),Os=t(),C=p("p"),C.textContent=Ga,sl=t(),f=p("p"),f.textContent=Wa,ll=t(),g=p("ol"),g.innerHTML=Ba,al=t(),m(h.$$.fragment),el=t(),Z=p("p"),Z.textContent=_a,tl=t(),m(v.$$.fragment),nl=t(),G=p("p"),G.innerHTML=Aa,pl=t(),W=p("p"),W.textContent=ka,Ml=t(),m(B.$$.fragment),il=t(),m(_.$$.fragment),ml=t(),A=p("p"),A.innerHTML=Va,yl=t(),m(k.$$.fragment),cl=t(),V=p("p"),V.textContent=Ra,Jl=t(),m(R.$$.fragment),jl=t(),x=p("p"),x.textContent=xa,ol=t(),m($.$$.fragment),Ul=t(),X=p("p"),X.innerHTML=$a,wl=t(),m(F.$$.fragment),Tl=t(),z=p("p"),z.innerHTML=Xa,hl=t(),Y=p("p"),Y.innerHTML=Fa,rl=t(),E=p("p"),E.textContent=za,dl=t(),S=p("ul"),S.innerHTML=Ya,bl=t(),m(Q.$$.fragment),Il=t(),N=p("p"),N.textContent=Ea,ul=t(),m(H.$$.fragment),Cl=t(),L=p("p"),L.textContent=Sa,fl=t(),m(q.$$.fragment),gl=t(),D=p("p"),D.textContent=Qa,Zl=t(),m(K.$$.fragment),vl=t(),P=p("p"),P.innerHTML=Na,Gl=t(),O=p("p"),O.innerHTML=Ha,Wl=t(),m(ss.$$.fragment),Bl=t(),ls=p("p"),ls.innerHTML=La,_l=t(),m(as.$$.fragment),Al=t(),es=p("p"),es.innerHTML=qa,kl=t(),ts=p("p"),ts.innerHTML=Da,Vl=t(),ns=p("ul"),ns.innerHTML=Ka,Rl=t(),ps=p("p"),ps.textContent=Pa,xl=t(),m(Ms.$$.fragment),$l=t(),is=p("p"),is.textContent=Oa,Xl=t(),m(ms.$$.fragment),Fl=t(),ys=p("p"),ys.textContent=se,zl=t(),m(cs.$$.fragment),Yl=t(),Js=p("p"),Js.innerHTML=le,El=t(),js=p("p"),js.innerHTML=ae,Sl=t(),m(os.$$.fragment),Ql=t(),m(Us.$$.fragment),Nl=t(),m(ws.$$.fragment),Hl=t(),r=p("div"),r.innerHTML=ee,Ll=t(),m(Ts.$$.fragment),ql=t(),hs=p("p"),hs.innerHTML=te,Dl=t(),rs=p("p"),rs.innerHTML=ne,Kl=t(),m(ds.$$.fragment),Pl=t(),bs=p("p"),bs.innerHTML=pe,Ol=t(),Is=p("p"),Is.innerHTML=Me,sa=t(),m(us.$$.fragment),la=t(),Cs=p("p"),Cs.innerHTML=ie,aa=t(),fs=p("p"),fs.innerHTML=me,ea=t(),gs=p("p"),gs.innerHTML=ye,ta=t(),m(Zs.$$.fragment),na=t(),vs=p("p"),vs.innerHTML=ce,pa=t(),m(Gs.$$.fragment),Ma=t(),Ws=p("p"),Ws.innerHTML=Je,ia=t(),Bs=p("p"),Bs.innerHTML=je,ma=t(),m(_s.$$.fragment),ya=t(),As=p("p"),As.innerHTML=oe,ca=t(),m(ks.$$.fragment),Ja=t(),m(Vs.$$.fragment),ja=t(),Rs=p("p"),Rs.textContent=Ue,oa=t(),xs=p("p"),xs.textContent=we,Ua=t(),m($s.$$.fragment),wa=t(),d=p("div"),d.innerHTML=Te,Ta=t(),Xs=p("p"),Xs.innerHTML=he,ha=t(),m(Fs.$$.fragment),ra=t(),zs=p("p"),zs.innerHTML=re,da=t(),m(Ys.$$.fragment),ba=t(),Es=p("p"),Es.innerHTML=de,Ia=t(),m(Ss.$$.fragment),ua=t(),Qs=p("p"),Qs.innerHTML=be,Ca=t(),m(Ns.$$.fragment),fa=t(),m(Hs.$$.fragment),ga=t(),Ds=p("p"),this.h()},l(s){const l=Ge("svelte-u9bgzb",document.head);w=M(l,"META",{name:!0,content:!0}),l.forEach(a),b=n(s),T=M(s,"P",{}),ue(T).forEach(a),qs=n(s),y(I.$$.fragment,s),Ps=n(s),y(u.$$.fragment,s),Os=n(s),C=M(s,"P",{"data-svelte-h":!0}),i(C)!=="svelte-1xor8bg"&&(C.textContent=Ga),sl=n(s),f=M(s,"P",{"data-svelte-h":!0}),i(f)!=="svelte-w5jzhi"&&(f.textContent=Wa),ll=n(s),g=M(s,"OL",{"data-svelte-h":!0}),i(g)!=="svelte-11otk2h"&&(g.innerHTML=Ba),al=n(s),y(h.$$.fragment,s),el=n(s),Z=M(s,"P",{"data-svelte-h":!0}),i(Z)!=="svelte-1lya3k8"&&(Z.textContent=_a),tl=n(s),y(v.$$.fragment,s),nl=n(s),G=M(s,"P",{"data-svelte-h":!0}),i(G)!=="svelte-czqbgb"&&(G.innerHTML=Aa),pl=n(s),W=M(s,"P",{"data-svelte-h":!0}),i(W)!=="svelte-193zy02"&&(W.textContent=ka),Ml=n(s),y(B.$$.fragment,s),il=n(s),y(_.$$.fragment,s),ml=n(s),A=M(s,"P",{"data-svelte-h":!0}),i(A)!=="svelte-euouws"&&(A.innerHTML=Va),yl=n(s),y(k.$$.fragment,s),cl=n(s),V=M(s,"P",{"data-svelte-h":!0}),i(V)!=="svelte-z7ilr1"&&(V.textContent=Ra),Jl=n(s),y(R.$$.fragment,s),jl=n(s),x=M(s,"P",{"data-svelte-h":!0}),i(x)!=="svelte-10mtv5u"&&(x.textContent=xa),ol=n(s),y($.$$.fragment,s),Ul=n(s),X=M(s,"P",{"data-svelte-h":!0}),i(X)!=="svelte-1rsf4g4"&&(X.innerHTML=$a),wl=n(s),y(F.$$.fragment,s),Tl=n(s),z=M(s,"P",{"data-svelte-h":!0}),i(z)!=="svelte-kib1jt"&&(z.innerHTML=Xa),hl=n(s),Y=M(s,"P",{"data-svelte-h":!0}),i(Y)!=="svelte-1ltow2y"&&(Y.innerHTML=Fa),rl=n(s),E=M(s,"P",{"data-svelte-h":!0}),i(E)!=="svelte-1tnnjgf"&&(E.textContent=za),dl=n(s),S=M(s,"UL",{"data-svelte-h":!0}),i(S)!=="svelte-2w6pvq"&&(S.innerHTML=Ya),bl=n(s),y(Q.$$.fragment,s),Il=n(s),N=M(s,"P",{"data-svelte-h":!0}),i(N)!=="svelte-ydxkbb"&&(N.textContent=Ea),ul=n(s),y(H.$$.fragment,s),Cl=n(s),L=M(s,"P",{"data-svelte-h":!0}),i(L)!=="svelte-b1qgjf"&&(L.textContent=Sa),fl=n(s),y(q.$$.fragment,s),gl=n(s),D=M(s,"P",{"data-svelte-h":!0}),i(D)!=="svelte-vbzr9h"&&(D.textContent=Qa),Zl=n(s),y(K.$$.fragment,s),vl=n(s),P=M(s,"P",{"data-svelte-h":!0}),i(P)!=="svelte-1mgecsh"&&(P.innerHTML=Na),Gl=n(s),O=M(s,"P",{"data-svelte-h":!0}),i(O)!=="svelte-rgy4ys"&&(O.innerHTML=Ha),Wl=n(s),y(ss.$$.fragment,s),Bl=n(s),ls=M(s,"P",{"data-svelte-h":!0}),i(ls)!=="svelte-u8vkk4"&&(ls.innerHTML=La),_l=n(s),y(as.$$.fragment,s),Al=n(s),es=M(s,"P",{"data-svelte-h":!0}),i(es)!=="svelte-63dff4"&&(es.innerHTML=qa),kl=n(s),ts=M(s,"P",{"data-svelte-h":!0}),i(ts)!=="svelte-35q3tp"&&(ts.innerHTML=Da),Vl=n(s),ns=M(s,"UL",{"data-svelte-h":!0}),i(ns)!=="svelte-vfg4c0"&&(ns.innerHTML=Ka),Rl=n(s),ps=M(s,"P",{"data-svelte-h":!0}),i(ps)!=="svelte-5gszvi"&&(ps.textContent=Pa),xl=n(s),y(Ms.$$.fragment,s),$l=n(s),is=M(s,"P",{"data-svelte-h":!0}),i(is)!=="svelte-13khvkx"&&(is.textContent=Oa),Xl=n(s),y(ms.$$.fragment,s),Fl=n(s),ys=M(s,"P",{"data-svelte-h":!0}),i(ys)!=="svelte-p2cev2"&&(ys.textContent=se),zl=n(s),y(cs.$$.fragment,s),Yl=n(s),Js=M(s,"P",{"data-svelte-h":!0}),i(Js)!=="svelte-nxexib"&&(Js.innerHTML=le),El=n(s),js=M(s,"P",{"data-svelte-h":!0}),i(js)!=="svelte-1sr4l5r"&&(js.innerHTML=ae),Sl=n(s),y(os.$$.fragment,s),Ql=n(s),y(Us.$$.fragment,s),Nl=n(s),y(ws.$$.fragment,s),Hl=n(s),r=M(s,"DIV",{class:!0,"data-svelte-h":!0}),i(r)!=="svelte-1mxsghh"&&(r.innerHTML=ee),Ll=n(s),y(Ts.$$.fragment,s),ql=n(s),hs=M(s,"P",{"data-svelte-h":!0}),i(hs)!=="svelte-11vjrd1"&&(hs.innerHTML=te),Dl=n(s),rs=M(s,"P",{"data-svelte-h":!0}),i(rs)!=="svelte-1h9fs39"&&(rs.innerHTML=ne),Kl=n(s),y(ds.$$.fragment,s),Pl=n(s),bs=M(s,"P",{"data-svelte-h":!0}),i(bs)!=="svelte-dmr8cl"&&(bs.innerHTML=pe),Ol=n(s),Is=M(s,"P",{"data-svelte-h":!0}),i(Is)!=="svelte-158a0kb"&&(Is.innerHTML=Me),sa=n(s),y(us.$$.fragment,s),la=n(s),Cs=M(s,"P",{"data-svelte-h":!0}),i(Cs)!=="svelte-nm6qz9"&&(Cs.innerHTML=ie),aa=n(s),fs=M(s,"P",{"data-svelte-h":!0}),i(fs)!=="svelte-1xvlriq"&&(fs.innerHTML=me),ea=n(s),gs=M(s,"P",{"data-svelte-h":!0}),i(gs)!=="svelte-9cgcax"&&(gs.innerHTML=ye),ta=n(s),y(Zs.$$.fragment,s),na=n(s),vs=M(s,"P",{"data-svelte-h":!0}),i(vs)!=="svelte-1f62kqi"&&(vs.innerHTML=ce),pa=n(s),y(Gs.$$.fragment,s),Ma=n(s),Ws=M(s,"P",{"data-svelte-h":!0}),i(Ws)!=="svelte-1kl7cs4"&&(Ws.innerHTML=Je),ia=n(s),Bs=M(s,"P",{"data-svelte-h":!0}),i(Bs)!=="svelte-6y2s4r"&&(Bs.innerHTML=je),ma=n(s),y(_s.$$.fragment,s),ya=n(s),As=M(s,"P",{"data-svelte-h":!0}),i(As)!=="svelte-vt2oh"&&(As.innerHTML=oe),ca=n(s),y(ks.$$.fragment,s),Ja=n(s),y(Vs.$$.fragment,s),ja=n(s),Rs=M(s,"P",{"data-svelte-h":!0}),i(Rs)!=="svelte-cyrfc8"&&(Rs.textContent=Ue),oa=n(s),xs=M(s,"P",{"data-svelte-h":!0}),i(xs)!=="svelte-8sselv"&&(xs.textContent=we),Ua=n(s),y($s.$$.fragment,s),wa=n(s),d=M(s,"DIV",{class:!0,"data-svelte-h":!0}),i(d)!=="svelte-556htt"&&(d.innerHTML=Te),Ta=n(s),Xs=M(s,"P",{"data-svelte-h":!0}),i(Xs)!=="svelte-10gqzn2"&&(Xs.innerHTML=he),ha=n(s),y(Fs.$$.fragment,s),ra=n(s),zs=M(s,"P",{"data-svelte-h":!0}),i(zs)!=="svelte-p649vi"&&(zs.innerHTML=re),da=n(s),y(Ys.$$.fragment,s),ba=n(s),Es=M(s,"P",{"data-svelte-h":!0}),i(Es)!=="svelte-1j3job6"&&(Es.innerHTML=de),Ia=n(s),y(Ss.$$.fragment,s),ua=n(s),Qs=M(s,"P",{"data-svelte-h":!0}),i(Qs)!=="svelte-1gyl42i"&&(Qs.innerHTML=be),Ca=n(s),y(Ns.$$.fragment,s),fa=n(s),y(Hs.$$.fragment,s),ga=n(s),Ds=M(s,"P",{}),ue(Ds).forEach(a),this.h()},h(){va(w,"name","hf:doc:metadata"),va(w,"content",Re),va(r,"class","flex justify-center"),va(d,"class","flex justify-center")},m(s,l){We(document.head,w),e(s,b,l),e(s,T,l),e(s,qs,l),c(I,s,l),e(s,Ps,l),c(u,s,l),e(s,Os,l),e(s,C,l),e(s,sl,l),e(s,f,l),e(s,ll,l),e(s,g,l),e(s,al,l),c(h,s,l),e(s,el,l),e(s,Z,l),e(s,tl,l),c(v,s,l),e(s,nl,l),e(s,G,l),e(s,pl,l),e(s,W,l),e(s,Ml,l),c(B,s,l),e(s,il,l),c(_,s,l),e(s,ml,l),e(s,A,l),e(s,yl,l),c(k,s,l),e(s,cl,l),e(s,V,l),e(s,Jl,l),c(R,s,l),e(s,jl,l),e(s,x,l),e(s,ol,l),c($,s,l),e(s,Ul,l),e(s,X,l),e(s,wl,l),c(F,s,l),e(s,Tl,l),e(s,z,l),e(s,hl,l),e(s,Y,l),e(s,rl,l),e(s,E,l),e(s,dl,l),e(s,S,l),e(s,bl,l),c(Q,s,l),e(s,Il,l),e(s,N,l),e(s,ul,l),c(H,s,l),e(s,Cl,l),e(s,L,l),e(s,fl,l),c(q,s,l),e(s,gl,l),e(s,D,l),e(s,Zl,l),c(K,s,l),e(s,vl,l),e(s,P,l),e(s,Gl,l),e(s,O,l),e(s,Wl,l),c(ss,s,l),e(s,Bl,l),e(s,ls,l),e(s,_l,l),c(as,s,l),e(s,Al,l),e(s,es,l),e(s,kl,l),e(s,ts,l),e(s,Vl,l),e(s,ns,l),e(s,Rl,l),e(s,ps,l),e(s,xl,l),c(Ms,s,l),e(s,$l,l),e(s,is,l),e(s,Xl,l),c(ms,s,l),e(s,Fl,l),e(s,ys,l),e(s,zl,l),c(cs,s,l),e(s,Yl,l),e(s,Js,l),e(s,El,l),e(s,js,l),e(s,Sl,l),c(os,s,l),e(s,Ql,l),c(Us,s,l),e(s,Nl,l),c(ws,s,l),e(s,Hl,l),e(s,r,l),e(s,Ll,l),c(Ts,s,l),e(s,ql,l),e(s,hs,l),e(s,Dl,l),e(s,rs,l),e(s,Kl,l),c(ds,s,l),e(s,Pl,l),e(s,bs,l),e(s,Ol,l),e(s,Is,l),e(s,sa,l),c(us,s,l),e(s,la,l),e(s,Cs,l),e(s,aa,l),e(s,fs,l),e(s,ea,l),e(s,gs,l),e(s,ta,l),c(Zs,s,l),e(s,na,l),e(s,vs,l),e(s,pa,l),c(Gs,s,l),e(s,Ma,l),e(s,Ws,l),e(s,ia,l),e(s,Bs,l),e(s,ma,l),c(_s,s,l),e(s,ya,l),e(s,As,l),e(s,ca,l),c(ks,s,l),e(s,Ja,l),c(Vs,s,l),e(s,ja,l),e(s,Rs,l),e(s,oa,l),e(s,xs,l),e(s,Ua,l),c($s,s,l),e(s,wa,l),e(s,d,l),e(s,Ta,l),e(s,Xs,l),e(s,ha,l),c(Fs,s,l),e(s,ra,l),e(s,zs,l),e(s,da,l),c(Ys,s,l),e(s,ba,l),e(s,Es,l),e(s,Ia,l),c(Ss,s,l),e(s,ua,l),e(s,Qs,l),e(s,Ca,l),c(Ns,s,l),e(s,fa,l),c(Hs,s,l),e(s,ga,l),e(s,Ds,l),Za=!0},p(s,[l]){const Ie={};l&2&&(Ie.$$scope={dirty:l,ctx:s}),h.$set(Ie)},i(s){Za||(J(I.$$.fragment,s),J(u.$$.fragment,s),J(h.$$.fragment,s),J(v.$$.fragment,s),J(B.$$.fragment,s),J(_.$$.fragment,s),J(k.$$.fragment,s),J(R.$$.fragment,s),J($.$$.fragment,s),J(F.$$.fragment,s),J(Q.$$.fragment,s),J(H.$$.fragment,s),J(q.$$.fragment,s),J(K.$$.fragment,s),J(ss.$$.fragment,s),J(as.$$.fragment,s),J(Ms.$$.fragment,s),J(ms.$$.fragment,s),J(cs.$$.fragment,s),J(os.$$.fragment,s),J(Us.$$.fragment,s),J(ws.$$.fragment,s),J(Ts.$$.fragment,s),J(ds.$$.fragment,s),J(us.$$.fragment,s),J(Zs.$$.fragment,s),J(Gs.$$.fragment,s),J(_s.$$.fragment,s),J(ks.$$.fragment,s),J(Vs.$$.fragment,s),J($s.$$.fragment,s),J(Fs.$$.fragment,s),J(Ys.$$.fragment,s),J(Ss.$$.fragment,s),J(Ns.$$.fragment,s),J(Hs.$$.fragment,s),Za=!0)},o(s){j(I.$$.fragment,s),j(u.$$.fragment,s),j(h.$$.fragment,s),j(v.$$.fragment,s),j(B.$$.fragment,s),j(_.$$.fragment,s),j(k.$$.fragment,s),j(R.$$.fragment,s),j($.$$.fragment,s),j(F.$$.fragment,s),j(Q.$$.fragment,s),j(H.$$.fragment,s),j(q.$$.fragment,s),j(K.$$.fragment,s),j(ss.$$.fragment,s),j(as.$$.fragment,s),j(Ms.$$.fragment,s),j(ms.$$.fragment,s),j(cs.$$.fragment,s),j(os.$$.fragment,s),j(Us.$$.fragment,s),j(ws.$$.fragment,s),j(Ts.$$.fragment,s),j(ds.$$.fragment,s),j(us.$$.fragment,s),j(Zs.$$.fragment,s),j(Gs.$$.fragment,s),j(_s.$$.fragment,s),j(ks.$$.fragment,s),j(Vs.$$.fragment,s),j($s.$$.fragment,s),j(Fs.$$.fragment,s),j(Ys.$$.fragment,s),j(Ss.$$.fragment,s),j(Ns.$$.fragment,s),j(Hs.$$.fragment,s),Za=!1},d(s){s&&(a(b),a(T),a(qs),a(Ps),a(Os),a(C),a(sl),a(f),a(ll),a(g),a(al),a(el),a(Z),a(tl),a(nl),a(G),a(pl),a(W),a(Ml),a(il),a(ml),a(A),a(yl),a(cl),a(V),a(Jl),a(jl),a(x),a(ol),a(Ul),a(X),a(wl),a(Tl),a(z),a(hl),a(Y),a(rl),a(E),a(dl),a(S),a(bl),a(Il),a(N),a(ul),a(Cl),a(L),a(fl),a(gl),a(D),a(Zl),a(vl),a(P),a(Gl),a(O),a(Wl),a(Bl),a(ls),a(_l),a(Al),a(es),a(kl),a(ts),a(Vl),a(ns),a(Rl),a(ps),a(xl),a($l),a(is),a(Xl),a(Fl),a(ys),a(zl),a(Yl),a(Js),a(El),a(js),a(Sl),a(Ql),a(Nl),a(Hl),a(r),a(Ll),a(ql),a(hs),a(Dl),a(rs),a(Kl),a(Pl),a(bs),a(Ol),a(Is),a(sa),a(la),a(Cs),a(aa),a(fs),a(ea),a(gs),a(ta),a(na),a(vs),a(pa),a(Ma),a(Ws),a(ia),a(Bs),a(ma),a(ya),a(As),a(ca),a(Ja),a(ja),a(Rs),a(oa),a(xs),a(Ua),a(wa),a(d),a(Ta),a(Xs),a(ha),a(ra),a(zs),a(da),a(ba),a(Es),a(Ia),a(ua),a(Qs),a(Ca),a(fa),a(ga),a(Ds)),a(w),o(I,s),o(u,s),o(h,s),o(v,s),o(B,s),o(_,s),o(k,s),o(R,s),o($,s),o(F,s),o(Q,s),o(H,s),o(q,s),o(K,s),o(ss,s),o(as,s),o(Ms,s),o(ms,s),o(cs,s),o(os,s),o(Us,s),o(ws,s),o(Ts,s),o(ds,s),o(us,s),o(Zs,s),o(Gs,s),o(_s,s),o(ks,s),o(Vs,s),o($s,s),o(Fs,s),o(Ys,s),o(Ss,s),o(Ns,s),o(Hs,s)}}}const Re='{"title":"Video classification","local":"video-classification","sections":[{"title":"Load UCF101 dataset","local":"load-ucf101-dataset","sections":[],"depth":2},{"title":"Load a model to fine-tune","local":"load-a-model-to-fine-tune","sections":[],"depth":2},{"title":"Prepare the datasets for training","local":"prepare-the-datasets-for-training","sections":[],"depth":2},{"title":"Visualize the preprocessed video for better debugging","local":"visualize-the-preprocessed-video-for-better-debugging","sections":[],"depth":2},{"title":"Train the model","local":"train-the-model","sections":[],"depth":2},{"title":"Inference","local":"inference","sections":[],"depth":2}],"depth":1}';function xe(Ks){return fe(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class Se extends Ze{constructor(w){super(),ve(this,w,xe,Ve,Ce,{})}}export{Se as component}; | |
Xet Storage Details
- Size:
- 73.3 kB
- Xet hash:
- e209ad44bacea0fcd560e8e5d1fcfdddfc60338dc674329472af20634a26a258
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.