YOLO v1, YOLO v2: 「1ステージ 物体検出CNN」の初期提案および改善

記事を共有する:

1. YOLO とは [概要]

YOLO (You Only Look Once) とは,CNNを用いた「アンカーベースの1ステージ型の物体検出」ネットワークの,最初の提案である.YOLO (v1)は,Faster R-CNN の2ステージの処理を,1ステージに統合したことで,リアルタイムCNN物体検出モデルを初めて実現した [Redmon et al., 2016].Faster R-CNN 同様に「中心点を基準としたバウンディングボックス表現」により検出物体領域を表す手法である.予測するデータ構造としては,各空間セルの中心位置 $(i,j)$ (アンカー)ごとに,セル内のバウンディンボックスの (位置の予測,Kクラス確率値,信頼度)を,1つのテンソルで全位置分まとめて出力する.

この記事では,YOLO v1 [Redmon et al., 2016] YOLO v2 [Redmon and Farhadi, 2017]について紹介する.その際に,YOLO 登場直前に最先端の手法であった「アンカーベース・2ステージ型」手法の Faster R-CNN [Ren et al., 2015] から,どのように YOLO v1 [Redmon et al., 2016] の「1ステージ型の物体検出CNN」の提案に結びついたかを紹介することで,YOLOについてもう少し深く理解できるようにしたい.

YOLO v1 の,大事な提案(新規性)は「完全畳み込みネットワーク(FCN)を用いて,画像全体から1ステージで,画像に映る全ての矩形を同時に予測する」という1ステージ型物体検出手法の1点に尽きる.これにより,各ステージの個別学習や,2ステージ前のROI Poolingによる中間処理以降の,R-CNN(Region-CNN)による提案領域ごとの個別の後半処理とちがい,画像全域のコンテキスト(=特徴)全てを用いて,画像上の全物体を予測できる一括の処理となったことが,1ステージ化の利点である.

また,YOLO v2 [Redmon and Farhadi, 2016] では Faster R-CNNアンカーボックスの仕組みなど,当時の最先端の技術を盛り込み,YOLO v1 [Redmon et al., 2016]直後に登場した SSD(Single Shot object Detector) [Liu et al. 2016] を超えて,YOLO v2が定番的な方法を確立した(3節).

個別の物体領域抽出を一旦行うことはせず,1ステージで一気に出力予測する手法は,同時期にセマンティックセグメンテーションCNNや,bottom-up型の人物姿勢推定向けCNN(OpenPoseなど)でも同時研究されていた設計戦略と同じである.一方で,インスタンスセグメンテーションではMask R-CNNや,Top-down型の人物姿勢推定CNNでは,2ステージ型手法が有利とみなされよく研究された.

ただし,この記事では述べないが,Associative Embedding, CenterNet・FCOS などの登場と定番化以降は,「アンカーフリーの1ステージ型ネットワーク」が,TransformerやDETR登場までは,優勢になっていく.

1.1 記事の構成

以降は,以下の構成で,YOLO v1 (2節)とYOLO v2 (3節)の内容について紹介する.また, YOLO v3については,概要と作者メッセージについてのみ述べる(4節).

  • 1節
    • 1.2 YOLO v1 の概要
    • 1.3 登場前夜の状況と貢献点
    • 1.4 YOLO(v2)と,深層学習以前の検出モデルとの違い.
  • 2節 YOLO v1 : 初のリアルタイム1ステージ手法
  • 3節 YOLO v2
  • 4節 YOLO v3 と作者の引退
  • 5節 まとめ

1.2 YOLO v1 の概要

YOLO v1 の処理
図1. YOLO v1 の処理

