研究ノート 2 | ビデオ修復モデル (code\ECformer\model の .py ファイルを読み取ります)

code\ECformer\model の .py ファイルを読み取ります。

含む

ba_ours.py

dstt.py      sttn.py      ヒューズフォーマー.py      プールフォーマー.py

swin.py 焦点.py

e2fgvi.py

目次

1. STTN と FuseFormer

1.1 主な違い

1.2 コード実装の主な違い

2. STTN と DSTT

2.1 違いはネットワーク構造とアプリケーションシナリオにあります

2.2 コード実装の主な違い

3. STTN と E2FGVI

3.1 主な違い

3.2 コード実装の違い

4. プールフォーマーとフューズフォーマー

5. スイングトランスと焦点損失

六。STTN と ba_ours


プレビューの比較:

STTN、DSTT、FuseFormer の概要 (何が改善されたのか?) - Ma Pengsen のブログ - CSDN ブログ

1. STTN と FuseFormer

STTN と FuseFormer のモデル サイズは同じですが、OP (ノード数) が異なるため、2 つのモデルの違いについて詳しく知ることができます。

STTN中クラス InpaintGenerator(BaseNetwork)

パディング = (0, 0)

歩幅 = (7, 7)

FuseFormer クラス InpaintGenerator(BaseNetwork)

パディング = (3, 3)
ストライド = (3, 3)

1.1 主な違い

STTN (時空間変換ネットワーク) は、ビデオ分析と処理のためのモデルです。Transformer の自己注意メカニズムを使用して時空間情報を処理し、ビデオ内のオブジェクトの正確な位置決め、追跡、認識などのタスクを実行できます。STTN は、ビデオの各フレームをタイム ステップとして扱い、時間的および空間的両方にトランスフォーマーを適用することで、オブジェクト間の関係と動きをキャプチャします。

FuseFormer は、画像の注釈や視覚的な質問応答などのマルチモーダル タスクのために画像とテキストの情報を融合することを目的とした自然言語処理のモデルです。FuseFormer は、Transformer のエンコーダとデコーダを組み合わせ、アテンション メカニズムを使用して画像とテキスト情報をエンコードおよびデコードします。FuseFormer は、テキスト情報と画像情報を適応的に抽出および融合して、マルチモーダル情報の効果的な対話を実現できます。

1.2 コード実装の主な違い

コード実装における STTN と FuseFormerの最大の違いは、ネットワーク アーキテクチャと入力データの処理方法にあります。

STTN のネットワーク アーキテクチャには、主に時間的および空間的な Transformer エンコーダ、時間的および空間的な Transformer デコーダ、および空間アテンション メカニズムが含まれます。入力データ処理の観点から、STTN はビデオ シーケンスをタイム ステップに分割し、各タイム ステップの特徴マップを隣接するタイム ステップの特徴マップとスタックして、時空間関係を確立します。

対照的に、FuseFormer のネットワーク アーキテクチャには主にエンコーダ、デコーダ、フュージョン層が含まれています。入力データ処理に関しては、FuseFormer は画像情報とテキスト情報を別々にエンコーダーに入力し、次にフュージョン レイヤーを使用して 2 つのエンコーダーの機能を融合し、最終的にデコーダーで対応する出力を生成します。

2. STTN と DSTT

コード構造には多くの違いがあります。

STTNに含まれるクラス DSTT にはクラスが含まれています
クラスBaseNetwork(nn.Module) クラスBaseNetwork(nn.Module):
クラスBinarizedEncoder(nn.Module): クラス HierarchyEncoder(nn.Module):
クラスエンコーダー(nn.Module): クラス InpaintGenerator(BaseNetwork):
クラスBinarizedDecoder(nn.Module): クラスdeconv(nn.Module):
クラス InpaintGenerator(BaseNetwork): クラス アテンション(nn.Module):
クラスdeconv(nn.Module): クラス Vec2Patch(nn.Module):
クラス アテンション(nn.Module): クラスMultiHeadedAttention(nn.Module):
クラスAddPosEmb(nn.Module): クラス FeedForward(nn.Module):
クラス SoftSplit(nn.Module): クラス TransformerBlock(nn.Module):
クラス SoftComp(nn.Module): クラス識別子(BaseNetwork):
クラスMultiHeadedAttention(nn.Module):
クラス BinarizedMultiHeadedtention(nn.Module):
クラス FusionFeedForward(nn.Module):
クラス TransformerBlock(nn.Module):
クラス識別子(BaseNetwork):

