Python|Google_Images_Downloadを使って特定キーワードで100枚以上の画像を一括入手する方法

こんにちは、うしまる(@usitubo)です。

うしまる

今回は、GoogleImageDownloadを使った画像認識用のサンプル画像を集める方法がテーマです。

デフォルトで試すと1枚もとれなかったり、100枚で打ち止めになったりするのでそれ以上取得するための方法を紹介していきます。

では、さっそくみていきましょう!

 

GoogleImageDownloadとは?

GoogleImageDownloadは、Googleの画像検索から検索キーワードに沿って画像を取得してくれるPython用のスクリプトになります。

インストールさえしてしまえば、簡単なプログラムを実行させるだけで後はプログラムが勝手にお目当ての画像を取得してきてくれるとても便利なものになります。

うしまる

1つずつ画像を集めていくのは、どう頑張っても1枚数秒はかかりますよね。

このスクリプトを使うと実行ボタンを押してあとは放置で画像がたくさん取得できます!

 

GoogleImageDownloadをインストールしよう

今回はPythonとVSCodeを使用した環境に、GoogleImageDownloadを導入していく手順を紹介していきます。実はありきたりなコマンドで簡単に導入できるかと思いきや、部分部分で注意しないといけない手順がありますので、順に実施してみてください。

それでは、さっそく導入していきましょう。

手順1:Python環境の準備

今回紹介する環境はWindows10&Python環境での話になります。

Python環境作成自体がまだの人はこちらの記事で環境の構築方法を解説していますので確認してみてください。

 

手順2:Anaconda Navigatorを起動する

環境構築が完了した人は、Anaconda Navigatorを起動します。

Anacondaの導入がまだの人はこちらの記事を参考にしてみてください。

 

導入が済んでいる人は、Windowsボタンもしくは、「ここに入力して検索」で”Anaconda Navigator”と入力してソフトを起動してください。

 

手順3:ターミナルを起動する

左のサイドメニューから[Environments]>[作成した環境]>[Open Terminal]の順にクリックしてください。

 

手順4:google_images_downloadをインストール

pip install google_images_download

コマンドラインに上記をコピペしてみてください。コピペした後[Enter]ボタンを押下するとインストールが始まります。

 

コマンドが復帰したら完了です。

ここで今回のインストールはめでたしめでたし

といきたいところですが、このままだとなんと画像取得できません。

 

試しにVSCodeで画像取得用のプログラムを作成し実行してみましょう。ここではソースの詳細は割愛させていただきます。

Unfortunately all 10 could not be downloaded because some images were not downloadable. 0 is all we got for this search filter!

という表示とともに、画像は残念ながら取得できません。

他の人も同様の現象が起きているらしく参考サイトで調査された方によるとGoogle画像検索の仕組みが変わってしまっていて現在のGoogleImagesDownloadは、そのままでは使えないとのこと。

【参考】google image downloadが動かなかったのでその対応 – (Qiita)

そこで手順に従って有志の方が作成されたパッチをあてていきます。

 

手順5:google_images_downloadのパッチをあてる

手順4だけではうまく行かなかったので引き続き対策用のパッチをインストールしていきます。何種類かあるようですが、今回はgitを使ってクローンして取得する方法を試します。

git環境をまだ作成していない人はこちらを参考にしてみてください。

 

導入が済んでいる人は、引き続きコマンドで下記を入力

git clone https://github.com/Joeclinton1/google-images-download.git gid-joeclinton

入力が完了したら[Enter]をクリックしてください。

 

コマンドが返ってきたら完了です。

続いて入手したソースをインストールしていきます。

pip install -e gid-joeclinton

入力したら[Enter]ボタンを押下してください。

 

こちらもコマンドが返ってきたら完了です。

これで画像読み込みが今度こそできるはず!ということで試してみました。

かわいい柴犬の画像を取得してみようと思います。デフォルトだと100件らしいのですが、実行結果がエラーが出てるみたい…

 