YOLO v1 (図1)では,元画像上に位置合わせした特徴マップ上の [S × S] サイズの空間グリッド上で,各セル$(i,j)$の中心座標$(c_x^i, c_y^j)$に対して,物体バウンディングボックスのパラメータ$(c_x, c_y,w,h)$とその信頼度を,B個予測する.デフォルトではB = 2個).グリッドを構成する正方形をセル(cell)と呼び,セル中心に対するバウンディングボックス中心のズレ量$(c_x, c_y)$と,バウンディングボックスの幅・高さ$(w,h)$を予測する(図1-中上図).一方,物体クラスの確率の条件付き確率値が,クラス数=Nc (=物体クラス数) 個だけ予測される(図1-中下図).その2つの出力を合わせて,NMSした結果が,最終的な「クラス識別された検出結果」として得られる(図1-右図).

さてFaster R-CNNでは,ステージごとに分離して予測していた以下の2種の値であるが,YOLO v1 では,1つのテンソル内に各チャンネルへ,いっぺんに予測する.そして2種の結果を,あとで「統合(かけ算)」して,最終出力にするという方式の「1ステージ型物体検出モデル」をYOLO v1 は提案した(2.3節にて,図つきで両者を比較):

  1. 各セルで,B個 ×「$(c_x, c_y, w, h)$ + 信頼度$p_{\text{conf}}$ 」を推定 (図1-中上図).
  2. 各セルで,Nc個 ×「 クラス確率 $ P(C_i | \text{Obj})$ 」を推定 (図1-中下図)

手順1で予測する「信頼度(confidence)」とは,$p_{\text{conf}} = P(\text{Obj}) \times \text{IoU}(\text{pred}, GT)$ のことである.

すなわち 「信頼度」=「オブジェクトネス(尤度)」× 「正解バウンディンボックスと予測バウンディンボックスの間で計算したIoU」である.よってこれが各セルの出力なので,学習中には,CNN特徴マップの各セル位置の特徴を元に,B個の(バウンディンボックスのズレ量 ,信頼度) が,全てのセルに対して学習されるというわけである.

手順2の計算で,クラス確率 $P(C_i | \text{Obj})$と信頼度$p_{\text{conf}}$の間で積を取ると,セルごとに「各BBoxのクラス」が確定し,最終出力として「バウンディングボックス + クラス (図1-右)」が出力される.

1.3 「YOLO登場前夜の状況」と「貢献点」

YOLO v1 [Redmon et al., 2016] 以前の時点では,アンカーボックスを前半ステージに用いて(特徴マップ上の)スライディングウィンドウを効率よく行う,2ステージ型の「Faster R-CNN」が登場していた.

一方,1ステージ手法としても,既にOverFeat [Sermanet et al., 2013] が,初代R-CNNと同じ時期に,1ステージ型の先駆者として提案されていた.しかし,OverFeatは,畳み込み範囲もスライディングウィンドウ窓内のローカル領域であり,入力コンテキスト範囲が十分広くないせいで,BBoxの回帰精度が微妙であった.また,アンカーボックスやselective searchによる2ステージ型が提案される以前の手法なので,全候補位置で密に検出処理を実施するため,計算効率性も良くなかった.

1.3.1 YOLO v1 の貢献:初のリアルタイム動作

そんな中,ワシントン大学の Ali Farhadi 教授(※)のラボの修士の学生であったJoseph Redmonを筆頭とするチームから,YOLO v1が提案された(2節).1ステージ型手法を提案したうえで,その速度・検出精度の高さを初めて両立させ,リアルタイム処理化に成功した.YOLO v1 提案後すぐにSSDも登場し,1ステージ型手法に注目が集まる流れとなる.

※ Ali Farhadi氏は「画像認識とNLP」の組み合わせに,昔から取り組んでいる先駆者の1人である.近年でも Allen Institute for AI との,ビジョンやVision-Langaugeにおける先端的研究の成果が目立つ.YOLOの研究は当時大跳ねしたものの,物体検出はFarhadi氏の本流ではないので,担当学生から突如出たように見える研究がYOLOであると個人的には思う.

1.3.2 YOLO v2

また,SSDの登場後すぐに,YOLO v1の改善版 YOLO v2 が,同じ主著者により提案された [Redmon et al., 2017](3節).