2.1 違いはネットワーク構造とアプリケーションシナリオにあります

STTN は、Transformer のセルフ アテンション メカニズムを使用して時空間情報を処理し、ビデオ シーケンスをタイム ステップとして扱い、Transformer を時間と空間に適用することで、ビデオ内のオブジェクト間の関係と動きをキャプチャします。STTN は主に、ビデオ分類、アクション認識、物体検出と追跡、その他のタスクなどのビデオ分析と処理の分野で使用されます。

DSTT も Transformer ベースのビデオ処理モデルですが、デュアル ストリーム構造を使用します。つまり、空間と時間で 2 つの独立した Transformer エンコーダーが使用されます。DSTT は、空間 Transformer エンコーダを使用して画像内の空間情報を抽出し、時間 Transformer エンコーダを使用してビデオ内のタイミング情報を抽出します。2 つの独立したエンコーダーを使用することにより、DSTT は空間と時間の異なるレベルの特徴を同時に学習できるため、ビデオ処理の効果が向上します。

STTN と比較すると、DSTT は、ビデオ セグメンテーション、動作認識、イベント検出など、空間情報と時間情報の両方を考慮する必要があるビデオ処理タスクにより適しています。

したがって、STTN と DSTT はどちらも Transformer ベースのビデオ処理モデルですが、ネットワーク構造とアプリケーション シナリオが異なります。STTN は主にビデオ分類、物体検出、追跡などのタスクに使用されますが、DSTT は空間情報と時間情報の両方を考慮する必要があるビデオ処理タスクに適しています。

2.2 コード実装の主な違い

STTN (時空間変換ネットワーク) と DSTT (デュアル時空間変換ネットワーク) のコード実装の主な違いは、ネットワーク構造と入力データの処理方法にあります。

STTN のネットワーク構造には、時間 Transformer エンコーダ、空間 Transformer エンコーダ、時間 Transformer デコーダ、空間 Transformer デコーダ、および空間アテンション メカニズムが含まれます。入力データ処理の観点から、STTN はビデオ シーケンスをタイム ステップに分解し、各タイム ステップの特徴マップを隣接するタイム ステップの特徴マップとスタックして、時空間関係を確立します。

DSTT のネットワーク構造には、時間 Transformer エンコーダ、空間 Transformer エンコーダ、時間 Transformer デコーダ、および空間 Transformer デコーダが含まれます。入力データ処理に関して、DSTT は空間および時間の Transformer エンコーダーを使用してビデオの各フレームから特徴を抽出し、2 つのエンコーダーの特徴を融合して対応する出力を生成します。

したがって、STTN と DSTT はどちらも Transformer アーキテクチャに基づくビデオ処理モデルですが、ネットワーク構造と入力データの処理方法が異なります。

3. STTN と E2FGVI

3.1 主な違い

STTN (時空間変換ネットワーク) と E2FGVI (拡張 2 ストリーム融合グラフビデオ推論) はどちらもビデオ処理の分野で適用される深層学習モデルですが、それらの違いはネットワーク構造とアプリケーション シナリオにあります。

STTN は主に、Transformer アーキテクチャの自己注意メカニズムを使用して時空間情報を処理し、ビデオ内のオブジェクト間の関係と動きをキャプチャします。STTN は、ビデオ分類、アクション認識、物体検出、追跡などのタスクに使用できます。

E2FGVI は、グラフ畳み込みニューラル ネットワーク (GCN) と 2 つのストリーム (空間ストリームと時間ストリーム) の構造を使用してビデオをモデル化します。空間ストリームと時間ストリームの間にグラフ構造を構築し、グラフ畳み込みニューラル ネットワークを利用して 2 つのストリームの特徴を融合することで、ビデオ内のコンテキスト情報をキャプチャします。E2FGVI は主に、ビデオ セグメンテーション、人物の再識別、行動認識などのタスクに使用されます。

