Google Open Image Datasetからワンライナーで画像抽出

AI

はじめに

AIを使って画像をどうのこうのしようと思うと、学習用の画像を集める必要があって結構大変ですね。そんな人たち向けに、Googleが Open Image Datasetという大規模な画像データベースを作ってくれています。だた、大変な量になりますので、ローカルにこれらの画像をダウンロードするのは結構つらいです。そこで、Open Image Datasetではサーバ上の画像のURLのリストとしても提供してくれています。今回は、これらの画像をなるべく少ないコマンド数でエイ、エイ、エーーイとダウンロードしてみようと思います。

Open Image Dataset URLリストを取得

Open Image Datasetのページに行くとDownloadページに行けるボタンがありますので、クリックしてダウンロードページに行きましょう。

 

 

で、ここから少し分かりにくいです。イメージそのものではなく、URLのリストはImageIDsになります。今回は、Trainのものを落としておきましょう。このファイルはイメージのIDとURL(とその他)がリストになっています。

 

ではこれらのイメージがどのような画像かというと、その情報はBoxesからダウンロードできる train-annotations-bbox.csvに記載されています。

 

 

どのような画像かはLabelNameというフィールドですが、見てわかる通りIDとなっています。では、このIDはどこから来るかというと、Class Namesから落とせるclass-descriptions-boxable.csvに記載されています。

 

また、どうやら実はこれらのラベル付けはコンピュータがやっているらしく、人間がバリデーションしたかどうかも別のファイルに記載されています。Image labelsからダウンロードできるtrain-annotations-human-imagelabels-boxable.csvです。

 

これらのファイルは、CSV形式のファイルになっていますが、1GBを超えるサイズになるのでエクセルで開くのはお勧めしません。

メモ帳で開くのも面倒なので、shellのコマンドだけで画像を落としてしまいましょう。(余裕のある方はDBに入れてから、というのがいいのかもしれません)

 

画像の取得

今回は、人間がバリデーションしたデータだけを取得してみましょう。

下記のコマンドをコピペすると像の画像を一気に取得してくれます。ちょっと処理に時間がかかるので、ダウンロードが始まるまで1分くらいかかるかもしれません。

 

elephantの部分をほかのものに変えれば、そのものを一気にダウンロードしてくれますよ。awkが大活躍ですね。

まとめ

今回は、Googleが提供する超巨大データセットOpen Image Datasetから特定の画像をダウンロードする方法を示しました。これを使って機械学習を捗らせよう!!

 

 

 

コメント