YOLO v2 では,(SSDと同じように)「Faster R-CNNアンカーボックス(の3.1 節を参照)」を導入するなど,YOLO v1 に3つの改善(3.1節~3.3節)を盛り込むことで,当時(2017年)の最も優秀な物体検出器となった.

貢献(1): COCOでも良い性能を示し,初めて良いレベルのリアルタイム検出器を実現.

そして,YOLO v1 はPASCAL VOC 2007 (20クラス.物体の重なりの多様性も少ない)での実験結果だけだったのに対して,当時登場したところの「 COCO データセット(80クラス,物体の写りや重なりの多様性も多い)」からYOLO v2 は学習する実験が行われた.

これによりYOLO v2で,汎用性の高いリアルタイム検出器を初めてCV業界が手に入れることになった.

※ YOLO v1 の検出精度は「それほど」であり,SSDの 検出精度はもう少しよくなって「まあまあ」というレベルであった.

貢献(2): YOLO 9000 による大規模クラス数の識別の実現.

また,YOLO v2の論文では,ImageNetの力を借りることで,大規模な9000クラスに対して,物体検出器を学習する YOLO 9000 も提案された.Pascal VOC(20クラス)や,COCO(80クラス)よりも,多くのクラスを検出できる物体検出器を学習したいが,物体検出の学習を行うにはラベル付けや画像収集のコストが高い.

そこでYOLO 9000では,そうしたクラス数の少ない物体検出データセットに,クラス数が膨大ImageNetの意味木(word tree)を混ぜ込むことで,低ラベル付コストで,大規模クラス検出モデルを学習できるようにした.検出精度こそ mAP = 19.7 %で微妙であったが,その初めての問題提案のおかげで,その後は大多数クラス数を学習対象とした問題であるロングテール物体検出や,ロングテールのインスタンスセグメンテーションへの注目が高まる契機にもつながった初期提案であったともみなせる.

1.4 YOLO (v2)と,深層学習以前の検出モデルとの違い.

以下の動画は,そのYOLO v2をCOCOデータセットで学習したモデルの,車載前方動画での実施例である:

深層学習流行前の2010年 の最先端モデルであった「Integral Channel Features(ICF) (単一クラス物体検出モデルの1種)」 では,上のYOLO v2 結果動画のような「ほぼ全てのフレームで見逃さないで検出」することはできなかった.ICFまでは,モデルが苦手なスケールや視点方向で映る物体は,うまく検出できないで未検出もまだ多いのが弱点であった.

それが,YOLO v2 (やSSDFaster R-CNN)では,様々なスケールや視点で映る物体も,学習できていることで,初めて色んなパターンで移っても検出できるまでに進歩したつまり,YOLOなどのCNN物体検出手法は,Pascal VOCやCOCOなどの,「多くの物体クラスの,色んな多様な写り方」を全部学習できるようになったわけである.この点が,深層学習以前の単一クラス物体検出モデルと比較した際の,一番のパラダイムシフトである.

旧来の単一クラス物体検出モデルでは,正面向きで窓の固定サイズに合う対象はうまく検出できやすいが,斜め視点で映っている自動車はその仮定に合わず検出が苦手であった.また,DPM(Deformable Part Models)でも,パーツモデル表現で物体検出精度は向上したものの,計算速度がまだ遅すぎるリアルタイムには遠かった.

それが,YOLO v2, SSD や RPN(= Faster R-CNN 前半ステージ)は,物体間の遮蔽具合の画像特徴や,隣り合うクラスの頻度も学習できるようになり,なおかつリアルタイム処理化できるようになっていったのが一番の進歩である.その初期CNN物体検出手法は,一旦,YOLO v2 (3節)の登場で,精度がある程度実用レベルになり,まず大きな区切りがついた.(その後の話は物体検出の記事の,まとめの4節を参照)

2. YOLO v1 : 初のリアルタイム 物体検出ネットワーク