それでもかわいい柴犬たちの画像が取得できているのは確認出来ました。

ただ、正直なところ、100枚はちょっと少なくない?画像認識って1000枚とか読み込ませたりするんじゃないの?という疑問が出てきたので話の流れ的にはうまく行かない感じの言い回しですが、一応試してみます。いざ1000枚の壁へ!

 

引数にlimit=1000を設定して1000枚読み込む設定にします。ここがデフォルトだと100枚になります。

そして実行結果

がっつり例外が発生しました。

うしまる

google_images_download単独では100枚の取得が限界みたいですね。

 

 

手順6:ChromeDriverを使用する

100枚以上の画像を取得したい場合は、ChromeDriverを導入することで取得可能です。続いてこのChromeDriverを使用するための手順について解説していきます。

ChromeDriverを入手する前に使用しているPCにChromeが入っているかどうか確認してください。入っていない人はまずはインストールから。

入っている人はChromeを起動して[…]>[ヘルプ]>[Google Chromeについて]を選択してください。

ここのバージョンを確認してください。

次にこちらのサイトへ移動します。

https://chromedriver.chromium.org/downloads

確認したバージョンごとに入手するファイルを選択してください。

環境に合わせたダウンロード用のリンクが表示されます。Windowsの場合は、chromedriver_win32.zipを選択します。

入手したファイルを解凍すると「chromedriver.exe」というアプリケーションが表示されます。このファイルを任意のフォルダへ格納するようにしてください。

 

手順7:画像を取得してみよう

お疲れさまでした。これで環境設定完了です。

それでは、早速画像を取得してみましょう。

#モジュールのインポート
from google_images_download import google_images_download  #モジュールのインポート

#responseオブジェクトの生成
response = google_images_download.googleimagesdownload()  

#検索キーワード/ダウンロード画像の数
arguments = {"keywords":"柴犬 かわいい",
             "limit":1000,
             "chromedriver":"C:\\[格納パス]\\chromedriver.exe",
             "format":"jpg"
             } 

#ダウンロードの実行
response.download(arguments)

オプションは色々設定できるみたいですが、keywordsは、Google画像検索でひっかけるキーワードを入力します。limitは、画像取得したい件数を設定します。chromedriverは、手順6で置いたパス、foratは、取得したい画像の拡張子を設定できます。ここらへんが指定できればとりあえずいいかなと。

それでは、VSCodeを使って実行してみましょう。

1000枚取得して欲しかったのですが、残念ながら385枚までしか取得できませんでした。他のキーワードでも試してみたのですが概ね400枚程度が限界みたいですね。

 

ただ300枚後半はほぼ柴犬ではなく、グッズなのでこれは画像認識には使えないかも!?

しかし、この世の中、柴犬の画像はもっとたくさんありそうですけどね…

また何か良い方法が見つかったらこの記事をアップデートしていきたいと思います。

 

最後に

今回はGoogleImagesDownloadを使用して、画像を取得してみました。次はこの取得した画像を使って画像認識モデルを作っていきたいと思います。

うしまる

それでは、今回はこのへんでノシ

 

記事が参考になったり、気に入ってもらえたら
ポチッとしてもらえると励みになります!

にほんブログ村 IT技術ブログへ にほんブログ村 IT技術ブログ Pythonへ にほんブログ村 株ブログ つみたてNISAへ
シェアしてもらえるとうれしいです!

コメントを残す

ABOUT US
usimaru
福岡でWindowsアプリケーション開発のお仕事してます。 お金に縛られない生活を目指して日々学んだことをOUTPUTしていきます。 主なテーマ ◆仕事経験から:AWS/Azure/C++/C#/Python/Ruby ◆資産形成に向けて:つみたてNISA/米国株/日本株/仮想通貨/ソーシャルレンディング ◆好きなこと:旅行/温泉/美味しいもの/布団の中 ◆目標:ブログを毎日更新目指します!