LoginSignup
4
12

More than 5 years have passed since last update.

[面倒なことはPythonで!]ネットから画像の自動収集

Posted at

はじめに

こんにちは。
今回の記事ではネットから必要な画像を自動で収集する方法を紹介しようと思います。

今までの記事で書いたような画像分類をする場合、必要になってくるのが画像収集です。しかも、画像分類となるとAIに学習させるためにできるだけたくさんの画像が必要になってきます。場合によっては1000枚、2000枚になることもあるので、それをいちいち自分の手で検索して保存していくのはめちゃくちゃしんどいです。。。今回紹介するやり方を知るまでの僕はいちいち手動でやっていたのでその作業だけで疲れて勉強どころではなくなっていました(涙)
みなさんにはそんな苦労を味わって欲しくないので、楽してできるだけたくさんの画像を集めちゃいましょう!

筆者の開発環境

・macOS Mojave バージョン10.14.3
・MacBook Air(11-inch, Early 2015)
・プロセッサ 1.6 GHz Intel Core i5
・Python 3.7.1

これで問題なく動きました!

手順

①今回使うサイトはFlickrというサイトで、たくさんの画像を共有するサイトになっています。
まずYahooアカウントを取得しましょう。既に持っている人はお持ちのアカウントで構いません。
次に https://www.flickr.com/services/api/ を検索して以下のような画面に飛びます。
スクリーンショット 2019-05-07 15.42.36.png
この画面の灰色の枠のすぐ下にある API Keys をクリックするとYahooアカウントでのログインを求められるのでそのままログインします。
無事ログインできたら先ほどの画面の「The App Garden」という文字の下にある「Create an App」をクリックします。
するとこのような画面になるので
スクリーンショット 2019-05-07 15.47.12.png
Get Your API Keyのすぐ下のRequest an API Keyをクリックしましょう。
そして次の画面で 「APPLY FOR A NON-COMMERCIAL KEY」をクリックするとスクリーンショット 2019-05-07 15.55.48.png
こんな画面に移動するので、What's the name of your app?のところに作りたいアプリの名前、What are you building?のところに目的を書きましょう。

私は画像分類アプリを作りたかったので「Image Classifier」、「To Classify Some Images」と入力しました。内容はなんでも大丈夫なので各自で自由に入力しましょう。
入力してSUBMITをクリックし、このような画面になったら成功です。おめでとうございます!
スクリーンショット 2019-05-07 16.00.27.png
この画面にあるKeyとSecretを写真に撮るなりなんなりして忘れないようにしてください!後で使います!

②次になんでもいいのでテキストエディタを使って以下のようなコードを書きます。

from flickrapi import FlickrAPI
from urllib.request import urlretrieve
from pprint import pprint
import os, time, sys
#この辺りのモジュールは各自インストールしておいてください。
pip install 〜でインストールするのが一番簡単です。

# APIキーの情報

key = "先ほどの画面で表示されたKey"
secret = "先ほどの画面で表示されたSecret"
wait_time = 1

#保存フォルダの指定
imagename = sys.argv[1]
savedir = "./" + imagename

flickr = FlickrAPI(key, secret, format='parsed-json')
result = flickr.photos.search(
    text = imagename,
    per_page = 400,#400枚保存するという意味
    media = 'photos',
    sort = 'relevance',
    safe_search = 1,
    extras = 'url_q, licence'
)

photos = result['photos']
# 返り値を表示する
# pprint(photos)

for i, photo in enumerate(photos['photo']):
    url_q = photo['url_q']
    filepath = savedir + '/' + photo['id'] + '.jpg'
    if os.path.exists(filepath): continue
    urlretrieve(url_q,filepath)
    time.sleep(wait_time)

このコードをdownload.pyという名前で保存します。
そしてこのdownload.pyが含まれているフォルダに自分が検索したいキーワードを名前として設定したフォルダを新規作成します。ライオンの画像を検索したければ「lion」というフォルダ名で良いです。例えば

Animal
|
|--download.py
|--lion

のような感じで大丈夫です。このlionというフォルダに今から画像が格納されていきます。
このAnimalフォルダをデスクトップに置きましょう。

そしてterminal.appを開いて、
「cd Desktop」→「cd Animal」の順に入力したら、次に「python download.py lion」と入力すると、もう自動でFlickrからライオンの画像が保存されていきます!確認してちゃんと保存されていたら成功です!

終わりに

いかがだったでしょうか?
こんな感じで面倒な作業が簡単にできちゃうので、画像がどうしてもたくさん必要な場合はぜひ使ってみてください。無駄な労力を使わなくて良くなりますよ!

4
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
12