前年に登場していた Faster R-CNN(2ステージ型)の仕組みをそのまま踏襲し,それを1ステージに統合してシンプルにした物体検出手法がYOLOである.2節では「Faster R-CNNとYOLOの違い」(2.1節)を先に把握してもらった上で,YOLOの処理・仕組みについて紹介する(2.2節).

2.1 Faster R-CNN の2ステージを1つに統合

YOLO v1 の「各セル位置で,B個の複数バウンディングボックスを推定」という方式は, 領域提案ネットワーク(RPN)を,複数クラス向けに変更したものといえる.YOLOでは,LeNetVGGNetスタイルの,24層の畳み込み層と2層の全結合層から構成されるCNNバックボーンが使用された.2ステージ型とは違い,この1つのCNNをend-to-end学習できる点が,1ステージ型のメリットである.

2.2 YOLO v1 の処理

図1 YOLO v1 (再掲)
図1(再掲) YOLO v1

YOLO v1のCNNは,上記の出力全てを含めた [S × S ] ×(5 × B + Nc)次元のテンソルを,予測結果として出力する (図1 – 中央).図1の例の場合, S = 7, B = 2, Nc = 20クラスであるため,合計 [7 × 7] × 30 次元のテンソルを出力する(詳細は2.2節).出力テンソル上の各グリッド位置 $(i,j)$ では,それぞれB個のボックスが出力される(図1-中央では,信頼度(confidence)値が高いほど,予測バウンディンボックス結果が太く可視化されている).

後処理として,NMS(非極大値抑制)を用いて,信頼度の高いバウンディングボックスのみを残すことで,最終的な出力が得られる(図1-右).

2.3 YOLO v1, v2 と Faster R-CNNの比較

Faster R-CNN と YOLO v1, v2の違い

YOLO v1 は,以下の点で「Faster R-CNNを1ステージに統合したもの」とみなすと,すんなり理解しやすい(図2):

  • 2ステージに分けて予測していた値を,グリッド上の各セル位置 (i,j)で,統合して予測:
    • ステージ1 の RPNで予測していた信頼度$p_conf$は,統合されたYOLO CNN内で予測.
    • ステージ2のFast R-CNNが担当していたsoftmax出力のクラス識別確率$(c_1, c_2,\ldots, c_N)$も,1つの統合されたCNNで直接予測(Nはクラス数).
    • セルサイズ=アンカーボックスサイズである.各セルで2個ボックスを予測する(各セルから2物体領域まで検出できる)

YOLO v1 は [S × S] × (5 × B + Nc) 次元の(3階の)テンソル上を出力し,その,各セル位置 $(i,j)$で,以下の(5 × B + Nc)個次元の値を予測する:

\[
\bm{y}_{(i,j)} = ( \underbrace{ p_{obj}, c_x, c_y, w, h, \ldots,p_{obj}, c_x, c_y, w,h}_{\text{バウンディンボックス × B個}} , p_1, p_2, \ldots, p_{N_c})
\]

よって,CNNが出力するテンソルは空間方向はS× Sで,チャンネル数が(5×B)+Nc のテンソルを出力する.

2.4. YOLO v1の学習

YOLOの学習では,ImageNet1000クラスの識別により,CNNをまず事前学習をしておく.そして,次に述べる損失関数を用いて,CNNを学習(fine-turning)する.

2.4.1 損失関数

YOLOでは,「(1)バウンディンボックスの損失」+「(2)信頼度の損失」+「(3)クラス識別損失(交差エントロピー)」の3つを重みづけした合成損失により,CNNを学習する:

\[
\mathcal{L}_{YOLOv1}= \mathcal{L}_{BB} + \lambda_1 \mathcal{L}_{conf} +\lambda_2 \mathcal{L}_{CE}
\]

2.5 YOLO v1 時点での短所

