LoginSignup
2
0

More than 3 years have passed since last update.

flickr APIで富士山の画像を自動取得

Posted at

Udemyで【画像判定AIアプリ開発・パート2】Django・TensorFlow・転移学習による高精度AIアプリ開発を受講した。オリジナルの機械学習プログラムを作る際に、インターネット上から画像を取得するのが非常に手間だと感じていたので、画像取得自動化の方法を記録しておく。

flicker APIのKey取得

flickerのホームページ
→ フッターのナビゲーションバーからDevelopersを選択
→ 画面上部からAPIを選択
→ Getting Startedの①にあるRequest an API keyを選択
→ ①のGet your API keyにあるRequest an API keyを選択
→ 商用利用ではないので、APPLY FOR A NON-COMMERCIAL KEYを選択
→ 作りたいアプリケーションの名前、アプリケーションの説明を入力
→ チェックボックスを埋めて、SUBMITを選択
→ KeyとSecretの取得完了!

flicker_key.png

画像をダウンロードするPythonファイル

これから目的の画像を取得する。

flickr APIのパッケージを仮想環境内にインストールする。私はAnaconda仮想環境を使っており、パッケージのインストールにはpip installではなくconda installを使うようにしているが、Anaconda Cloudで「flickrapi」で検索しても情報がほとんどなかったため、pip installを使った。(それっぽいパッケージもあるにはあるが、300ダウンロードにも満たないものだったので避けた。)

$ pip install flickrapi

今回はdownload.pyというファイルで富士山の画像のダウンロードを自動でおこなう。download.pyと同じディレクトリにdataというディレクトリを作成し、さらにその内部にmt.fujiというディレクトリを作成した。このmt.fujiの中に画像をダウンロードする。ソースコードは以下の通りである。

from flickrapi import FlickrAPI
from urllib.request import urlretrieve
import os, time, sys

key ="**************************"  # 先ほど取得したKeyをコピー&ペースト
secret = "****************"  # 先ほど取得したSecretをコピー&ペースト
wait_time = 1

keyword = sys.argv[1]
savedir = "./data/" + keyword

flickr = FlickrAPI(key, secret, format='parsed-json')
result = flickr.photos.search(
    text = keyword,
    per_page = 400,
    media = 'photos',
    sort = 'relevance',
    extras = 'url_q, license',
    )

photos = result['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)

このように書いたうえでターミナルで

$ python download.py mt.fuji

と入力すると画像のダウンロードが始まる。数分後、mt.fujiの中身を確認すると、以下のように画像がダウンロードされている。

image_download.png

これで、画像を手作業でダウンロードするという手間を大幅に省くことができた。しかしこのままでは関係ない画像も多く混じっているため、もっと工夫が必要である。

2
0
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
2
0