
ゆうき( @BASEBALLY15 )です^^
深層学習を勉強していて,大量の画像が必要なのですが,一括で画像をダウンロードする方法はないですか・・・?
ありますよ^^
Flickerという,フリー画像を紹介しているサイトの APIを使うと,
画像を一括でダウンロード出来ますよ.
FlickerのAPIを使う方法を教えてください・・・
分かりました^^
(Udemy『画像判定AIアプリ開発・パート1』を参考,AnacondaのSpyderを使用)

目次
FlickerAPIを取得する方法
画像を保存するためのファイルを作ろう!
まず,最初に,画像を保存するためのファイルを作っておきます.

キーとシークレットを取得しよう!
『Flickr』と検索し,以下のサイトを開きます.

そして,URLの部分を以下のように変更し,『Create an App』をクリックします.

すると,以下のような画面が表示されるので,矢印で示したところをクリックします.

その次に,以下の画面の『APPLY FOR A NON-COMMERCIAL KEY』をクリックします.

すると,このような画面が表示されます.この画面では,APIを取得する目的を書く必要があります.
Google翻訳で,「~の画像を分類するため.」と検索すると,英語に翻訳してくれるので,
それを,以下の『What are you building?』のところに貼り付けるといいと思います^^

『SUBMIT』をクリックすると,キーとシークレットが表示されます.
メモ帳に書いておくなど,大切に保管しておいてください.
それでは,FlickrAPIを使って,画像を取得したいと思います⤵
FlickrAPIを使って,画像を取得してみよう!
保存名:veg_download.py
まずは,ライブラリをご紹介します.
ライブラリ
#FlickrAPIを使うためのライブラリ
from flickrapi import FlickrAPI
#URLを開くためのライブラリ
from urllib.request import urlretrieve
#ファイルやディレクトリを使うためのライブラリ
import os
#時間に関するライブラリ
import time
#コマンドプロンプトなどを使うためのライブラリ
import sys
次に,FlickrAPIを使って画像を取得するためのコードをご紹介します.
コード
#キーとシークレットの情報
key = "oooooooooooooooooooooo"
sercret = "xxxxxxxxxxxxxxxxxxx"
#待ち時間を1秒とする
wait_time = 1
#コマンドライン引数の2番目の値を取得する(『download.py lion』のlionの部分)
vegetables_name= sys.argv[1]
#画像を保存するディレクトリを指定
savedir = "./" + vegetables_name
#FlickrAPI(キー, シークレット,データフォーマット{json形式で受け取る})
flickr = FlickrAPI(key, sercret, format="parsed-json")
result = flickr.photos.search(
text = animalname,#検索キーワード
per_page = 400,#取得するデータ数
media = "photos",#検索するデータの種類(写真)
sort = "relevance",#取得するデータの並び順(関連順)
safe_search = 1,#おかしなコンテンツを表示しない
extras = "url_q, licence"#取得したいオプションの値(url_qは画像のアドレスが入っている情報,licenceは,ライセンス情報)
)
#resultの"photos"を取得
photos = result["photos"]
#画像をフォルダに保存していく
for i, photo in enumerate(photos["photo"]):
#URLを取得
url_q = photo["url_q"]
#保存する画像名を指定
filepath = savedir + "/" + photo["id"] + ".jpg"
#もし,既にfilepathが存在していたら,次のループに行く
if os.path.exists(filepath):continue
#もし,filepathが存在していなければ,
#url_qをfilepathにダウンロードする
urlretrieve(url_q, filepath)
#アクセスを連発しないようにする
time.sleep(wait_time)
次に,AnacondaPromptを開きます. そして,以下のようにコードを記述 します.
- activate tf140←TensorFlowで処理を行います.
- cd デスクトップ
- cd animalai
- cd lion
- python veg_download.py cabbage
これで,FlickrAPIを使って,画像を取得することが出来ます.
終わりに
今回は,FlickrAPIを取得して,画像をダウンロードする方法についてご紹介しました.
一枚一枚,保存するのはかなりの時間が掛かるので,ぜひこの方法を使ってみてください^^
それでは・・・