ネットワーク構造に関しては、STTN は Transformer エンコーダとデコーダ、および空間アテンション メカニズムを使用しますが、E2FGVI はグラフ畳み込みニューラル ネットワークと 2 ストリーム構造を使用します。入力データ処理の観点から、STTN はビデオ シーケンスをタイム ステップに分解し、各タイム ステップの特徴マップを隣接するタイム ステップの特徴マップとスタックして、時空間関係を確立します。E2FGVI は、グラフ畳み込みニューラル ネットワークを通じて空間ストリームと時間ストリームの特徴抽出結果を融合します。したがって、STTN と E2FGVI は、ネットワーク構造とアプリケーション シナリオが異なります。

3.2 コード実装の違い

STTN と E2FGVI のコード実装の主な違いは、ネットワーク構造とデータ処理方法にあります。

ネットワーク構造の観点から見ると、STTN には主に時間 Transformer エンコーダ、空間 Transformer エンコーダ、時間 Transformer デコーダ、空間 Transformer デコーダ、および空間アテンション メカニズムが含まれます。コードの実装に関しては、これらのコンポーネントはさまざまなニューラル ネットワーク層またはモジュールとして実装され、特定の順序で積み重ねられて接続されます。たとえば、STTN の時間変換エンコーダは、複数のセルフアテンション層とフィードフォワード ネットワーク層を積み重ねることによって実装できます。

一方、E2FGVI は 2 ストリーム構造を使用しており、各ストリームには空間および時間エンコーダー、グラフ畳み込みニューラル ネットワーク、およびデコーダーが含まれています。コードの実装に関しては、各ストリームは独立したニューラル ネットワークとして実装でき、空間エンコーダと時間エンコーダは畳み込みニューラル ネットワークまたは他のタイプのニューラル ネットワーク層で構成でき、グラフ畳み込みニューラル ネットワークは通常、多層で構成されます。グラフ: 畳み込み層とプーリング層で構成されます。

データ処理の観点から、STTN はビデオ シーケンスをタイム ステップに分解し、各タイム ステップの特徴マップを隣接するタイム ステップの特徴マップとスタックして、時空間関係を確立します。このアプローチは、コード内でリカレント ニューラル ネットワーク (RNN) または畳み込みニューラル ネットワーク (CNN) を使用することで実現できます。

E2FGVI は、グラフ畳み込みニューラル ネットワークを通じて空間ストリームと時間ストリームの特徴抽出結果を融合します。コードの実装に関しては、一部のグラフ畳み込みニューラル ネットワーク ライブラリ (PyTorch Geometric など) を使用して、グラフ畳み込み層とプーリング層を構築し、それらを空間および時間ストリームの機能と融合できます。コード実装における STTN と E2FGVI の違いは、主にネットワーク構造とデータ処理方法にあります。

4. プールフォーマーとフューズフォーマー

PoolFormer と FuseFormer は両方とも、画像の処理とエンコード用に最近提案された Transformer ベースの深層学習モデルです。それらの違いは主にネットワーク構造とエンコード方法にあります。

PoolFormer はセルフアテンション メカニズムに基づいた画像エンコーダであり、Transformer エンコーダの構造を使用して画像をエンコードします。具体的には、PoolFormer は、一般的な畳み込みニューラル ネットワークを通じて入力画像を特徴マップにエンコードし、特徴マップを複数のブロックに分割します。次に、PoolFormer はこれらのブロックをセルフ アテンション メカニズムへの入力として個別に取得し、ブロック間の関係と重要性を把握します。最後に、PoolFormer はすべてのアテンション メカニズムの出力を結合し、多層パーセプトロンを通じてそれらを集約して、最終的なエンコードされた表現を生成します。

