Ccmmutty logo
Commutty IT
4 min read

[YOLO]YOLO v3についてまとめてみる

https://cdn.magicode.io/media/notebox/0089a97d-79f7-4e7d-8342-08e7c38b2a32.jpeg

はじめに

最近、物体検出でYOLO v3を使う機会があったので少し解説してみる。

1. YOLO v3

YOLO v3 (You Only Look Once version 3)は、物体検出アルゴリズムの一種であり、深層学習のアーキテクチャであるConvolutional Neural Networks (CNN)を使用して、画像中の物体を検出することができる。

2. 特徴

  1. リアルタイムで高速な物体検出: YOLO v3は、リアルタイムで高速な物体検出を実現する。1つの画像に対して、わずかな時間で検出を行うことが可能である。
  2. 高い検出精度: YOLO v3は、従来の物体検出アルゴリズムよりも高い検出精度を実現する。これは、異なるスケールの物体を同時に検出することができるように改良されたアルゴリズムによるものである。
  3. 多様な物体カテゴリのサポート: YOLO v3は、80以上の異なる物体カテゴリをサポートしている。これは、より多様な画像データセットを使用してトレーニングされたことによるものである。
  4. Batch Normalizationの導入: YOLO v3では、Batch Normalizationと呼ばれる最新の深層学習技術が導入された。これにより、学習の安定性が向上し、より高い検出精度を実現できるようになった。
  5. Residual Connectionの導入: YOLO v3では、Residual Connectionと呼ばれる機能を導入。これにより、深いニューラルネットワークでも学習が安定し、高い精度を維持できるようになった。
  6. Feature Pyramid Networkの導入: YOLO v3では、Feature Pyramid Network (FPN)と呼ばれるアルゴリズムを導入。これにより、異なるスケールの物体を同時に検出できるようになり、より高い検出精度を実現できるようになった。

3. Batch Normalization

Batch Normalization(バッチ正規化)とは、深層ニューラルネットワークの学習を安定化させ、高速化するためのテクニックである。通常、ニューラルネットワークには多数の層が含まれており、各層の出力が次の層の入力として使用される。これらの出力は、学習中に大幅に変化することがあり、その変化が学習の進行を遅らせる原因になることがある。
Batch Normalizationでは、各層の出力に対して、その層の入力分布を正規化することで、この問題を解決する。具体的には、各バッチのデータを正規化し、平均を0、標準偏差を1にすることで、データのスケールを均一にする。このようにして、出力の分布を安定化し、学習を加速することができる。
また、Batch Normalizationは、過学習を防止する効果もある。過学習とは、学習データに過剰に適合してしまい、未知のデータに対して予測精度が低下する現象のことである。Batch Normalizationを使用することで、正則化の一種として働き、過学習を防止することができる。一般的に、Batch Normalizationは、ニューラルネットワークの各層の直前に適用される。このテクニックは、深層ニューラルネットワークに広く使用されており、様々なタスクで高い精度を発揮している。

4. Residual Connection

Residual Connection(残差接続)とは、深層ニューラルネットワークにおいて、スキップ接続としても知られる、層間に直接接続を追加するテクニックである。Residual Connectionを用いることで、ニューラルネットワークの学習を安定化させ、精度を向上させることができる。通常、深層ニューラルネットワークでは、層を積み重ねることで複雑なモデルを構築する。しかし、層を深く積み重ねると、勾配消失や爆発などの問題が生じることがある。これは、層が深くなるにつれて、前方の層から後方の層への情報伝播が弱まることが原因である。
残差ネットワークでは、各層での入力と出力の間にResidual Connectionを導入することで、勾配消失問題を緩和する。Residual Connectionは、ネットワーク内部にショートカットを作成し、直接的な経路を提供することで、勾配を容易に伝播させることができる。
具体的には、残差ネットワークの各ブロックでは、通常の畳み込み演算に加えて、2つの畳み込み演算の間にResidual Connectionを導入。このResidual Connectionは、入力をそのままブロックの出力に加算することで構成される。このようにすることで、出力はブロック内の演算の結果に加えて、直接的な経路を持つ入力を含むことができる。
YOLOv3のDarknet-53は、Residual Connectionを使用して、より深いニューラルネットワークを効果的に学習できるようにしている。また、Darknet-53は、多くの畳み込み層から構成されているため、Residual Connectionによって勾配消失問題が軽減され、学習が安定化される。
Darknet-53のResidual Connectionは、YOLOv3の検出ヘッドにも拡張されている。この検出ヘッドでは、様々なスケールの特徴マップから特徴を抽出し、畳み込み演算で処理する。Residual Connectionは、さらに特徴マップを統合する際にも使用される。これにより、より多くの特徴が維持され、より高精度な物体検出が可能になる。

5. Feature Pyramid Network

Feature Pyramid Network(FPN)は、物体検出において畳み込みニューラルネットワークのアーキテクチャを改良するために開発された手法の一つである。FPNは、検出器が異なるスケールの物体を検出することができるようにするために、畳み込みニューラルネットワークの出力を複数の異なる解像度の特徴マップに分割し、それらを統合することで、より優れた物体検出を実現する。
YOLOv3では、FPNが採用されており、物体検出の精度を向上させるために使用されている。FPNは、低解像度の特徴マップから高解像度の特徴マップを作成するために、畳み込み演算を用いたピラミッド構造を構築する。具体的には、YOLOv3のベースとなるDarknet-53モデルから、3つのスケールの畳み込み層を選択し、それぞれに対してピラミッド構造を構築する。これにより、異なる解像度の特徴マップを網羅することができる。低解像度の特徴マップは、より大きな物体を検出するために使用され、高解像度の特徴マップは、より小さな物体を検出するために使用される。そして、各特徴マップから、複数のアンカーボックスを使用して物体の検出を行う。
FPNは、異なるスケールの特徴マップを使用することで、より多くの物体を検出できるようになり、物体の位置とサイズをより正確に予測することができる。さらに、FPNは、畳み込み演算を使用するため、処理速度が速く、リアルタイムの物体検出に適している。

最後に

YOLO v3の改良点、特徴についてまとめた。今後、手が空いたら使用方法についてもまとめてみようかな。

Discussion

コメントにはログインが必要です。