YOLO v1, v2 : アンカーベースの1ステージ物体検出CNNの元祖

1. YOLOとは [概要]

YOLO (You Only Look Once) とは,CNNを用いた「アンカーベースの1ステージ型の物体検出」の,最初の提案である.この記事では,YOLO v1YOLO v2 について,主に紹介する[Redmon et al., 2016], [Redmon and Farhadi, 2017].その際に,YOLO 登場直前に最先端の手法であった「アンカーベース・2ステージ型」手法の Faster R-CNN から,どのようにYOLOの1ステージ型の提案に結びついたかを紹介することで,読者がYOLOを理解しやすいようにする.

YOLOは,Faster R-CNNの2ステージの処理を,1ステージに統合したことで,リアルタイムCNN物体検出モデルを初めて実現した [Redmon et al., 2016].Faster R-CNN同様に「中心点を基準とした表現」により,検出物体のバウンディンボックスを表す手法の1つである.各空間セル$(i,j)$ごとに個別に,セル内のバウンディンボックス位置の予測と,そのボックスのKクラス確率値を,1つのテンソルとして全座標分を同時にCNNで予測する.

つまり,YOLOのような1ステージ型物体検出手法では,「画像中に映る複数の物体の検出結果を,全て同時に予測する」ことになるのがポイントである.

1.1 YOLO v1 の概要

