エッジコンピューティングにおける「両立の難しさ」にまだ悩んでいるなら、この記事は一読の価値があるかもしれません。
軽量畳み込みニューラルネットワークの設計において、限られたFLOPsの下で「局所受容野」と「大域的空間認識」をどうバランスさせるかは、常に核心的な課題です。
従来の$3 \times 3$畳み込みは受容野のサイズに制約され、一方で一般的なSE-Blockアテンション機構は大域プーリング操作により空間位置情報の崩壊を引き起こします。そこで、私たちは新しい演算子を特別に開発しました。この構造は、$5 \times 5$大カーネル深度畳み込みと座標アテンション機構(Coordinate Attention)を革新的に融合し、強制残差戦略とGroupNorm最適化を通じて、ハードウェアフレンドリーでロバストな位置エンコーディング能力を持つ特徴抽出パラダイムを構築することに成功しました。
コードを分析する前に、このモジュールが解決しようとする3つの核心的なペインポイントを理解する必要があります:
マイクロバッチ統計の不安定性(Micro-Batch Instability):エッジデバイスで転移学習またはファインチューニングを行う際、VRAMの制限によりバッチサイズは極めて小さい(例:2または4)ことが多く、このときBatchNormの統計量推定に大きなバイアスが生じ、学習が発散します。
そして、今回構築したアテンション融合畳み込みカーネルは、まさに上述の理論的背景に基づいて提案された解決策です。
このモジュールは単純な階層スタックではなく、精心に設計された特徴再構成クローズドループです。以下ではコードロジックに基づき、ステップバイステップで深く剖析します:
コード実装:
設計:カーネルサイズを$3 \times 3$から$5 \times 5$に向上させます。情報理論の観点から、これは単一ニューロンの「可視領域」を増加させます。
理論的優位性:$5 \times 5$畳み込みの受容野面積は$3 \times 3$の$25/9 \approx 2.78$倍です。軽量ネットワーク(MobileNetV3など)において、この大カーネル深度畳み込みはTransformerのToken Mixer動作を効果的にシミュレートし、テクスチャや形状の捕捉能力を強化します。また、NCNNなどの推論フレームワークは$5 \times 5$ DW演算子に対してすでに極めて高いWinogradアルゴリズム最適化サポートを備えています。
これこそが本モジュールの「魂」です。SEの大域プーリングとは異なり、このモジュールは2つの直交する1D Global Pooling操作を利用して空間情報を分解します。
最適化戦略:ここではreduction=16のボトルネック層を導入してモデル複雑度を削減します。
改善:GroupNormの導入は、まさに画龍点睛です。アテンションブランチの中間層では、特徴チャネルが圧縮され、しばしば極めて小さいバッチサイズを伴います。GNはチャネルをグループ化して正規化を行い、その統計量はバッチサイズに依存しないため、ファインチューニングタスクにおけるBN層による「統計量ドリフト」問題を解決します。
このモジュール内部のデータ流れをより明確に示すため、Forwardプロセスを以下の詳細ステップに形式化します:
入力$X \in \mathbb{R}^{N \times C_1 \times H \times W}$。
DWConv PWConv BN Hardswishを経由。
中間特徴$F \in \mathbb{R}^{N \times C_2 \times H \times W}$を出力。
座標情報エンコーディング:
変換と活性化:
この畳み込みカーネルの実シーンにおける有効性を検証するため、制御環境下で厳格な比較実験を行いました。
実験設定:
データセット:カスタム検出データセット(警棒、懐中電灯、ナイフなどの高類似度カテゴリを含む)。
学習戦略:SGDオプティマイザー、Cosine LRスケジューリング、学習エポック数は5000 Epochs(モデルが完全に収束することを保証)。
ベースライン:本モジュールのみを標準的な3x3 DWConvに置き換え、それ以外のネットワークアーキテクチャは完全に同一に保持。

COMMON
ENHANCE
テストにおいて「クラス間類似性」が最大のチャレンジです。
例えば、長方形の「警棒」と「懐中電灯」は低解像度下では極めて区別が困難です。
私たちは、これらの特定カテゴリにおけるモデルのTop-1正解率(Accuracy)を抽出し、比較分析を行いました:

COMMON
ENHANCE
このオペレータは、極めて先見的な軽量ネットワーク設計アプローチを示しています。
このモジュールはプラグアンドプレイコンポーネントであるだけでなく、今後の軽量検出ネットワーク設計に対して標準的な空間-チャネルデカップリングパラダイムを提供します。
self.dw_conv = nn.Conv2d(c1, c1, kernel_size=5, stride=s, padding=2, groups=c1, bias=False)
x_h = self.pool_h(feat) # Output: (N, C, H, 1)
x_w = self.pool_w(feat) # Output: (N, C, 1, W)
y = torch.cat([x_h, x_w], dim=2)
y = self.conv_pool(y)
y = self.gn(y) # GroupNorm for stability
a_h = self.conv_h(x_h).sigmoid()
a_w = self.conv_w(x_w).sigmoid()
out = identity_feat * a_w * a_h
if self.use_res:
return x + out