論文中,YOLO v1については,以下のような弱点が議論されていた:

  • セルごとに2個のBBoxを予測するが,クラス予測は1つ/セルなので,2個のBBoxのクラスは別のクラスに区別できない.
  • (スキップ接続FPNがまだない)ナイーヴなCNN設計なので,出力の特徴マップ([7 × 7] × 30)が知っている情報は,大きな物体の抽象化された情報で,小さな物体の検出に弱い
  • 再現率(recall)が良くない.
  • 隣り合って密に映る物体群の検出に弱い.
  • リアルタイム性は達成できたが,シンプルな仕組みの初期提案なので,mAPではFaster R-CNNに少し劣る.

※ これらの点,YOLOに限らず,当時の「初期の物体検出CNN」共通の課題であった.その後に,各問題がどのように取り組まれていくかは,親記事の「物体検出(Object Detection)」の最後に触れているので,ご覧頂きたい.

また,論文中では議論されてはいないが,YOLO v1 は COCOデータセット登場前の研究である点も,欠点(というか前時代的なデータでの研究)である.PASCAL VOC2007やVOC2012で学習している研究であり,まだ多くの物体の,クラス内での多様な見え方(Appearance)の変化に,対応(=学習)できているモデルではなかった「汎化性能が低く実用向きではなかった」のも,課題の1つだと言える.別の実験として,有名絵画から構成される「ピカソデータセット」を用いて,R-CNN,Poselet, DPMなどともYOLO v1 の性能を比較しているが,これも汎化性能を見るためのデータセットではない.あくまで旧来手法と比べられるから実験しただけである.

そのような「1ステージ型の最初の提案で,まだナイーヴだった」YOLO v1と比べると,YOLO v2 (3節)は,COCOでの実験結果での性能評価も良いものを残しており,汎用性の高さが確認できているネットワークであると言える.

3. YOLO v2

YOLO v2 の論文 “YOLO9000: Better, Faster, Stronger. ” [Redmon and Farhadi, 2017] は,CVPR2017 の Best Paper Honorable Mention を受賞した研究である.ダフトパンクの”Harder, Better, Faster, Stronger”の曲名をもじった論文名であり,そのうち論文タイトルに入れた3点「Better (2節), Faster (3節 DarkNet-19 バックボーンの提案), Stronger (4節 YOLO9000)」において,YOLO v1からの改善を示した研究である.

改善論文であるため,論文の内容は,実験日記のように「これをやってみた.でも,一部だめだったので,こう改善した」という,レポートのような事実・結果の羅列中心になっている(特に2節).各サブセクションの内容に沿った階層化がなされていないので,少し全体の流れがつかみづらい論文構成(=節の番号割り)であるので,順に読み終えていかないと,内容がつかめない.

3.1 [Better]

3.1節では,論文中の2節「Better」での各改善項目についてまとめたい.

3.1.1 高解像度での事前学習

ImageNetの解像度での写り具合とのギャップを埋めるために,YOLO v2では,以下の2段階手順で事前学習を行い,高解像度にも慣れた上での物体検出へのfine-tuningすることを提案した:

処理手順

  1. DarkNetを(224 × 224)入力サイズの画像群で,ImageNet事前学習する.
  2. 手順1で事前学習したDarkNetを,ImageNetを (448 × 448)にリサイズした画像群から,10 epochだけ学習する.
  3. 最後に,(448 x 448) 入力画像サイズの物体検出データセットで,物体検出用にファイン・チューニングして終了.

3.1.2 「アンカーボックス群」を導入 + それらのサイズもk-meansで学習.

YOLO v1では,グリッド上の「セル」矩形からバウンディンボックスを回帰していた.つまり,各セル=アンカーボックスであり,アンカーボックスは1サイズしか用意しなかった.

それを,YOLO v2では,アンカーボックスを導入した.また,Pascal VOCとCOCOデータセットの正解BBox群から,k-meansクラスタリング(k=5~9程度)することにより,教師なしでデータ・ドリブンに準備するよう変更した.

k-meansの誤差関数をIoUベースに変更

しかし,BBoxパラメータの4次元ベクトルから,ユークリッド距離を誤差関数に用いて普通にk-meansすると,良いスタートポイントとなるアンカーボックスのPriorになってくれない.大きなボックスほど,大きな誤差値になってしまい,ボックスの大中小に添わないことが理由である.

