Receptive Field
受容野がニューラルネットワークの見る範囲を定義する仕組みを説明します。Ultralytics YOLO26が空間コンテキストを最適化し、あらゆるサイズの物体を効果的に検出する方法を紹介します。
コンピュータビジョン (CV)とディープラーニングの分野では、受容野とは、ニューラルネットワーク (NN)内の特定のニューロンが「見て」分析する入力画像内の特定の領域を指します。概念的には、人間の目やカメラレンズの視野と同様に機能します。受容野によって、モデルが各レイヤーで認識できる空間的コンテキストの範囲が決まります。データが畳み込みニューラルネットワーク (CNN)を通過するにつれて、受容野は通常拡大し、エッジや角などの小さく局所的な詳細の識別から、物体全体やシーン全体のような複雑でグローバルな構造の理解へとシステムが移行できるようになります。
受容野の仕組み#
受容野のサイズと深さは、ネットワークのアーキテクチャによって決まります。初期レイヤーでは、ニューロンの受容野は通常小さく、微細なテクスチャを捉えるためにごく小さなピクセルの集まりに焦点を合わせます。ネットワークが深くなるにつれて、プーリングレイヤーやストライド付き畳み込みなどの処理によって、特徴マップが効果的にダウンサンプリングされます。この処理により、後続のニューロンは元の入力のより広い範囲から情報を集約できるようになります。
最先端のアーキテクチャであるUltralytics YOLO26を含め、最新のアーキテクチャは、これらの受容野のバランスを綿密に調整するよう設計されています。受容野が狭すぎると、モデルは物体全体の形状を認識できず、大きな物体の識別に失敗する可能性があります。一方、解像度を維持せずに受容野が広すぎると、モデルは小さな物体を見落とす可能性があります。これに対処するため、エンジニアは拡張畳み込み(アトラス畳み込みとも呼ばれます)を使用して、空間解像度を低下させずに受容野を拡大することがあります。これは、セマンティックセグメンテーションのような高精度タスクに不可欠な技術です。
実世界での利用例#
受容野の最適化は、さまざまなAIソリューションを成功させるうえで重要です。
- 自動運転: 自動車向けAIでは、認識システムが微細な詳細と大きな障害物を同時に追跡する必要があります。車両は、遠くにある信号機を識別するために小さな受容野を必要とする一方、近くを走るトラックの軌道や車線のカーブを理解するために大きな受容野も同時に必要とします。このマルチスケール認識により、より優れたAI安全性と意思決定が実現します。
- 医療診断: ヘルスケアにおけるAIの適用では、放射線科医はスキャン画像から異常を見つけるためにモデルを活用します。脳腫瘍を識別するには、脳全体の対称性と構造を理解するために、ネットワークに大きな受容野が必要です。一方、マンモグラフィーで微小石灰化を検出する場合、モデルは、微妙なテクスチャの変化に敏感な小さな受容野を持つ初期レイヤーに依存します。
関連する概念との違い#
ネットワーク設計を十分に理解するには、受容野と類似する用語を区別すると役立ちます。
- 受容野とカーネルの違い: カーネル(またはフィルター)のサイズは、1回の畳み込み処理で使用するスライディングウィンドウ(例: 3x3)の寸法を定義します。受容野は、ニューロンに影響を与える入力領域の累積全体を表す、創発的な特性です。複数の3x3カーネルを積み重ねると、3x3よりもはるかに大きな受容野になります。
- 受容野と特徴マップの違い: 特徴マップはレイヤーが生成する出力ボリュームであり、学習された表現を含みます。受容野は、その特徴マップ上の1つの点と元の入力画像との関係を表します。
- 受容野とコンテキストウィンドウの違い: どちらの用語も認識されるデータの範囲を指しますが、「コンテキストウィンドウ」は通常、自然言語処理 (NLP)や動画分析で、時間的または連続的な範囲(例: トークン制限)を示すために使用されます。受容野は、グリッド状データ(画像)における空間領域のみを指します。
コードでの実践的な使用方法#
YOLO26のような最先端モデルでは、あらゆるサイズの物体に対して効果的な受容野を維持するために、特徴ピラミッドネットワーク (FPN)を利用します。次の例では、モデルを読み込み、これらの内部アーキテクチャ最適化を自動的に活用して物体検出を実行する方法を示します。最適化されたアーキテクチャで独自のモデルをトレーニングしたいユーザーは、シームレスなデータセット管理とクラウドトレーニングのためにUltralytics Platformを利用できます。
from ultralytics import YOLO
# Load the latest YOLO26 model with optimized multi-scale receptive fields
model = YOLO("yolo26n.pt")
# Run inference; the model aggregates features from various receptive field sizes
results = model("https://ultralytics.com/images/bus.jpg")
# Display the results, detecting both large (bus) and small (person) objects
results[0].show()








