Ultralytics YOLO27: ウェイトリストに登録する
YOLOのライセンス
Ultralytics用語集に戻る

Convolution

畳み込みでは、小さな重みカーネルを入力上でスライドさせて特徴マップを生成します。これはCNNの中核的な処理です。ストライド、パディング、各種バリエーションを解説します。

畳み込みとは、カーネルまたはフィルターと呼ばれる小さな重みのグリッドを入力上でスライドさせ、各位置で重み付き和を計算する演算です。コンピュータービジョン (CV)では、入力は画像または特徴マップのスタックであり、各カーネルは、垂直エッジ、テクスチャの一部、またはネットワークの深い層における車輪や顔の一部など、そのパターンが現れる位置で高い値を持つ出力マップを生成します。手作業で設計したカーネルは、ぼかし、シャープ化、エッジ検出などの画像処理に長く使われてきました。畳み込みニューラルネットワーク (CNN)では、カーネルの値は学習中に学習されるモデルの重みであるため、ネットワークが独自の特徴検出器を見つけます。

畳み込みの仕組み#

各位置では、カーネルを入力のパッチに重ね、各カーネル重みにその下の入力値を掛け合わせ、積を合計し、バイアスを加えて1つの出力値を得ます。カーネルを高さと幅全体に移動させると、2次元の出力マップが生成されます。実際の入力には複数のチャンネルがあり、画像なら赤、緑、青のチャンネルが含まれるため、各カーネルはすべての入力チャンネルにまたがります。64チャンネル入力に対する3×3カーネルは3 × 3 × 64 = 576個の重みを持ち、それでも出力チャンネルは1つです。畳み込み層はこのようなカーネルを多数適用し、カーネル数によって出力チャンネル数が決まります。そのため、3×3カーネルを使って64チャンネルから128チャンネルに変換する層には、3 × 3 × 64 × 128 = 73,728個の重みがあります。

同じカーネルがすべての位置で再利用されるため、畳み込み層は全結合層よりもパラメーター数が大幅に少なく、画像の一角で学習したパターンを他の場所でも認識できます。入力をずらすと出力も同じ量だけずれます。この性質を並進同変性と呼びます。各出力値が依存するのは入力の小さな近傍領域だけですが、層を重ねることで、深い層の出力値が要約する受容野が数ピクセルから画像の大部分まで広がります。

ディープラーニングライブラリが実際に計算するのは相互相関です。数学的な畳み込みではスライドする前にカーネルを反転させますが、PyTorchのConv2dでは反転させません。カーネルは学習されるため、ネットワークが反転した重みを学習するだけであり、実用上は両者を互換的に使えます。cuDNNなどのGPUライブラリは通常、畳み込みを大規模な行列積として再構成するか、WinogradやFFTベースのアルゴリズムを使って、カーネルをそのままスライドさせるより高速に同じ結果を計算します。

ストライド、パディング、ディレーション、グループ#

4つのハイパーパラメーターが、畳み込みの出力形状と計算コストを決定します。

  • ストライド: カーネル位置間の移動幅です。ストライド2では1つおきの位置をスキップし、出力の高さと幅が半分になります。これは多くの現代的なCNNがダウンサンプリングを行う方法です。
  • パディング: 入力の境界の周囲に追加する値で、通常はゼロです。パディング1を指定すると、ストライド1での3×3畳み込みの出力サイズは入力と同じになります。
  • ディレーション: カーネルの要素間に間隔を設けます。ディレーション2の3×3カーネルは、同じ9個の重みで5×5の範囲をカバーし、追加コストなしで受容野を広げます。
  • グループ: チャンネルを独立したグループに分割します。チャンネルごとに1グループを割り当てると、深度方向畳み込みが各チャンネルを個別にフィルタリングし、その後の1×1ポイントワイズ畳み込みがチャンネルを混合します。この組み合わせを深度方向分離可能畳み込みと呼び、MobileNetsがモバイルハードウェア向けに普及させました。

サイズnの入力、カーネルサイズk、パディングp、ストライドs、ディレーションdの場合、出力サイズは⌊(n + 2p − d(k − 1) − 1) / s⌋ + 1です。以下のコード例では、64チャンネル、80×80の特徴マップを128チャンネルに変換する4つの層を適用します。

import torch
from torch import nn

x = torch.randn(1, 64, 80, 80)  # a 64-channel, 80x80 feature map

# Four ways to map 64 input channels to 128 output channels
layers = {
    "standard 3x3": nn.Conv2d(64, 128, kernel_size=3, padding=1, bias=False),
    "stride 2": nn.Conv2d(64, 128, kernel_size=3, stride=2, padding=1, bias=False),
    "dilation 2": nn.Conv2d(64, 128, kernel_size=3, padding=2, dilation=2, bias=False),
    "depthwise separable": nn.Sequential(
        nn.Conv2d(64, 64, kernel_size=3, padding=1, groups=64, bias=False),  # one 3x3 filter per channel
        nn.Conv2d(64, 128, kernel_size=1, bias=False),  # 1x1 convolution mixes channels
    ),
}
for name, layer in layers.items():
    params = sum(p.numel() for p in layer.parameters())
    print(f"{name}: output {tuple(layer(x).shape)}, {params:,} weights")