そこで,k-meansの誤差関数として,代わりに,以下の誤差関数distを用いるようにした.

\[
\text{dist}(x,c_i) = 1 – IoU(box,c_i)
\]

ここで,$x$ は正解のBBox候補であり,$c_i$ はk-meansのcentroidである.

この誤差関数の使用により,上記の問題を回避でき,なおかつ「IoUの値にしたがったクラスタリング」を通じて,アンカーボックス群をPriorとして用意できるようになった.

3.1.3 YOLO v2でのBBox値の工夫

素直に1ステージ化しただけだと学習が困難

Faster R-CNN のRPNが推定するBBoxのパラメータ $(t_x,t_y,t_w,t_h)$ は,「オフセット(アンカーからの修正量)」を推定していた:

\begin{align}
x = (t_x \times w_a) – x_a \\
y= (t_y \times w_b) – y_a
\end{align}

しかしパラメータは制約なし(unconstrained)であり,いくらでも平行移動できたり,いくらでも幅高さも拡大・縮小できる.これをそのままYOLOに採用し,アンカーボックスからいきなりこの値を回帰しようとすると,回帰値の制約がないので,初期のiteration中に発散してしまい,学習が不安定になってしまう傾向があった.

Faster R-CNN 2ステージ目だと,領域提案からの(少量の)オフセット量を学習するので,うまく収束しやすい

オフセット量ではなく直接値を推定.
YOLOの制約ありバウンディンボックス回帰
図4. YOLOの「制約ありバウンディンボックス回帰」

そこで,YOLO v2 では,YOLO v1のように『グリッド矩形からの相対位置として,アンカーボックスPriorから,正解バウンディンボックスを回帰する』という「制約ありパラメータ化」を採用した(図4).

YOLO v1ではグリッドのセルをアンカーボックスとみなして,そこに対してオフセットを回帰させていた.それに対して YOLO v2では,アンカーボックスのPriorサイズ(3.3節)である$p_w, p_h$を回帰元に用いる.また,「制約あり」設定にするために,シグモイド関数を用いて「制約ありのパラメータ化」を行い,$t_x,t_y$ が [0, 1] の範囲に収まるよう正規化するようにした.

YOLO v2では,予測バウンディンボックスのパラメータ4つ $(t_x,t_y,t_w,t_h)$ とオブジェクトネス $t_o$ の,計5パラメータを,DarkNetの順伝搬により,全セル位置の全アンカーに対して出力しておく.ここで,グリッドの各セルの幅と高さを $w_h, h_c$ としたとき,出力テンソルから得られる $(t_x,t_y,t_w,t_h, t_o)$ をもとに,以下のように「正規化で制約ありの」BBox値 $(b_x,b_y,b_w,b_h)$ を出力する (図4):

\begin{align}
b_x = \sigma(t_x) + w_{c} \text{正規化された物体BBox中心のx座標} \\
b_y = \sigma(t_y) + h_{c} \text{正規化された物体BBox中心のy座標}\\
b_w = p_w \exp(t_w) \text{正規化されたBBoxのwidth}\\
b_h = p_h \exp(t_h)  \text{正規化されたBBoxのheight}\\
p_{obj} = \sigma(t_o)
\end{align}

この「制約つきパラメータ化」により,BBox値の出力範囲が狭くできるので,安定した学習が達成できるようになった.

3.1.4 細粒特徴のスキップ接続使用

YOLO v2のCNNバックボーンであるDarkNet-19 (3.2節)では,中盤のすこし粒度の高い(=fine-grainedな)特徴を,終盤層にショートカットさせて活用するため,ResNet残差接続と同じように,恒等写像をスキップ接続して,中盤の特徴マップも終盤の特徴マップに加算して予測に使用することを提案した.具体的には5ブロック目後の特徴マップを,8ブロック目(最終層的な畳み込み層)の入力へと「スキップ接続後に加算」する.

