画像認識の話題になると、必ずと言ってよいほどImageNetって聞きますよね。ImageNetって画像認識に使うデータっていうことは知っているけど、どういった内容なのか、どうやって使えば良いか気になったことがある人もいるかもしれません。
ImageNetは画像認識をするためのデータセットの一つで、画像認識のベンチマークとしてよく使用されています。有名な画像認識のデータセットとしては、0から9までの手書き数字の画像を数万枚収録したMNIST(エムニスト)や、乗り物や動物などの10クラスに分類されたカラー画像を数万枚収録したCIFAR-10(サイファーテン)があります。ImageNetは1400万枚以上のカラー画像を収録しており、MINISTやCIFAR-10に比べても非常に大きなデータセットになります。ぜひ、この記事を通してImageNetを理解して、画像認識に使いましょう。
そこで今回は、ImageNetの基本的な使い方をできるだけわかりやすく紹介します。
画像認識のデータセットImageNetとは
ImageNetは1400万枚以上のイメージ画像に、その画像が何を表しているのかラベルを付与したデータセットです。このセットはスタンフォード大学が管理し、画像は写真共有サイトのFlickrなどのWebから収集されて、ラベルはAmazon Mechanical Turk(アマゾンメカニカルターク)などのクラウドソーシングを活用して人手で付与されています。ImageNetは過去に大規模な画像認識コンペを開催して、画像認識技術の進歩には大きく貢献していると言われています。
ImageNetのラベルはWordNetと呼ばれる英語の概念辞書に基づいてつけられています。WordNetとは英語の概念を記述した辞書で、語彙の上位と下位の関係などが定義されています。このため、ImageNetで「salmon」(鮭)というラベルが付けれられた画像は上位概念の「fish」(魚 )というラベルも付けられることになります。このImageNetの上位、下位の関係はImageNet公式ページの検索機能で確認できます。
ImageNetは何ができるの?
それでは、ImageNetでどういったことができるのか見ていきましょう。
ILSVRCでは毎年異なる競技内容が提示されていました。ImageNetを使用する例として、2017年のILSVRCの競技を見てみましょう。
ILSVRC 2017では3つの競技が競われました。一つ目はObject localization for 1000 categories.(提示された画像に1000カテゴリの物体がどこにあるか判別する)です。二つ目はObject detection for 200 fully labeled categories.(提示された画像が200カテゴリの内何かを検出する)、三つ目はObject detection from video for 30 fully labeled categories. (提示された動画内で20カテゴリの物体を検出する)です。ディープラーニングの登場以降、ILSVRCで競われる画像認識の精度は急速に上昇し、人間の精度を超えるほどになりました。
このようにImageNetはいろいろなバリエーションの画像認識に使用することができます。
ImageNetを使う前に準備しておくこと
続いて、実際にImageNetを使う準備をしましょう。基本的にはImageNetは画像へのリンクURLとsynsetと呼ばれる画像に付与されたラベルのセットが公開されています。これは、ImageNetの画像はWebから集められたものであり、著作権は第三者にあるためです。データセットはImageNet公式サイトのダウンロードページから入手可能です。一部の画像でURLのリンクが切れている場合があるため、注意が必要です。
一方で、あなたが画像認識の研究者であれば、研究用途としてオリジナルの画像をImageNet公式サイトからダウンロードできます。ただし、あらかじめImageNet公式サイトでアカウントを作成し、ダウンロードの許可を得ておきましょう。
ImageNetの実際の使い方
それでは、実際にImageNetを使って機械学習モデルを作成しましょう。機械学習用のライブラリであるTensorFlow(テンサーフロー)にはImageNetを簡単に使用するためのインターフェースが用意されています。
TensorFlowにはデータセット読み込み用のライブラリであるtensorflow_datasets(TFDS)が用意されていて、ILSVRC 2012で使用されたデータセットであるimagenet2012をサポートしています。ただし、ILSVRC 2012のデータセットはあらかじめ手動でダウンロードして指定する必要があります。
>> datasets = tfds.load(‘imagenet2012′, data_dir=’FILEPATH’)
TFDSを使用するとデータの分割やシャッフル、特徴量の抽出などを簡単に実行できます。詳しくはTFDSのマニュアルを参照しましょう。TFDSに読み込ませた後はAlexNetやGoogLeNet(グーグルネット)、ResNet(レズネット)といった画像認識用の機械学習モデルに入力し、学習させます。
また、TFDSはimagenet2012の他にimagenet2012_corruptedやimagenet_resizedといったデータセットもサポートしています。imagenet2012_corruptedはimagenet2012にガウスぼかし、飽和、スパッタ、スペックルノイズといった破損を追加したものになります。imagenet2012_corruptedはimagenet2012と同様に手動でデータセットのダウンロードが必要になります。imagenet_resizedはimagenet2012を8×8、16×16、32×32、64×64ピクセルにリサイズしたものです。imagenet_resizedについては、TFDSから自動でダウンロードできます。
ImageNetを使う上での注意点
最後にImageNetの注意点についてお伝えします。これまでImageNetは画像認識のベンチマークに使われてきましたが、今後状況が変わるかもしれません。2020年6月にGoogleのAI研究チームであるGoogle Brainから” Are we done with ImageNet?”という論文が発表されました。この論文はこれまで画像認識の性能評価に使われたきたImageNetに対して疑問を投げかけるものでした。
この論文の中ではImageNetの画像へのラベルの付け方の問題を指摘しています。1つの画像に複数の物体が含まれているにも関わらずImageNetでは1つのラベルを付けることしかできないことや、似たような分類クラスが複数あることなどを挙げています。
今後、画像認識でImageNetを使用しようとしたときは、” Are we done with ImageNet?”で指摘されているような問題があることを覚えておきましょう。作成した機械学習モデルをより厳密に評価する場合は、ReaLを使用することも検討した方が良いかもしれません。
さて、今回はImageNetについてご紹介しました。ImageNetについてお伝えした内容は以下です。
- ImageNetは画像認識に使用される大規模なデータセット
- ImageNetを使用した画像認識コンペであるILSVRCでAlexNetが優勝したことでディープラーニングが注目された
- ImageNetのデータセットは公式ページからダウンロードできるが、画像は著作権があるため研究者以外はリンクURLのみ入手可能
- TensorFlowのTFDSを使用するとILSVRC 2012で使用されたデータセットを簡単に使うことができる
- ImageNetは画像のラベルの付け方の問題が指摘されていて、新たなラベルを付与したReaLが提案されている
いずれImageNetの使用は終わりを迎える可能性があります。しかしながら、ReaLを使用することで当面は役割を果たすでしょう。今後、画像認識をする際は、データセットの動向に注視しましょう。
【お知らせ】
当メディア(AIZINE)を運営しているAI(人工知能)/DX(デジタルトランスフォーメーション)開発会社お多福ラボでは「福をふりまく」をミッションに、スピード、提案内容、価格、全てにおいて期待を上回り、徹底的な顧客志向で小規模から大規模ソリューションまで幅広く対応しています。
御社の悩みを強みに変える仕組みづくりのお手伝いを致しますので、ぜひご相談ください。