X線による持ち込み禁止品の検査を、AIで自動化するための大規模データセットの構築

[2021年のディープラーニング論文を1人で読むAdvent Calendar](https://qiita.com/advent-calendar/2021/solo-dl-papers)15日目の記事です。今回紹介するのはデータセットの論文です。

**空港の保安検査などで使われるX線検査を、AIで自動化できないだろうか**というのがこの論文の背景です。そのためにはデータセットがいくつか作られてはいるのですが、現実世界でのデータで、ある程度の禁止品のバリエーションを伴い（12クラス）、1枚以上禁止品が入った画像が数万単位である、**大規模なデータセットは今まで作られていません**でした。それを作ったよというのがこの論文です。

結論から言うとまだまだ実用には難しいのですが、なぜ難しいのかがデータセットの作成者の視点から語られています。中国科学院のメンバーが中心の論文です。ICCV2021に採択されています。

* タイトル：**Towards Real-World Prohibited Item Detection: A Large-Scale X-Ray Benchmark**
* URL：https://openaccess.thecvf.com/content/ICCV2021/html/Wang_Towards_Real-World_Prohibited_Item_Detection_A_Large-Scale_X-Ray_Benchmark_ICCV_2021_paper.html
* 出典：Boying Wang, Libo Zhang, Longyin Wen, Xianglong Liu, Yanjun Wu; Proceedings of the IEEE/CVF International Conference on Computer Vision (ICCV), 2021, pp. 5412-5421
* コード：https://github.com/bywang2018/security-dataset

## X線による持ち込み禁止品検出のためのデータセット
### PIDrayデータセット
![15_01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/232088/f163c738-6a82-d07f-11d8-89a0a360723b.png)

本論文では、12種類の持ち込み禁止品を含んだ、X線画像のデータセットを作っています。名前を**PIDrayデータセット**と呼んでいます。

### 既存のデータセット
X線による禁止品検出を目指すためのデータセットは過去にもいくつかあり、以下のようなものがあります。

![15_02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/232088/d7df8b48-5757-8187-67f3-0d4133490b3e.png)

PIDrayはこれらのデータセットと比較して、以下のような特徴があります。

* **クラス数が12と過去最多**。以前はナイフや銃、はさみなど限られたものしか含まれていなかった。これにモバイルバッテリーやライター、スプレーなどより一般的な禁止品を追加した。
* **禁止品が含まれている画像の枚数が最多。どの画像にも最低1個以上禁止品が含まれている**。データセットの規模ではSIXrayが100万枚以上と最多だが、100万枚あっても禁止品が8929枚と不均衡データだった。PIDrayでは、必ず禁止品のどれかが含まれていることを保証している。
* **セグメンテーション用のマスクが入っている**。これまでのデータセットはBounding Boxだけだったが、これにインスタンスセグメンテーション用のマスクが追加されている。
* **地下鉄、空港、駅と多様な場所でのデータがあり、合成データではない**。以前のデータセットは本物のデータは地下鉄のみで、空港のデータは合成データだけだった。
* **公開データセット**。特に申請が必要なく、[GitHub](https://github.com/bywang2018/security-dataset)からダウンロードできる。ただし、**データセットは商用利用不可で、研究利用のみ**。

### クラスごとの統計量
![15_03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/232088/7d472758-75f8-e91e-3e99-12a76073373a.png)

一番少ないBatonで約2000、最も多いHammerが8000弱と極端な不均衡データではありません。

### テストデータにおけるEasy, Hard, Hiddenの設定
PIDrayの特徴的なところに、テストデータを**Easy, Hard, Hiddenでクラス分け**しているところです。

* **Easy**は1枚の画像に禁止品が1個だけあるケース
* **Hard**は1枚の画像に禁止品が複数あるケース
* **Hidden**はワイヤーを巻いて形状を変えたなど意図的に隠されたデータがあるケース

![15_04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/232088/1029ce9d-8fb1-ce5c-2520-c5b6d32e00cc.png)

保安検査で本当に見つける必要があるのはHiddenなので、かなり実践的な問題設定となっています。テストデータ内のEasy, Hard, Hiddenの分布は以下の通りです。

![15_05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/232088/8c49fc26-133d-c077-2a9d-ee4135834693.png)

## どれぐらい精度でるの？
著名な物体検出のモデル、本論文の提案手法では以下の通りです。本論文ではデータセットの構築のほか、Attentionベースのモデルを構築しています。データセットの論文なので、モデルの詳細については軽く触れる程度にします。

![15_06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/232088/d2dbc589-c165-f626-bc6b-a59059d8f0da.png)

あまり精度出ていないように見えますが、ここでのAPの定義は割と厳しくて、IoUが0.5～0.95までの10刻みのAPを計算して、それを平均したもの[^1]です。下の表ではAP50の値も計算されていますが、**Hiddenを評価したときの10刻みのAPが49.5でも、AP50だと64.5**出ています。したがって、**AP50よりかは遥かに厳しい評価基準で評価している**という点には注意が必要です。

[^1]: MS COCOのmAPと同じ定義らしい

ARはAverage Recallを示します。

## データセットの作成方法
データセットの論文で最も価値があるのは、データセットの作成方法や、作成時の苦労の話、データ特有の難しい話だと個人的に思っているので、ここを重点的にフォーカスしていきます。

### データの収集方法
空港、地下鉄駅、鉄道駅などセキュリティ検査機が設置されている場所で、学術目的でのデータを提供してもいいよという人を募っています。X線の検査機はメーカーの異なる3台を使用し、**検査機による画像の違いは、対象物の大きさや色、背景の違いに現れています**。検査機に荷物を入れると、空白の部分を検出して自動的にトリミングします。この解像度は高さが固定で、幅は荷物の大きさに依存します。

禁止品のデータの取得するためのプロセスは次の通りです。**セキュリティ検査時に、あらかじめ用意された禁止品を、データ提供者のバッグにランダムで入れます**。その際対象物の面積を記録し、アノテーションの高速化に活用します。12種類の禁止品に対し、2～15のインスタンスを用意し、多様性を保つようにしています。PIDrayの47677枚の画像を収集するのに3ヶ月要しています。

### アノテーション
事前にアノテーター（ボランティア）がX線画像から禁止品を迅速かつ正確に識別できるよう、トレーニングコースを用意しています。

まず5人のボランティアに禁止品を含まない画像を除外してもらいます。**同時に画像の分類ラベルを先につけ**、続くアノテーション作業を容易になるようにしています。

アノテーション（各インスタンスのBounding Boxとセグメンテーションマスク）は、10人以上のボランティアを組織して、LabelMeを使って2ヶ月間作業しています。**1枚の画像のアノテーションにかかる時間は約3分で、1人のボランティアが毎日10時間かけてアノテーション**をしています。複数回のダブルチェックを経て、誤差を可能な限り小さくするようにし、高品質なデータセットを作成するように心がけたとのことです。

### ドメイン特有の困難な点
X線は強い透過性を持つため、物体を通過するとき物質によってX線の吸収度合いが異なります。そのため、**X線画像では素材ごとに色が異なり、この性質が重なり合ったオブジェクトの検出を困難**にしています。

また、データの不均衡や、クラス内の差異など自然画像特有の問題も兼ね備えています。

## モデルの工夫
物体検出でよく使われる特徴マップのピラミッドのほか、Headの部分に**Selective Channel-wise Attention module (SCA) 、Selective Spatial Attention module (SSA)、Dependency Refinement**という3つのモジュールをこの論文独自に用意しています。いずれも性能向上に効いており、Headの非線形性を上げているものと解釈できます。

![15_08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/232088/b64c7b46-d475-83ca-10e7-02a7608cd221.png)

![15_07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/232088/1fd27a58-528e-08b8-da8f-a2d2acb0dca1.png)

「X線データだからこういうモジュールを入れた」という理由付けが不足していたので、「あくまで性能を上げるためのモジュールなんだな」程度に解釈して流し読みしました。

![15_09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/232088/56d7e6a8-809c-49c0-c2a3-418100137512.png)

またこれらのモジュール、特にDependency RefinementはX線データだけでなく、MS COCOやPascal VOCといった通常の検出/セグメンテーションのデータセットでも有効であったことが報告されています。ここらへんはデータセットの構築からは若干脱線するので、割愛します。

## まとめと感想
「AIを使ったX線による禁止品の検出」という重要度の高そうな問題に対し、過去最大規模の公開データセットを構築したというのがとにかく大きい貢献です。データの作成期間もデータの取得に3ヶ月、アノテーションに2ヶ月と膨大な日数を費やしています。これを**MS COCOレベルの何十万というデータセットへスケールするのはとても大変ではないか**と思われます。

読んでいて「4～5万枚の高品質のアノテーションをつけてやっとこの程度の性能なのか」という気持ちが非常に強かったです。このデータセット商用利用不可なので、実際に商用化しようとすると似たようなデータセットを1から作らないといけないでしょう。現実的に採算の取れ、なおかつ実用に耐えうる精度を持った禁止品の検出器を作る道は、まだまだ遠いんだなということを認識できる有用な論文でした。もしかすると物体検出ではなく、別の問題として捉えたほうが良いのかもしれません。単に物体検出で遊ぶ程度ならちょうどいい枚数だと思います。

## 告知
このアドベントカレンダーが本になりました！
**https://koshian2.booth.pm/items/3595424**
Amazonでも扱いあります詳しくは👉　https://shikoan.com