3.1.5 複数入力画像スケールでの学習

YOLO v2では,新たにCOCOデータセットで実験を行い,一般の多様なスケールで映る物体には対応できるようにするために,画像スケール拡大縮小によるデータ拡張も,実施する改善を提案した.

YOLO v2では,DarkNetがFCN化しているのもあり,{ 302 × 302, 234 × 224 ,…, 608 × 608}と,異なるサイズに入力画像をリサイズしたものから,ランダムに選んだ画像でDarkNetを学習した.

※ 既に述べたように, 1ステージ型は,全グリッド位置の結果を画像入力の全体(グローバル)に対して,いっぺんに全アンカー(セル)位置の全K個のアンカーボックスで予測(学習)する点に注意したい.それと異なり,2ステージ型のR-CNNシリーズでは,領域提案ネットワークで領域提案ROIのローカル領域のみの問題に落とし込んでいた (ただし,2ステージ型も,前半のRPNまでは,画像全体のグローバルな検出器学習である).

3.2 [Faster]: 軽量なDarkNetバックボーンの提案

3.2節では,論文中3章の「Faster」で述べられている改善点についてまとめたい.

3.2.1 DarkNetバックボーン:YOLO v1 からのアーキテクチャの変更

YOLO v1 で使用していた「Inception v1をアレンジしたCNNバックーン」は,1 × 1畳み込みにをほどほどに使うことで,高速計算が可能な軽量なCNNアーキテクチャであるものの,ImageNet事前学習での識別精度は,VGG-16に少し劣っていた.よってYOLO v2では,より大きく深くして認識精度向上できる上に,変わらず高速に動作可能な,軽量CNNバックボーンが欲しかった.

そこで,DarkNet-19 を,YOLO v2で使うための,ImageNet向けのクラス識別CNNバックボーンとして提案した.YOLO v1 CNNから,終盤の全結合層2つを除外し,最終層をグローバル平均プーリング層に替えたアーキテクチャである.また,DarkNet-19では,YOLO v1 時には提案されていなかった バッチ正規化を追加している.これにより学習の安定度・速度が向上している.更に,YOLO v1 CNNから,プーリング層を1つ減らしており,グリッドの [S × S]は,[7 x 7] (YOLO v1) から [13 × 13] (YOLO v2)に変更されている.更に,5ブロック目から8ブロック手前の間を,スキップ接続を用いてそれらを接続+結合し,中間層のfine-grained特徴も,予測に使用できる(3.1.4節).

事前学習後に,最後のグローバル平均プーリング層を分離した DarkNet-19では,最終出力において,各5個のBBoxを VOC 20クラス向けに出力し,各セル位置に合計(1+4+ 20クラス) × 5アンカー = 計125チャンネルのマップを出力する.

※ Redmon氏は,悪げなくDarkNetという命名を行っていると共に,黒魔術的な魔方陣シンボルもDarkNetのホームーページに掲載していた.しかし,黒魔術や悪魔崇拝などの呪術は,カルト的内容であり,素人や子供が安易に興味を持つと非常に良くない.

3.3 [Stronger]: 9000クラスへの対応

論文中4節 [Stronger]では,これまでのYOLOv2をベースに,(1) COCO detectionデータセットと,(2) ImageNetの上位9000クラスの2つのデータセットの合体から,「9000クラス検出モデル」のYOLO9000を学習することも提案した.物体検出用のラベル付け作業はコストが高いので,「画像認識用のデータセットを有効活用して,たやすく大規模クラス検出器も作れるようにしたい」というのが,検出データセットと認識データセットの同時使用を提案した著者の主動機である.

その目的のために,YOLO9000は,ImageNet全体の22Kクラスを,WordNetの参照をもとに,COCOなど物体クラスラベルと同居する「WordTree」構造へと,階層的に再ラベルづけを行った.