標準層は(1, 128, 80, 80)を出力し、重みは73,728個です。ストライド2では、重み数は同じまま出力が(1, 128, 40, 40)に半減します。ディレーション2では80×80と73,728個の重みを維持しつつ、各出力が5×5の範囲を参照します。深度方向分離可能畳み込みの組み合わせでは、重みを8,768個に抑えながら同じ(1, 128, 80, 80)を出力し、約8.4分の1になります。YOLO26は両方の考え方を採用しています。ストライド2の3×3畳み込みを5回適用して640×640の画像を、最深部のバックボーン特徴マップである20×20のグリッドに縮小し、検出ヘッドの分類ブランチでは深度方向3×3畳み込みとポイントワイズ1×1畳み込みを組み合わせて計算量を削減します。

異なる次元における畳み込み#

  • 1D畳み込み: 単一の軸に沿ってスライドし、音声波形、センサー信号、時系列データに使います。
  • 3D畳み込み: 深度軸または時間軸を加え、動画クリップや、医用画像解析で使われるCTやMRIなどのボリュームスキャンに対応します。
  • 転置畳み込み: 各入力値をより大きな出力領域に広げ、U-Netなどのセグメンテーションモデルで特徴マップをアップサンプリングします。独自に学習した重みを使い、ストライド付き畳み込みで縮小された空間サイズを復元します。
  • 全結合層: 独自の重みを使って、すべての入力をすべての出力に接続します。畳み込みは、局所近傍に制限され、位置間で重みを共有する全結合層です。
  • プーリング: 畳み込みと同様にウィンドウをスライドさせますが、最大値を取るなどの固定ルールを適用し、学習可能な重みは使いません。
  • 自己注意機構: 位置のすべてのペア間にデータ依存の重みを計算するため、1つの層で画像の離れた部分同士を関連付けられます。畳み込みはどこでも同じ固定カーネルを適用し、局所ウィンドウのみを参照するため、ピクセル数に対する計算コストが線形に抑えられます。
  • 画像フィルタリング: ガウシアンぼかしやSobelエッジ検出器などの従来型フィルターは、固定の手作業で設計したカーネルを使う畳み込みです。OpenCVのfilter2Dもディープラーニングライブラリと同様に相互相関を計算し、カーネルを反転すると真の畳み込みになります。

ソリューションを見る

スポーツにおけるコンピュータービジョン

スポーツにおけるコンピュータービジョン

Ultralytics YOLOが、選手やボールの追跡、パフォーマンス分析、コーチングへの知見、アスリートのリハビリを通じて、スポーツビジョンをどのように支えるかをご紹介します。
詳しく見る
航空画像向けコンピュータービジョン

航空画像向けコンピュータービジョン

Ultralytics YOLOを使用して、ドローンや航空画像をリアルタイムの知見に変換し、農業、水産養殖、自然保護、地理空間分析に活用できます。
詳しく見る
航空宇宙分野のコンピュータービジョン

航空宇宙分野のコンピュータービジョン

Ultralytics YOLOを活用して航空宇宙分野でコンピュータビジョンを導入し、航空機検査、滑走路上のFOD検出、空港の地上業務、複合材の欠陥検出に活用できます。
詳しく見る
セキュリティ分野のコンピュータービジョン

セキュリティ分野のコンピュータービジョン

Ultralytics YOLOモデルであらゆる施設を保護しましょう。ビジョンAIは、周辺監視、脅威検知、ナンバープレート認識、職場の安全管理を支援します。
詳しく見る
ロボティクス分野のコンピュータービジョン

ロボティクス分野のコンピュータービジョン

Ultralytics YOLOモデルで、よりスマートなマシンを実現しましょう。ロボティクスにおけるビジョンAIは、自律ナビゲーション、認識、物体追跡、リアルタイム制御を支援します。
詳しく見る
物流におけるコンピュータービジョン

物流におけるコンピュータービジョン

Ultralytics YOLOモデルで物流を効率化しましょう。ビジョンAIにより、荷物検査、仕分け、車両追跡、倉庫のリアルタイム安全監視を実現します。
詳しく見る
小売業におけるコンピュータービジョン

小売業におけるコンピュータービジョン

Ultralytics YOLOモデルで小売のあり方を変革しましょう。ビジョンAIにより、在庫追跡、棚の監視、行列管理、より高度な顧客インサイトを実現します。
詳しく見る
医療分野におけるコンピュータービジョン

医療分野におけるコンピュータービジョン

Ultralytics YOLOモデルで医療ソリューションを構築しましょう。医療分野のビジョンAIは、医用画像処理の高速化、より高度な診断、患者モニタリングを実現します。
詳しく見る
製造業におけるコンピュータービジョン

製造業におけるコンピュータービジョン

Ultralytics YOLOモデルで製造を最適化しましょう。ビジョンAIは、品質管理、欠陥検出、PPE準拠、組立ラインの自動化を推進します。
詳しく見る
自動車分野におけるコンピュータービジョン

自動車分野におけるコンピュータービジョン

Ultralytics YOLOモデルで自動車分野にコンピュータービジョンを導入しましょう。ビジョンAIは、道路の安全性、運転支援、車両の自動化を向上させ、よりスマートな道路を実現します。
詳しく見る
農業におけるコンピュータービジョン

農業におけるコンピュータービジョン

Ultralytics YOLOモデルでスマート農業にビジョンAIを導入しましょう。作物のモニタリング、家畜の追跡、精密農業を支援し、より高く効率的な収量を実現します。
詳しく見る

AIの未来を一緒に築きましょう!

機械学習の未来に向けた歩みを始めましょう