Feature Maps
特徴マップがCNNの「目」としてどのように機能するか解説します。Ultralytics YOLO26がこれらの内部表現を使用してパターンを検出し、コンピュータビジョンを強化する仕組みを学びましょう。
フィーチャマップとは、畳み込みフィルタがニューラルネットワーク内の入力画像や前段のレイヤーを処理する際に生成される基本的な出力のことです。コンピュータビジョン (CV)の文脈において、これらのマップはデータの内部表現として機能し、モデルが認識するように学習したエッジ、テクスチャ、複雑な幾何学的形状などの特定のパターンを強調します。本質的に、フィーチャマップは畳み込みニューラルネットワーク (CNN)の「目」として機能し、生のピクセル値を意味のある抽象表現へと変換することで、物体検出や分類といったタスクを容易にします。
Link to this sectionフィーチャマップの仕組み#
フィーチャマップの生成は、畳み込みとして知られる数学的操作によって行われます。このプロセスでは、カーネルやフィルタと呼ばれる学習可能なパラメータを持つ小さな行列が、入力データ上をスライドします。すべての位置において、カーネルは要素ごとの乗算と加算を行い、その結果、出力グリッド内の単一の値が得られます。
- パターン活性化: 各フィルタは特定のフィーチャを探すように学習されます。フィルタが入力内でそのフィーチャに遭遇すると、フィーチャマップ内の結果値が高くなり、強い活性化を示します。
- 空間的階層: ディープラーニング (DL)のアーキテクチャでは、フィーチャマップは階層的に配置されています。初期のレイヤーはエッジ検出の線や曲線のような低レベルの詳細を検出するマップを生成します。より深いレイヤーでは、これらの単純なマップを組み合わせて、顔や車両といった複雑な物体の高レベルな表現を形成します。
- 次元の変化: データがネットワーク内を進行するにつれ、プーリングレイヤーのような操作は通常、フィーチャマップの空間次元(高さと幅)を削減し、深さ(チャネル数)を増加させます。このプロセスは次元削減と呼ばれ、モデルが正確なピクセル位置よりもフィーチャの存在に集中するのを助けます。
Link to this section実社会での応用#
フィーチャマップは現代のAIアプリケーションの心臓部であり、システムが人間のように視覚データを解釈することを可能にします。
- 医療診断: 医療画像解析において、モデルはフィーチャマップを使用してX線やMRIスキャンを処理します。初期のマップは骨の輪郭を強調する可能性がありますが、より深いマップは腫瘍や骨折などの異常を特定し、医療におけるAIのシナリオで医師を支援します。
- 自動航行: 自動運転車は、視覚センサーによって生成されるフィーチャマップに大きく依存しています。これらのマップにより、車両の車載コンピュータは車線、歩行者、交通標識をリアルタイムで区別できるようになり、これは自動運転車が安全に動作するために不可欠です。
Link to this sectionPythonでフィーチャマップを扱う#
フィーチャマップは内部構造ですが、アーキテクチャを設計する際にはその次元を理解することが重要です。以下のPyTorchの例では、単一の畳み込みレイヤーがどのように入力画像をフィーチャマップに変換するかを示しています。
import torch
import torch.nn as nn
# Define a convolution layer: 1 input channel, 1 output filter, 3x3 kernel
conv_layer = nn.Conv2d(in_channels=1, out_channels=1, kernel_size=3, bias=False)
# Create a random dummy image (Batch Size=1, Channels=1, Height=5, Width=5)
input_image = torch.randn(1, 1, 5, 5)
# Pass the image through the layer to generate the feature map
feature_map = conv_layer(input_image)
print(f"Input shape: {input_image.shape}")
# The output shape will be smaller (3x3) due to the kernel size and no padding
print(f"Feature Map shape: {feature_map.shape}")Link to this section関連概念の区別#
モデルトレーニング中に混乱を避けるため、類似の用語とフィーチャマップを区別しておくと便利です。
- フィーチャマップとフィルタの違い: フィルタ(またはカーネル)は画像をスキャンするために使用されるツールであり、モデルの重みを含みます。フィーチャマップはそのスキャンの結果です。フィルタを「レンズ」と考え、フィーチャマップはそのレンズを通して捉えられた「画像」と考えるとよいでしょう。
- フィーチャマップと埋め込み(Embedding)の違い: どちらもデータを表現しますが、フィーチャマップは通常、セマンティックセグメンテーションに適した空間構造(高さと幅)を保持します。対照的に、埋め込みは通常、平坦化された1次元ベクトルであり、意味的な意味は捉えますが空間的なレイアウトを破棄します。これらは類似検索タスクでよく使用されます。
- フィーチャマップと活性化(Activation)の違い: 活性化関数(ReLUなど)は、非線形性を導入するためにフィーチャマップ内の値に対して適用されます。マップは、この数学的操作の前と後の両方で存在します。
Link to this sectionUltralyticsモデルとの関連性#
YOLO26のような高度なアーキテクチャでは、フィーチャマップはモデルの「バックボーン」と「ヘッド」において極めて重要な役割を果たします。バックボーンはさまざまなスケールで特徴を抽出し(フィーチャピラミッド)、モデルが大小の物体を効果的に検出できるようにします。トレーニングにUltralytics Platformを活用するユーザーは、モデルがどのように機能するかを視覚化でき、精度や再現率といった指標を通じて、根本にあるフィーチャマップの有効性を間接的に観察できます。これらのマップを最適化するには、アノテーション付きデータセットでの広範なトレーニングが必要であり、多くの場合、事前学習済みモデルから新しいタスクへ知識を転送するためにフィーチャ抽出といった手法が利用されます。