このWordTreeの構築により,(ラベルを媒介して)検出と識別のデータセットを混ぜ合わて行き来することができるようになった.これにより,例えば COCOでは「airplane」クラスとしかラベルがついてなかったものが「bigplane」「jet」「aribus」などfine-grainedなImageNetの名前でクラス識別できるようになり,低コスト(部分的なsupervision)で,9000クラスの大規模データセットを学習できるようになった.

4. YOLO v3 と作者の引退 (危険性の警鐘)

YOLOの作者Redmon氏は,YOLO v3 を発表したが,正直ページ数も少なく内容も手抜き気味な論文であり,詳細が論文中にはきちんと書かれていない(YOLO v3のモデルそのものについては,この記事では触れない)

参照リンクにも挙げた記事「キカベン – YOLOv3:精度は本当に良くなったのか?論文から読み解く改善の要点」で,分析なさっている方がいるとおり,Redomon氏は,Grantの出もとがDARPAであって,軍事転用への懸念がぬぐえなかっようで,論文中やTwitterで,当時その懸念をあらわすようになっていた.

また(憶測であるが)YOLO v2の時点である程度性能は飽和してしまい,アワードも受賞したことで,燃えつき症候群にでもなってしまい,Incremental な改善研究を続ける「実験的研究の日々」を通して,著者は精神のバランスを崩してしまったのかもしれない.YOLO v3はずばり「Incremental Improvement」と題名をつけているのがそう個人的に思っていた理由である.内容も,非常に短いページ数で,明らかにモチベーションが低下している.

物体検出の記事でも書いたように,Redmon氏は,その後,Computer Vision認識技術の発展による,軍事転用や監視社会進展への危険性を危惧し,ビジョンの研究者から引退するという判断をとり,CV研究業界から彼は姿を消した.もともと目立ちたがりやな人の印象で,内容よりは外見を気にした感じのプレゼンやHP・動画を出してきた彼であるので,この引退劇も,そういう劇場型のパーソナリティの表出であったかもしれないが(※ 2021年に,Redmon氏の博士論文は公開されている).

ただ,YOLOはその後も YOLO v4と後継モデルは引き継がれており,Redmon氏の「これ以上物体検出モデルをみだりに発展させるのは,社会的悪影響も大きいので辞めておいたほうがいい」という意志は,結局のところCV業界にはあまり伝わらずじまいである.われわれも「本当に役に立つ場面はどこなのか」「実はこれは世の中を悪くしてはいないか」とよく考えつつ,物体検出や認識技術をビジネス実用化していきたいところである.

5. YOLO のまとめ

この記事では,YOLO v1, YOLO v2 について紹介した.YOLO v1, YOLO v2は,「アンカーあり1ステージ物体検出CNN」のさきがけとなり,(同時期登場のSSDと一緒に)高速なリアルタイム物体検出をはじめて実現し,ビジョン業界に大きなインパクトを与えたモデルである.

しかし,著者は一方でその「悪用への危険性」にも気づくこととなり,本人は研究から身をひくことを決めて,YOLO v3を発表後に研究者を引退した.

関連書籍

References

  • [Liu et al. 2016] W. Liu, D. Anguelov, D. Erhan, C. Szegedy, S. Reed, Cheng-Yang Fu, and A. C. Berg. Ssd: Single shot multibox detector. In ECCV, 2016.
  • [Redmon et al., 2016] Redmon, J., Divvala, S., Girshick, R., & Farhadi, A. You only look once: Unified, real-time object detection. In CVPR, 2016.
  • [Redmon and Farhadi, 2016] J. Redmon and A. Farhadi. YOLO9000: Better, Faster, Stronger. In CVPR, 2017.
  • [Ren et al., 2015] Ren, S., He, K., Girshick, R., & Sun, J. (2015). Faster r-cnn: towards real-time object detection with region proposal networks. In NIPS, 2015.
  • [Sermanet et al., 2013] P. Sermanet, D. Eigen, X. Zhang, M. Mathieu, R. Fergus, and Y. LeCun. Overfeat: Integrated recognition, localization and detection using convolutional networks. CoRR, abs/1312.6229, 2013. 

参照外部リンク