FuseFormer は、PoolFormer に基づいて提案された改良モデルであり、2 つの画像の特徴ベクトルを融合して、より正確なエンコード表現を生成します。PoolFormer とは異なり、FuseFormer はアテンション メカニズムを通じて 2 つの画像の特徴ベクトルを融合します。具体的には、FuseFormer は 2 つの特徴ベクトルをそれぞれアテンション メカニズムの入力として受け取り、それらの間の関係と重要性をキャプチャします。次に、FuseFormer は、アテンション メカニズムの出力と 2 つの特徴ベクトルの加重和を加算し、多層パーセプトロンを通じてそれらを集約して、最終的なエンコードされた表現を生成します。

したがって、PoolFormer と FuseFormer の主な違いは、それらがどのようにコーディングされ融合されるかです。PoolFormer は 1 つの画像のみをエンコードしますが、FuseFormer は 2 つの画像の特徴ベクトルを融合することにより、より正確なエンコード表現を生成します。コード実装の点では、これらのモデルも異なりますが、すべて Transformer 構造に基づいており、PyTorch などの深層学習フレームワークを使用して実装されています。

5. スイングトランスと焦点損失

  1. Swin Transformer は新しいタイプの Transformer モデルで、従来の Transformer モデルと比較して、ウィンドウベースのローカル セルフ アテンション メカニズムが導入されており、より大きな画像を処理できます。Swin Transformer では、階層的な特徴表現も導入されているため、モデルはより多くの階層的な画像特徴を学習して、より良い結果を得ることができます。

  2. 焦点損失は、分類問題におけるクラスの不均衡に対処するために使用される損失関数です。従来のクロスエントロピー損失関数と比較して、Focal Loss は分類が難しいサンプルにより重点を置くことができるため、これらのサンプルの重みが増加し、分類しやすいサンプルの重みが減り、それによってモデルのパフォーマンスが向上します。

コードの実装に関しては、Swin Transformer と Focal Loss は両方とも、PyTorch などの主流の深層学習フレームワークに実装できます。Swin Transformer のコード実装では、ウィンドウ化されたセルフアテンション メカニズムを実装し、それを Transformer 構造に適用する必要があります。Focal Loss のコード実装では、カテゴリの不均衡の問題に対処するために、分類しやすいサンプルの重みを調整するために、クロスエントロピー損失関数に基づいてパラメータを追加する必要があります。

つまり、Swin Transformer と Focal Loss はどちらも深層学習の分野で非常に重要なモデルとテクノロジーであり、さまざまなタスクやシナリオで良好な結果を達成できます。それらの主な違いは、モデル構造と損失関数の設計にあります。

六。STTN と ba_ours

STTNに含まれるクラス ba_ours に含まれるクラス
クラスBaseNetwork(nn.Module):
クラスBaseNetwork(nn.Module):
クラスBinarizedEncoder(nn.Module):
クラスエンコーダー(nn.Module):
クラスエンコーダー(nn.Module):
クラス InpaintGenerator(BaseNetwork):  
クラスBinarizedDecoder(nn.Module):
クラスdeconv(nn.Module):
クラス InpaintGenerator(BaseNetwork):
クラス アテンション(nn.Module):
クラスdeconv(nn.Module):
クラスAddPosEmb(nn.Module):
クラス アテンション(nn.Module):
クラス SoftSplit(nn.Module):
クラスAddPosEmb(nn.Module):
クラス SoftComp(nn.Module):
クラス SoftSplit(nn.Module):
クラスMultiHeadedAttention(nn.Module):
クラス SoftComp(nn.Module):
クラス FeedForward(nn.Module):
クラスMultiHeadedAttention(nn.Module):
クラス FusionFeedForward(nn.Module):
クラス BinarizedMultiHeadedtention(nn.Module):
クラス ChannelAttention(nn.Module):
クラス FusionFeedForward(nn.Module):
クラス kNNAttention(nn.Module):
クラス TransformerBlock(nn.Module):
クラス TransformerBlock(nn.Module):
クラス識別子(BaseNetwork):
クラス識別子(BaseNetwork):
クラス PositionalEncoding(nn.Module):  

おすすめ

転載: blog.csdn.net/qq_46703208/article/details/130195157