FlickrAPI로 이미지 다운로드

소개



화상 인식 프로그램을 만들기 위해서는, 우선은 훈련시키기 위한 대량의 화상 데이터가 필요.
이를 위해 이미지 데이터를 자동으로 수집하는 프로그램을 만듭니다.

참고 교재: 【화상 판정 AI 어플 개발·파트 1】TensorFlow·Python·Flask로 만드는 화상 판정 AI 어플 개발 입문

Flickr



이미지 수집 사이트
htps //w w. fぃckr. 코m/

API
htps //w w. fぃckr. 코 m/세 rゔぃ세 s/아피/

아래 준비



htps : // 코 m / 사아야 만 / ms / 3066697 A108 A7 7fc39
"1. api 등록"참조.
키와 비밀키(?)의 취득이 필요.

설치 방법


pip install flickrapi

소스 코드



검색한 이미지를 지정된 폴더에 저장합니다. download.py라는 프로그램을 만듭니다.
예를 들어,
python download.py monkey

를 입력하면 monkey에서 검색한 이미지를 monkey라는 폴더에 저장합니다.

가져오기


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

API 키 정보


# APIキーの情報
key = "<<文字列>>"
secret = "<<文字列>>"
wait_time = 1

취득한 키와 비공개 키를 저장해 둔다.
wait_time은 이름대로 무게 시간. 자주 Flickr에 액세스하면 액세스 거부되어 버리기 때문에, 이미지 1장 취득할 때마다 1초 기다리도록 한다.

이미지 정보 획득


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

flickr = FlickrAPI(key, secret, format='parsed-json')
result = flickr.photos.search(
    text = animalname,
    per_page = 400,
    media = 'photos',
    sort = 'relative',
    safe_search = 1,
    extras = 'url_q, licence'
)
FlickrAPI 에, 「아래 준비」로 취득한 키, 비밀열쇠, 포맷을 지정(이번은 json 형식)해 flickr 인스턴스를 작성해, flickr.photos.search 메소드를 호출한다.result에는 다음과 같은 데이터가 들어 있습니다.
{'photos': {'page': 1,
            'pages': 541,
            'perpage': 400,
            'photo': [{'farm': 66,
                       'height_q': 150,
                       'id': '49823614651',
                       'isfamily': 0,
                       'isfriend': 0,
                       'ispublic': 1,
                       'owner': '14136614@N03',
                       'secret': '888c8a381a',
                       'server': '65535',
                       'title': 'LEGO Minifigures Series 19 Rainbow Bear',
                       'url_q': 'https://live.staticflickr.com/65535/49823614651_888c8a381a_q.jpg',
                       'width_q': 150},
...

이미지 다운로드


result의 정보를 사용하여 이미지를 다운로드합니다.
이미지의 URL을 photo['url_q']로 취득.
다운로드의 실행은 urlretrieve로 실시한다.
photos = result['photos']

for i, photo in enumerate(photos['photo']):
    print(i)
    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 monkey

실행하면 monkey 폴더에 다음과 같이 저장됩니다.
그러나 원숭이가 아닌 이미지 (원숭이의 그림이거나 원숭이와 전혀 관계가없는 것 등)도 포함되어 있기 때문에 수동으로 제거하는 것이 필요.

좋은 웹페이지 즐겨찾기