18
29

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

自力で機械学習の訓練画像データを収集する(Tumblr API 吉岡里帆編)

Last updated at Posted at 2017-08-24

はじめに

画像中にある物体認識の機械学習モデルを作成するに当たってまず必要になるのが大量の訓練画像の収集です。
犬や車といった一般的なものであればImageNetなどのサービスからダウンロードすることができますが、例えば日本の有名人の画像なんかはありません。
今回はTumblr APIを使って機械学習用の画像データを集める方法をご紹介します。

Google Custom Search API ピカチュウ編はこちら

Tumblr API Keyを取得

  1. まずこちらからアカウント登録をします。
  2. 次にこちらにアクセスしてアプリケーションを登録します。

アプリを登録するをクリック
Tumblr.png

次にアプリケーションの情報を入力していきます。
URL入力(アプリケーションウェブサイト, App Store URL, Google Play Store URL)が必須ですが実際にOauthのアプリを作るわけではないのでここは適当なURLで華麗にかわしてしまいます。(今回は自分が昔作ったアプリのURLを使いました)

Tumblr.png

そうするとこんな感じの画面が表示されるのでおもむろにExplore APIをクリックします
Tumblr.png

許可をクリック
Tumblr.png

するとこんな画面になるので
右上のShowKeysをクリックします
API_Console___Tumblr.png

ここにAPIKeyが表示されます。今回欲しかったものはこれなのでメモっておきます。
API_Console___Tumblr.png

実際に画像を取得する

では取得したAPI KEYを使って実際に画像を取得してみます。Tumblrは写真の投稿が多く、ピカチュウなどのキャラクターの取得には向かないようです。
ということで今回は最近人気の吉岡里帆さんの写真を取得します。
imagesというディレクトリに取得した画像が順次保存されます。
(参考: http://taka-say.hateblo.jp/entry/2016/12/19/235554)

import requests
import time
import shutil

LOOP = 10
URL = 'https://api.tumblr.com/v2/tagged'
payload = {
    'api_key': 'YOUR API KEY HERE',
    'tag': '吉岡里帆'
}
image_idx = 0

photo_urls = []
for i in range(LOOP):
    response_json = requests.get(URL, params=payload).json()
    for data in response_json['response']:
        if data['type'] != 'photo':
            continue
        for photo in data['photos']:
            photo_urls.append(photo['original_size']['url'])
    if(len(response_json['response']) == 0):
        continue
    payload['before'] = response_json['response'][(len(response_json['response']) - 1)]['timestamp']

for photo_url in photo_urls:
    path = "images/" + str(image_idx) + ".png"
    r = requests.get(photo_url, stream=True)
    if r.status_code == 200:
      with open(path, 'wb') as f:
        r.raw.decode_content = True
        shutil.copyfileobj(r.raw, f)
      image_idx+=1

3.png
12.png
29.png

はいこんな感じで画像がたくさん取得できました。可愛いですね!

18
29
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
18
29

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?