図1 YOLO v1 の概要 (引用元: https://pjreddie.com/darknet/yolo/)

YOLO v1 (図1)では,元画像上に位置合わせした特徴マップ上の [S × S] サイズの空間グリッド上の各セル位置(i, j)において,セルの矩形を基準にした物体BBox矩形の回帰を,B個予測する(デフォルトではB = 2個 ).YOLOシリーズでは,空間グリッドを構成する最小単位の正方形をセル(cell)と呼ぶ.また,各セル位置(i ,j)で予測される2個のBBoxには,物体クラスのsoftmax確率(one-hot符号化ベクトル)も予測される.

各セル位置$(i,j)$において,Faster R-CNNではステージごとに分離して予測していた以下の2つの値を,いっぺんに1つのテンソルで予測し,それらの2つの結果をあとで「統合(かけ算)」して,最終出力とする1ステージ型検出モデルを提案した:

  1. 「バウンディンボックスの値$(t_x,t_y,t_w,t_h)$ +信頼度$p_{conf}$ (合計5つの値)」× B個分.(セルごとにB個,矩形を推定.)
  2. 「各セルの,クラス確率 Pr (Ci | Obj) 」× Nc個.(セルごとにクラス確率を推定)

ここで,1 で予測する「信頼度(confidence)」とは,$p_{\text{conf}} = P(\text{Obj}) \times \text{IoU}(pred, GT)$ のことで,すなわち 「オブジェクトネス(尤度)」× 「正解BBoxと予測BBoxの間のIoU」という積である.後処理のNMSの際に,クラス確率 $P(C_i | \text{Obj})$と信頼度$p_{\text{conf}}$の間で積を取ることにより,セルごとに「最終的な各BBoxのクラス」を確定させることができる.

冒頭でも述べたが,YOLOで大事な提案は「CNNで画像全体から1ステージで,全ての矩形を同時に予測する」という1点に尽きる.よって,全体もたって単純な処理手順で済むようになり,CNNで順伝搬したあと,結果のBBox群をNMSすれば終了である.全画素の予測値を,畳み込みで一気に求めていくのは,多くのセマンティックセグメンテーションや,bottom-up型の人物姿勢推定(OpenPoseなど)と,発想が同じである.

YOLO v1のCNNは,上記の出力全てを含めた [S × S ] ×(5 × B + Nc)次元のテンソルを予測出力する(図1-中央).図1 の例の場合, S = 13, B = 2, Nc = 20クラスで,合計 13 × 13 × 30次元のテンソルを出力する(詳細は2.2節).出力テンソル上の各グリッド位置$(i,j)$では,それぞれB個のボックスが出力される(図1-中央では,信頼度値が高いほど,予測バウンディンボックス結果が太く可視化されている).そして後処理として,非極大値抑制(NMS)を用いて,信頼度の高いバウンディンボックスのみを残すことで,最終的な出力が得られる(図1-右).

1.2 「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ステージ型が提案される以前の手法なので,全候補位置で密に検出処理を実施するため,計算効率性も良くなかった.

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

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

※ Ali Farhadiは,画像認識とNLPの組み合わせに昔から取り組いんでいる先駆者・先導者の1人である.近年でも Allen Institute for AI との,Computer VisionやVision and Languageにおける先端的な共同研究の成果が目立つ.よって,YOLOの研究が大跳ねしたものの,物体検出がFarhadi氏の本流ではない.画像キャプション生成の初期に活躍したり,近年ではYejin Choi氏の最先端NLP研究(文章中のcommon sense 認識など)を,Vision and Language 側へすぐ適用してみる役も果たしている.つまり,NLPにも強い,マルチモーダルな研究者である.

YOLO v2 貢献(1): COCOで,良い実験結果を示した.

また,SSDの登場後すぐに,YOLO v1の改善版 YOLO v2 が,同じ主著者により提案された [Redmon et al., 2017](3節).YOLO v2 では,SSDと同じように「RPNの アンカーボックス(Faster R-CNNの3.1 節を参照)」の発想を1ステージ型手法に持ち込んだ処理を提案し,YOLO v1 からの改善を多数盛り込むことで,YOLO v2 は2017年当時として最も優秀な物体検出器となった.

YOLO v1 はPASCAL VOC(20クラス.物体の重なりの多様性も少ない)での実験結果だけだったのが,当時登場したCOCO(80クラス,物体の写りや重なりの多様性も多い)からYOLO v2 は学習し,実験されたことで,汎用性の高いリアルタイム検出器を初めてCV業界が手に入れることになった.(YOLO v1 の検出精度は「それほど」で,SSDの検出精度は「まあまあ」であった).

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

また,YOLO v2の論文では,ImageNetの力を借りることで,大規模な9000クラスに対して,物体検出器を学習する YOLO 9000 も提案された.

VOC(20クラス)や,COCO(80クラス)よりも,多くのクラスを検出できる物体検出器を学習したいが,物体検出の学習を行うにはラベル付けや画像収集のコストが高い.よって,そうしたクラス数の少ない物体検出データセットに,クラス数が膨大なImageNetの意味木(word tree)を混ぜ込むことで,低ラベル付コストで,大規模クラス検出モデルを学習できるようにした.

YOLO 9000は,最初の試みであるので,検出精度こそ mAP = 19.7 %で微妙であったが,YOLO 9000による問題提案のおかげで,その後は大多数クラス数を学習対象とした問題であるロングテール物体検出や,ロングテールのインスタンスセグメンテーションへの注目が高まる契機にもつながった初期研究でだとみなすことができる.

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

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

CNN以前の最先端で,こういった車載前方動画向けに応用されていた「手作り特徴+Boostingによる高速物体検出モデル(例:Integral Channel Featuresなど)」では,この動画のように「ほぼ全てのフレームで見逃さないで検出する」ことができず,「モデルが苦手なスケールや視点方向で映る物体は検出できない」のが,その仕組みから来る弱点であった.それがYOLO v2(やSSDFaster R-CNN)は,様々なスケールや視点で映る物体も,学習できているので,どれもとりこぼさず検出できる.これが,CNN化による物体検出の1番の進歩である.

旧来の,HOG+SVM やICFなど「固定窓サイズで学習する物体検出モデル」では,正面後ろから見た際の物体は固定サイズに合うのでうまく検出できやすいが,斜め視点で映っている物体の検出が苦手であった.一方,DPMであれば,視点ごとにモデルを用意すればある程度検出できていたが,計算速度が遅すぎていた(旧来手法について,詳しくは物体検出の記事の2節に書いてある).

また,YOLO, SSD や RPN(= Faster R-CNNの前半ステージ)は,(既に述べたように)「画像内の物体間同士の関係性」を学習でき,画像中の全物体の位置とクラスを,いっぺんに推定する点が,CNN以前の手法と異なる.これにより,物体間の遮蔽具合の画像特徴や,隣り合うクラスの頻度も学習できるのが有利な点であり,旧来の「ローカルな検出枠ごとに個別に検出を実施する」ICFやDPMでは,実現できていなかった学習・推定方法である.

1.3 記事の構成

2節以降は,以下の構成で,YOLO v1 (2節)とYOLO v2 について紹介する.

  • 2節 YOLO v1 : 初のリアルタイム1ステージ手法
  • 3節 YOLO v2
  • 4節 YOLO v3 と作者の引退
  • 5節 まとめ

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個の複数バウンディングボックスを推定」という方式は,Faster R-CNNの前半ステージ 領域提案ネットワーク(RPN)を,複数クラス向けに変更したものである.

YOLOのCNNでは,LeNetVGGNetスタイルの,24層の畳み込み層と2層の全結合層から構成されるCNNバックボーンが使用された.2ステージ型とは違い,この1つのCNNをend-to-end学習できる点が,YOLO v1 などの1ステージ物体検出ネットワークのメリットである.

2.2 YOLO v1 の処理

Faster R-CNN と YOLO v1 v2の違い
図2 Faster R-CNN と YOLO v1 v2の違い

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

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

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

\[
\bm{y}_{(i,j)} = ( \underbrace{ p_{obj}, b_x, b_y, b_w,b_h \ldots,p_{obj}, b_x, b_y, b_w,b_h}_{\text{バウンディンボックス × B個}} , c_1, c_2,\ldots, c_{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の性能を比較しているが,これも汎化性能を見るためのデータセットではない.あくまで旧来手法と比べられるから実験しただけのことである).

そのような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を,ImageNetの 224×224サイズの画像群で事前学習.
  2. 1で事前学習したDarkNetを,ImageNetの448×448にリサイズした画像群から,10 epochだけ学習.
  3. 最後に,448 x 448 入力サイズの物体検出データセットで物体検出用にfine-tuning.

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

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

それを,YOLO v2では,アンカーボックスを導入した.また,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ではグリッドのセルをアンカーボックスとみなしてそこから回帰させていたが,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)$を出力する:

\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, 334×224 ,…, 608×608}と,異なるサイズに入力画像をリサイズしたものから,ランダムに選んだ画像でDarkNetを学習した.

※ 既に述べたように, 1ステージ型は,全グリッド位置の結果を画像入力の全体(グローバル)に対していっぺんに全セル位置・全アンカーボックスで予測(学習)する点に注意したい.2ステージ型のR-CNNでは,領域提案ネットワークで領域提案ROIのローカル領域のみの問題に分割統治で学習するが,1ステージ型は物体クラスごとに全てのスケールを学習しておき,更には画像全体でどこに何が映っているかをCNN全体で一気に学習する点が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 に変更 されている.更に,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, v2は,「アンカーあり1ステージ物体検出CNN」のさきがけとなり,(同時期登場のSSDと一緒に)高速なリアルタイム物体検出をはじめて実現し,ビジョン業界に大きなインパクトを与えたモデルである.しかし,著者は一方でその「悪用への危険性」にも気づくこととなり,本人は研究から身をひくことを決めて,YOLO v3を発表後に研究者を引退した.

関連記事

関連書籍

References

  • [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. 

参照外部リンク

SNSでシェアやブックマークを行う