카테고리 없음
[Tensorflow] [CNN] 요리 이미지 분류하기
설화님
2024. 9. 20. 19:59
코드
CNN을 활용한 이미지 분류 프로젝트¶
요리 이미지 판정 방법¶
- 사진에 어떤 요리가 있는지 분류 – 피자, 스파게티, 스시 3종류의 요리 학습
- 판정한 요리의 칼로리를 출력
요리 이미지 데이터 수집¶
- 피자, 스파게티, 스시 3가지 종류 요리 => 음식당 100장 이상의 사진 필요
- Flickr 사이트 이용
- Flickr가 제공하는 사진검색 API를 사용하여 요리사진 수집
- 사이트 : https://www.flickr.com/
CNN을 활용한 이미지 분류 프로젝트¶
1. 데이타 준비 및 정리¶
1) Flickr API를 사용해 사진 수집¶
(1) Flickr API 계정 만들기¶
- 구글 아이디로 계정 만들기
- Flickr API 계정 만들기 https://www.flickr.com/services/api/
Flickr API 모듈 설치하기¶
- pip install flickrapi
In [ ]:
# 경고(worning) 무시
import warnings
warnings.filterwarnings('ignore')
In [ ]:
# 현재 작업 디렉토리 확인하기
import os
os.getcwd()
Out[ ]:
'c:\\Users\\mgoog1.ko\\Desktop\\Downloads\\딥러닝+실무+프로젝트_down (1)\\1. CNN_요리이미지분류'
(2) Flickr API를 이용하여 요리 이미지 내려 받기¶
- 피자, 스파게티, 스시 3가지 요리당 75X75 픽셀의 정사각형 이미지를 300개씩 내려 받기
- ./image/pizza, ./image/spaghetti, ./image/sushi 폴더 생성
In [ ]:
# Flickr로 사진 검색해서 다운로드하기
from flickrapi import FlickrAPI
from urllib.request import urlretrieve
from pprint import pprint
import os, time, sys
# AP 키 지정하기
key = "6a77e04939b39922140fe0033ad87fbd"
secret = "867c278824b691dc"
wait_time = 1 # 대기 시간(초)
# image 디렉토리가 존재하지 않은 경우에만 디렉토리 생성
if not os.path.exists('./image/'):
os.mkdir('./image/')
# Flickr API로 사진 검색하고 './image' 아래에 요리 이름 폴더별로 저장하기
def go_download(keyword, dir): # go_download('피자', 'pizza')
# 저장 경로 지정하기
savedir = "./image/" + dir # "./image/pizza"
# 디렉토리가 존재하지 않은 경우에만 디렉토리 생성
if not os.path.exists(savedir):
os.mkdir(savedir)
# API를 사용해서 json 형태의 데이타 다운로드하기
flickr = FlickrAPI(key, secret, format='parsed-json')
res = flickr.photos.search(
text = keyword, # 키워드
per_page = 200, # 검색할 개수
media = 'photos', # 사진 검색
sort = "relevance", # 키워드 관련도 순서
safe_search = 1, # 안전 검색
extras = 'url_q, license')
# 결과 확인하기
photos = res['photos']
pprint(photos)
try:
# 1장씩 다운로드하기
for i, photo in enumerate(photos['photo']):
url_q = photo['url_q']
filepath = savedir + '/' + dir + '_' + str(i) + '.jpg'
if os.path.exists(filepath): continue
print(str(i+1) + ":download=", url_q)
urlretrieve(url_q, filepath)
time.sleep(wait_time)
except:
import traceback
traceback.print_exc()
# 키워드와 디렉터리 이름 지정해서 다운로드하기
def main():
go_download('피자', 'pizza')
# go_download('스파게티', 'spaghetti')
# go_download('스시', 'sushi')
# 메인 프로그램
if __name__ == '__main__':
main()
{'page': 1, 'pages': 12, 'perpage': 200, 'photo': [{'farm': 6, 'height_q': 150, 'id': '5359100116', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '2', 'owner': '23344263@N07', 'secret': 'f8a66ed0c9', 'server': '5248', 'title': '피자', 'url_q': 'https://live.staticflickr.com/5248/5359100116_f8a66ed0c9_q.jpg', 'width_q': 150}, {'farm': 6, 'height_q': 150, 'id': '21543946772', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '133350383@N04', 'secret': 'e4054957e9', 'server': '5673', 'title': '피자', 'url_q': 'https://live.staticflickr.com/5673/21543946772_e4054957e9_q.jpg', 'width_q': 150}, {'farm': 4, 'height_q': 150, 'id': '3137453339', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '7345197@N03', 'secret': '4a303f6ded', 'server': '3263', 'title': '피자', 'url_q': 'https://live.staticflickr.com/3263/3137453339_4a303f6ded_q.jpg', 'width_q': 150}, {'farm': 9, 'height_q': 150, 'id': '7582603778', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '1', 'owner': '67347235@N00', 'secret': '67c3af4104', 'server': '8005', 'title': '치즈케이크샌드 피자', 'url_q': 'https://live.staticflickr.com/8005/7582603778_67c3af4104_q.jpg', 'width_q': 150}, {'farm': 9, 'height_q': 150, 'id': '8284054706', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '1', 'owner': '67347235@N00', 'secret': 'f61bda4948', 'server': '8478', 'title': '콰트로치즈샌드 피자', 'url_q': 'https://live.staticflickr.com/8478/8284054706_f61bda4948_q.jpg', 'width_q': 150}, {'farm': 5, 'height_q': 150, 'id': '4237076954', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '67075495@N00', 'secret': '68e28252e0', 'server': '4003', 'title': '카프리쵸사 피자', 'url_q': 'https://live.staticflickr.com/4003/4237076954_68e28252e0_q.jpg', 'width_q': 150}, {'farm': 6, 'height_q': 150, 'id': '5397326628', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '24747173@N00', 'secret': 'e9d0cc5012', 'server': '5136', 'title': '이마트 피자 콤비네이션', 'url_q': 'https://live.staticflickr.com/5136/5397326628_e9d0cc5012_q.jpg', 'width_q': 150}, {'farm': 4, 'height_q': 150, 'id': '2655615464', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '7828283@N04', 'secret': '16f96fb146', 'server': '3224', 'title': '도미노 피자 쿠폰 52장', 'url_q': 'https://live.staticflickr.com/3224/2655615464_16f96fb146_q.jpg', 'width_q': 150}, {'farm': 4, 'height_q': 150, 'id': '2655617008', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '7828283@N04', 'secret': '429e219ce9', 'server': '3065', 'title': '도미노 피자 쿠폰 52장', 'url_q': 'https://live.staticflickr.com/3065/2655617008_429e219ce9_q.jpg', 'width_q': 150}, {'farm': 5, 'height_q': 150, 'id': '4197243546', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '43494805@N02', 'secret': 'f7d7dc5666', 'server': '4007', 'title': '리치 바이트 피자', 'url_q': 'https://live.staticflickr.com/4007/4197243546_f7d7dc5666_q.jpg', 'width_q': 150}, {'farm': 3, 'height_q': 150, 'id': '3545734840', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '1', 'owner': '35468136000@N01', 'secret': '3eabe61193', 'server': '2176', 'title': '피자', 'url_q': 'https://live.staticflickr.com/2176/3545734840_3eabe61193_q.jpg', 'width_q': 150}, {'farm': 4, 'height_q': 150, 'id': '3504326558', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '37091597@N07', 'secret': 'dd92638aea', 'server': '3592', 'title': '어린이날 기념 피자 ㅡ.ㅡ;', 'url_q': 'https://live.staticflickr.com/3592/3504326558_dd92638aea_q.jpg', 'width_q': 150}, {'farm': 6, 'height_q': 150, 'id': '5398188992', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '24747173@N00', 'secret': '48b6366814', 'server': '5052', 'title': '처음 사 본 이마트 피자', 'url_q': 'https://live.staticflickr.com/5052/5398188992_48b6366814_q.jpg', 'width_q': 150}, {'farm': 5, 'height_q': 150, 'id': '4502228087', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '21964241@N00', 'secret': 'd3d3e92810', 'server': '4054', 'title': '밥 먹고 피자 한판. 담배 아니면 먹을것로밖에 스트레스를 풀 길이 없구나.', 'url_q': 'https://live.staticflickr.com/4054/4502228087_d3d3e92810_q.jpg', 'width_q': 150}, {'farm': 7, 'height_q': 150, 'id': '6382440549', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '37934744@N02', 'secret': 'eccdf0429e', 'server': '6031', 'title': '피자', 'url_q': 'https://live.staticflickr.com/6031/6382440549_eccdf0429e_q.jpg', 'width_q': 150}, {'farm': 9, 'height_q': 150, 'id': '8296531367', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '90950581@N03', 'secret': 'd748e85ccd', 'server': '8354', 'title': '식당에서 생일파티', 'url_q': 'https://live.staticflickr.com/8354/8296531367_d748e85ccd_q.jpg', 'width_q': 150}, {'farm': 9, 'height_q': 150, 'id': '8296531751', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '90950581@N03', 'secret': '5bde229514', 'server': '8219', 'title': '식당에서 생일파티', 'url_q': 'https://live.staticflickr.com/8219/8296531751_5bde229514_q.jpg', 'width_q': 150}, {'farm': 4, 'height_q': 150, 'id': '3414644752', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '37091597@N07', 'secret': '099d725a48', 'server': '3608', 'title': '피자 완성', 'url_q': 'https://live.staticflickr.com/3608/3414644752_099d725a48_q.jpg', 'width_q': 150}, {'farm': 3, 'height_q': 150, 'id': '12046872666', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '101035667@N02', 'secret': 'd22fb12aa1', 'server': '2882', 'title': 'IMGP6466 c copy', 'url_q': 'https://live.staticflickr.com/2882/12046872666_d22fb12aa1_q.jpg', 'width_q': 150}, {'farm': 9, 'height_q': 150, 'id': '17076245128', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '27097317@N00', 'secret': 'b8098362b2', 'server': '8816', 'title': 'IMG_20150422_194354', 'url_q': 'https://live.staticflickr.com/8816/17076245128_b8098362b2_q.jpg', 'width_q': 150}, {'farm': 3, 'height_q': 150, 'id': '4159201955', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '2', 'owner': '15702545@N00', 'secret': 'bf60a73145', 'server': '2726', 'title': 'ピザ Premium cheese fantasy crust', 'url_q': 'https://live.staticflickr.com/2726/4159201955_bf60a73145_q.jpg', 'width_q': 150}, {'farm': 8, 'height_q': 150, 'id': '6927971061', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '1', 'owner': '67347235@N00', 'secret': 'b2450d38ce', 'server': '7058', 'title': '피자헛 와우박스 - 1', 'url_q': 'https://live.staticflickr.com/7058/6927971061_b2450d38ce_q.jpg', 'width_q': 150}, {'farm': 8, 'height_q': 150, 'id': '8959472388', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '11238204@N08', 'secret': 'd17fe57d53', 'server': '7292', 'title': '피자', 'url_q': 'https://live.staticflickr.com/7292/8959472388_d17fe57d53_q.jpg', 'width_q': 150}, {'farm': 3, 'height_q': 150, 'id': '8959473932', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '11238204@N08', 'secret': '39b7c786dd', 'server': '2808', 'title': '피자', 'url_q': 'https://live.staticflickr.com/2808/8959473932_39b7c786dd_q.jpg', 'width_q': 150}, {'farm': 1, 'height_q': 150, 'id': '41929422982', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '125761228@N03', 'secret': '5097b9ae3f', 'server': '975', 'title': '키친 드 마티네 분당점', 'url_q': 'https://live.staticflickr.com/975/41929422982_5097b9ae3f_q.jpg', 'width_q': 150}, {'farm': 3, 'height_q': 150, 'id': '4142520688', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '1', 'owner': '27056886@N00', 'secret': 'bcd2c7f4cb', 'server': '2566', 'title': 'PB070241', 'url_q': 'https://live.staticflickr.com/2566/4142520688_bcd2c7f4cb_q.jpg', 'width_q': 150}, {'farm': 6, 'height_q': 150, 'id': '7060254281', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '77515410@N08', 'secret': 'd4c6b0959f', 'server': '5465', 'title': '피자', 'url_q': 'https://live.staticflickr.com/5465/7060254281_d4c6b0959f_q.jpg', 'width_q': 150}, {'farm': 5, 'height_q': 150, 'id': '4334668082', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '91525906@N00', 'secret': '7dd4a010d9', 'server': '4064', 'title': '피자 +_+', 'url_q': 'https://live.staticflickr.com/4064/4334668082_7dd4a010d9_q.jpg', 'width_q': 150}, {'farm': 5, 'height_q': 150, 'id': '4291675683', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '42855302@N06', 'secret': 'cdf5ce4047', 'server': '4035', 'title': '코스트코 카드 득템~ 주말은..', 'url_q': 'https://live.staticflickr.com/4035/4291675683_cdf5ce4047_q.jpg', 'width_q': 150}, {'farm': 1, 'height_q': 150, 'id': '28102752988', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '125761228@N03', 'secret': '79548e98e3', 'server': '943', 'title': '키친 드 마티네 분당점', 'url_q': 'https://live.staticflickr.com/943/28102752988_79548e98e3_q.jpg', 'width_q': 150}, {'farm': 1, 'height_q': 150, 'id': '28102751158', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '125761228@N03', 'secret': '36c87278c3', 'server': '909', 'title': '키친 드 마티네 분당점', 'url_q': 'https://live.staticflickr.com/909/28102751158_36c87278c3_q.jpg', 'width_q': 150}, {'farm': 1, 'height_q': 150, 'id': '41255158924', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '125761228@N03', 'secret': 'e6a7462f7b', 'server': '970', 'title': '키친 드 마티네 분당점', 'url_q': 'https://live.staticflickr.com/970/41255158924_e6a7462f7b_q.jpg', 'width_q': 150}, {'farm': 5, 'height_q': 150, 'id': '4796426220', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '3', 'owner': '45676708@N07', 'secret': 'c19258859e', 'server': '4123', 'title': '피자', 'url_q': 'https://live.staticflickr.com/4123/4796426220_c19258859e_q.jpg', 'width_q': 150}, {'farm': 4, 'height_q': 150, 'id': '3538815030', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '97535338@N00', 'secret': '7397f630bb', 'server': '3391', 'title': '고양 아람누리에서 점심을 먹다', 'url_q': 'https://live.staticflickr.com/3391/3538815030_7397f630bb_q.jpg', 'width_q': 150}, {'farm': 3, 'height_q': 150, 'id': '4273844698', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '7828283@N04', 'secret': '6ee99a4353', 'server': '2781', 'title': '잘 먹을께요. 1센트님', 'url_q': 'https://live.staticflickr.com/2781/4273844698_6ee99a4353_q.jpg', 'width_q': 150}, {'farm': 1, 'height_q': 150, 'id': '41255157024', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '125761228@N03', 'secret': '2debbf087f', 'server': '826', 'title': '키친 드 마티네 분당점', 'url_q': 'https://live.staticflickr.com/826/41255157024_2debbf087f_q.jpg', 'width_q': 150}, {'farm': 3, 'height_q': 150, 'id': '4105477328', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '36645149@N07', 'secret': 'aa5c9d497b', 'server': '2662', 'title': 'DSC_0232', 'url_q': 'https://live.staticflickr.com/2662/4105477328_aa5c9d497b_q.jpg', 'width_q': 150}, {'farm': 1, 'height_q': 150, 'id': '41255157984', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '125761228@N03', 'secret': 'ac2dd29a75', 'server': '909', 'title': '키친 드 마티네 분당점', 'url_q': 'https://live.staticflickr.com/909/41255157984_ac2dd29a75_q.jpg', 'width_q': 150}, {'farm': 1, 'height_q': 150, 'id': '41255158214', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '125761228@N03', 'secret': '6d5576f94d', 'server': '832', 'title': '키친 드 마티네 분당점', 'url_q': 'https://live.staticflickr.com/832/41255158214_6d5576f94d_q.jpg', 'width_q': 150}, {'farm': 5, 'height_q': 150, 'id': '4651846635', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '47336247@N07', 'secret': '4ef40083ff', 'server': '4019', 'title': '오늘 저녁은 정크푸드', 'url_q': 'https://live.staticflickr.com/4019/4651846635_4ef40083ff_q.jpg', 'width_q': 150}, {'farm': 1, 'height_q': 150, 'id': '41255157714', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '125761228@N03', 'secret': '232ae1e100', 'server': '955', 'title': '키친 드 마티네 분당점', 'url_q': 'https://live.staticflickr.com/955/41255157714_232ae1e100_q.jpg', 'width_q': 150}, {'farm': 1, 'height_q': 150, 'id': '41929423492', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '125761228@N03', 'secret': 'cf23aa73c1', 'server': '908', 'title': '키친 드 마티네 분당점', 'url_q': 'https://live.staticflickr.com/908/41929423492_cf23aa73c1_q.jpg', 'width_q': 150}, {'farm': 1, 'height_q': 150, 'id': '41255157414', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '125761228@N03', 'secret': '42676d6dea', 'server': '953', 'title': '키친 드 마티네 분당점', 'url_q': 'https://live.staticflickr.com/953/41255157414_42676d6dea_q.jpg', 'width_q': 150}, {'farm': 1, 'height_q': 150, 'id': '41929423942', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '125761228@N03', 'secret': '1e3fe62fba', 'server': '981', 'title': '키친 드 마티네 분당점', 'url_q': 'https://live.staticflickr.com/981/41929423942_1e3fe62fba_q.jpg', 'width_q': 150}, {'farm': 8, 'height_q': 150, 'id': '26931993834', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '3', 'owner': '133230301@N04', 'secret': '4bea0399c0', 'server': '7643', 'title': '연어피자', 'url_q': 'https://live.staticflickr.com/7643/26931993834_4bea0399c0_q.jpg', 'width_q': 150}, {'farm': 1, 'height_q': 150, 'id': '28102754548', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '125761228@N03', 'secret': 'da0e4496ed', 'server': '910', 'title': '키친 드 마티네 분당점', 'url_q': 'https://live.staticflickr.com/910/28102754548_da0e4496ed_q.jpg', 'width_q': 150}, {'farm': 1, 'height_q': 150, 'id': '41255158644', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '125761228@N03', 'secret': 'e03ef47cb1', 'server': '828', 'title': '키친 드 마티네 분당점', 'url_q': 'https://live.staticflickr.com/828/41255158644_e03ef47cb1_q.jpg', 'width_q': 150}, {'farm': 5, 'height_q': 150, 'id': '4348295983', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '42822892@N08', 'secret': 'e659b6f226', 'server': '4034', 'title': '간만에 피자를 사와서 먹었다..', 'url_q': 'https://live.staticflickr.com/4034/4348295983_e659b6f226_q.jpg', 'width_q': 150}, {'farm': 1, 'height_q': 150, 'id': '28102751848', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '125761228@N03', 'secret': '692440efa8', 'server': '976', 'title': '키친 드 마티네 분당점', 'url_q': 'https://live.staticflickr.com/976/28102751848_692440efa8_q.jpg', 'width_q': 150}, {'farm': 9, 'height_q': 150, 'id': '8573125349', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '1', 'owner': '94190476@N05', 'secret': '1f8a5e6e05', 'server': '8506', 'title': 'pizza yam', 'url_q': 'https://live.staticflickr.com/8506/8573125349_1f8a5e6e05_q.jpg', 'width_q': 150}, {'farm': 3, 'height_q': 150, 'id': '4105475760', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '36645149@N07', 'secret': '429ccab38a', 'server': '2638', 'title': 'DSC_0220', 'url_q': 'https://live.staticflickr.com/2638/4105475760_429ccab38a_q.jpg', 'width_q': 150}, {'farm': 5, 'height_q': 150, 'id': '4422130916', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '26970855@N08', 'secret': '248e8c8807', 'server': '4048', 'title': '2010년 봄 수성못 피자 케냐 박교수님', 'url_q': 'https://live.staticflickr.com/4048/4422130916_248e8c8807_q.jpg', 'width_q': 150}, {'farm': 9, 'height_q': 150, 'id': '8049903089', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '1', 'owner': '67347235@N00', 'secret': 'eb1094da67', 'server': '8309', 'title': '도미노피자 치즈케이크샌드 피자', 'url_q': 'https://live.staticflickr.com/8309/8049903089_eb1094da67_q.jpg', 'width_q': 150}, {'farm': 3, 'height_q': 150, 'id': '4105473860', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '36645149@N07', 'secret': '6ac2569a03', 'server': '2758', 'title': 'DSC_0212', 'url_q': 'https://live.staticflickr.com/2758/4105473860_6ac2569a03_q.jpg', 'width_q': 150}, {'farm': 6, 'height_q': 150, 'id': '20730488059', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '97209723@N02', 'secret': '99e0b3587c', 'server': '5707', 'title': '다이소에서 삼천원에 구입한 자리와 하이네켄 두 캔, 이마트 콤비네이션 피자 를 깔아놓고, 벌렁 누워서 ' '먹고싶은 날씨. 저녁엔 체했네, 뭐했네 할꺼지만. 🍕🍕🍕🍻 #analogphotography ' '#filmisnotdead #pic #buyfilmnotmegapixels ' '#filmphotography #filmlife #가을 #여름', 'url_q': 'https://live.staticflickr.com/5707/20730488059_99e0b3587c_q.jpg', 'width_q': 150}, {'farm': 3, 'height_q': 150, 'id': '4105478064', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '36645149@N07', 'secret': 'ca727f1678', 'server': '2769', 'title': 'DSC_0236', 'url_q': 'https://live.staticflickr.com/2769/4105478064_ca727f1678_q.jpg', 'width_q': 150}, {'farm': 3, 'height_q': 150, 'id': '4104710051', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '36645149@N07', 'secret': '35c67ea8a3', 'server': '2800', 'title': 'DSC_0234', 'url_q': 'https://live.staticflickr.com/2800/4104710051_35c67ea8a3_q.jpg', 'width_q': 150}, {'farm': 3, 'height_q': 150, 'id': '4104708299', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '36645149@N07', 'secret': '440b820874', 'server': '2472', 'title': 'DSC_0221', 'url_q': 'https://live.staticflickr.com/2472/4104708299_440b820874_q.jpg', 'width_q': 150}, {'farm': 3, 'height_q': 150, 'id': '3725700867', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '40277931@N04', 'secret': '36f31987e7', 'server': '2570', 'title': '오늘 저녁은 피자~', 'url_q': 'https://live.staticflickr.com/2570/3725700867_36f31987e7_q.jpg', 'width_q': 150}, {'farm': 3, 'height_q': 150, 'id': '4104709097', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '36645149@N07', 'secret': '10e861f0ed', 'server': '2732', 'title': 'DSC_0229', 'url_q': 'https://live.staticflickr.com/2732/4104709097_10e861f0ed_q.jpg', 'width_q': 150}, {'farm': 2, 'height_q': 150, 'id': '26192795180', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '140253868@N03', 'secret': 'e83b7edff8', 'server': '1579', 'title': 'DSC_4240', 'url_q': 'https://live.staticflickr.com/1579/26192795180_e83b7edff8_q.jpg', 'width_q': 150}, {'farm': 3, 'height_q': 150, 'id': '33218560100', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '146544745@N08', 'secret': 'e2f752a29d', 'server': '2939', 'title': '명상센터 연말 파티 음식 - 피자', 'url_q': 'https://live.staticflickr.com/2939/33218560100_e2f752a29d_q.jpg', 'width_q': 150}, {'farm': 3, 'height_q': 150, 'id': '4466297765', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '97502594@N00', 'secret': '50dbfcf990', 'server': '2683', 'title': 'Pizza', 'url_q': 'https://live.staticflickr.com/2683/4466297765_50dbfcf990_q.jpg', 'width_q': 150}, {'farm': 66, 'height_q': 150, 'id': '51122322706', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '91668225@N04', 'secret': '67ac7d6124', 'server': '65535', 'title': 'Octopus Pizza - 문어 피자', 'url_q': 'https://live.staticflickr.com/65535/51122322706_67ac7d6124_q.jpg', 'width_q': 150}, {'farm': 7, 'height_q': 150, 'id': '6285918352', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '8276381@N02', 'secret': '3f0e06e804', 'server': '6050', 'title': '고르곤졸라 피자', 'url_q': 'https://live.staticflickr.com/6050/6285918352_3f0e06e804_q.jpg', 'width_q': 150}, {'farm': 4, 'height_q': 150, 'id': '3437688769', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '7828283@N04', 'secret': '8b00601c01', 'server': '3602', 'title': '이탈리안 갈릭 스테이크 피자', 'url_q': 'https://live.staticflickr.com/3602/3437688769_8b00601c01_q.jpg', 'width_q': 150}, {'farm': 1, 'height_q': 150, 'id': '199894377', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '82971493@N00', 'secret': '55831b39ea', 'server': '57', 'title': '고구마 피자', 'url_q': 'https://live.staticflickr.com/57/199894377_55831b39ea_q.jpg', 'width_q': 150}, {'farm': 4, 'height_q': 150, 'id': '3438498724', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '7828283@N04', 'secret': '87497b0e67', 'server': '3377', 'title': '이탈리안 갈릭 스테이크 피자', 'url_q': 'https://live.staticflickr.com/3377/3438498724_87497b0e67_q.jpg', 'width_q': 150}, {'farm': 3, 'height_q': 150, 'id': '14525193926', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '1', 'owner': '67347235@N00', 'secret': '36b20c5938', 'server': '2897', 'title': '도미노 슈하스코치즈롤 피자', 'url_q': 'https://live.staticflickr.com/2897/14525193926_36b20c5938_q.jpg', 'width_q': 150}, {'farm': 4, 'height_q': 150, 'id': '3438497732', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '7828283@N04', 'secret': 'd45fe0fb73', 'server': '3590', 'title': '이탈리안 갈릭 스테이크 피자', 'url_q': 'https://live.staticflickr.com/3590/3438497732_d45fe0fb73_q.jpg', 'width_q': 150}, {'farm': 4, 'height_q': 150, 'id': '3437684327', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '7828283@N04', 'secret': '32be3072c4', 'server': '3355', 'title': '이탈리안 갈릭 스테이크 피자', 'url_q': 'https://live.staticflickr.com/3355/3437684327_32be3072c4_q.jpg', 'width_q': 150}, {'farm': 4, 'height_q': 150, 'id': '2867213616', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '29895909@N00', 'secret': 'ee453cf57e', 'server': '3035', 'title': '점심에 피자!', 'url_q': 'https://live.staticflickr.com/3035/2867213616_ee453cf57e_q.jpg', 'width_q': 150}, {'farm': 4, 'height_q': 150, 'id': '3438502100', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '7828283@N04', 'secret': '80982eda3f', 'server': '3409', 'title': '이탈리안 갈릭 스테이크 피자', 'url_q': 'https://live.staticflickr.com/3409/3438502100_80982eda3f_q.jpg', 'width_q': 150}, {'farm': 4, 'height_q': 150, 'id': '3438503638', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '7828283@N04', 'secret': '14180b2923', 'server': '3400', 'title': '이탈리안 갈릭 스테이크 피자', 'url_q': 'https://live.staticflickr.com/3400/3438503638_14180b2923_q.jpg', 'width_q': 150}, {'farm': 2, 'height_q': 150, 'id': '570942551', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '4', 'owner': '36215017@N00', 'secret': 'b32fd7d362', 'server': '1135', 'title': '나폴리 피자', 'url_q': 'https://live.staticflickr.com/1135/570942551_b32fd7d362_q.jpg', 'width_q': 150}, {'farm': 4, 'height_q': 150, 'id': '2923882906', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '66048809@N00', 'secret': 'ff68f2532f', 'server': '3284', 'title': '오늘 점심에 먹은 피자. 환..', 'url_q': 'https://live.staticflickr.com/3284/2923882906_ff68f2532f_q.jpg', 'width_q': 150}, {'farm': 9, 'height_q': 150, 'id': '8779812648', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '3', 'owner': '66869306@N02', 'secret': '49447594c7', 'server': '8535', 'title': 'Doch', 'url_q': 'https://live.staticflickr.com/8535/8779812648_49447594c7_q.jpg', 'width_q': 150}, {'farm': 4, 'height_q': 150, 'id': '4617867914', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '1', 'owner': '28709553@N02', 'secret': 'fd7252b8b1', 'server': '3307', 'title': 'It looks nice so I took it. But... Dongseongro Newyork ' 'pizza, Daegu 마음에 들어서 찍었지만…. 동성로 뉴욕 피자', 'url_q': 'https://live.staticflickr.com/3307/4617867914_fd7252b8b1_q.jpg', 'width_q': 150}, {'farm': 4, 'height_q': 150, 'id': '2684300249', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '7828283@N04', 'secret': 'db072bfe52', 'server': '3296', 'title': '오늘 저녁은 피자. 리꼬쏠레..', 'url_q': 'https://live.staticflickr.com/3296/2684300249_db072bfe52_q.jpg', 'width_q': 150}, {'farm': 3, 'height_q': 150, 'id': '4237077142', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '67075495@N00', 'secret': '5a388ee4cd', 'server': '2494', 'title': '대장장이화덕피자 @가회동', 'url_q': 'https://live.staticflickr.com/2494/4237077142_5a388ee4cd_q.jpg', 'width_q': 150}, {'farm': 8, 'height_q': 150, 'id': '13258720735', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '119955585@N07', 'secret': 'e741964037', 'server': '7183', 'title': '고구마 피자', 'url_q': 'https://live.staticflickr.com/7183/13258720735_e741964037_q.jpg', 'width_q': 150}, {'farm': 4, 'height_q': 150, 'id': '2759489997', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '28853050@N04', 'secret': '89910c3754', 'server': '3109', 'title': '계란빵 피자', 'url_q': 'https://live.staticflickr.com/3109/2759489997_89910c3754_q.jpg', 'width_q': 150}, {'farm': 8, 'height_q': 150, 'id': '8959475826', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '11238204@N08', 'secret': '61a63f22f0', 'server': '7367', 'title': '피자 파스타', 'url_q': 'https://live.staticflickr.com/7367/8959475826_61a63f22f0_q.jpg', 'width_q': 150}, {'farm': 3, 'height_q': 150, 'id': '4412785943', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '38937651@N05', 'secret': '971b5f446a', 'server': '2732', 'title': '저녁은 피자! 요즘 너무 인..', 'url_q': 'https://live.staticflickr.com/2732/4412785943_971b5f446a_q.jpg', 'width_q': 150}, {'farm': 6, 'height_q': 150, 'id': '5453010680', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '1', 'owner': '61599635@N00', 'secret': '86114b24f9', 'server': '5091', 'title': '도미노 피자', 'url_q': 'https://live.staticflickr.com/5091/5453010680_86114b24f9_q.jpg', 'width_q': 150}, {'farm': 5, 'height_q': 150, 'id': '35005198564', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '4', 'owner': '118575432@N02', 'secret': '728c1e3f1f', 'server': '4258', 'title': '나폴리 피자', 'url_q': 'https://live.staticflickr.com/4258/35005198564_728c1e3f1f_q.jpg', 'width_q': 150}, {'farm': 6, 'height_q': 150, 'id': '5599740703', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '1', 'owner': '61599635@N00', 'secret': '3b831ac5ee', 'server': '5064', 'title': '로얄크러스트 피자', 'url_q': 'https://live.staticflickr.com/5064/5599740703_3b831ac5ee_q.jpg', 'width_q': 150}, {'farm': 3, 'height_q': 150, 'id': '4348982114', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '42822892@N08', 'secret': 'e4a0f466ac', 'server': '2762', 'title': '집에 들어오는길에 즉석피자를..', 'url_q': 'https://live.staticflickr.com/2762/4348982114_e4a0f466ac_q.jpg', 'width_q': 150}, {'farm': 1, 'height_q': 150, 'id': '20052846995', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '67075495@N00', 'secret': '07cd7e5b71', 'server': '534', 'title': '계동 피자', 'url_q': 'https://live.staticflickr.com/534/20052846995_07cd7e5b71_q.jpg', 'width_q': 150}, {'farm': 4, 'height_q': 150, 'id': '14654829199', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '125848630@N05', 'secret': '1359b446be', 'server': '3890', 'title': '화덕피자와 청포도샐러드 홍대 ‘코요테 살룬’4', 'url_q': 'https://live.staticflickr.com/3890/14654829199_1359b446be_q.jpg', 'width_q': 150}, {'farm': 3, 'height_q': 150, 'id': '3714196325', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '38755651@N06', 'secret': '61d49b4090', 'server': '2467', 'title': '피자 파전', 'url_q': 'https://live.staticflickr.com/2467/3714196325_61d49b4090_q.jpg', 'width_q': 150}, {'farm': 7, 'height_q': 150, 'id': '6127056514', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '10673279@N04', 'secret': 'b72802373f', 'server': '6086', 'title': 'Choices, choices!', 'url_q': 'https://live.staticflickr.com/6086/6127056514_b72802373f_q.jpg', 'width_q': 150}, {'farm': 4, 'height_q': 150, 'id': '14841463775', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '125848630@N05', 'secret': '92b5bb3707', 'server': '3922', 'title': '화덕피자와 청포도샐러드 홍대 ‘코요테 살룬’8', 'url_q': 'https://live.staticflickr.com/3922/14841463775_92b5bb3707_q.jpg', 'width_q': 150}, {'farm': 6, 'height_q': 150, 'id': '14839104564', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '125848630@N05', 'secret': '71660fb5eb', 'server': '5565', 'title': '화덕피자와 청포도샐러드 홍대 ‘코요테 살룬’2', 'url_q': 'https://live.staticflickr.com/5565/14839104564_71660fb5eb_q.jpg', 'width_q': 150}, {'farm': 6, 'height_q': 150, 'id': '14838380091', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '125848630@N05', 'secret': 'ae59af8fe8', 'server': '5558', 'title': '화덕피자와 청포도샐러드 홍대 ‘코요테 살룬’5', 'url_q': 'https://live.staticflickr.com/5558/14838380091_ae59af8fe8_q.jpg', 'width_q': 150}, {'farm': 1, 'height_q': 150, 'id': '161536384', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '1', 'owner': '67347235@N00', 'secret': '7e18012471', 'server': '58', 'title': '피자~', 'url_q': 'https://live.staticflickr.com/58/161536384_7e18012471_q.jpg', 'width_q': 150}, {'farm': 5, 'height_q': 150, 'id': '4371251183', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '22144811@N06', 'secret': '05b6480574', 'server': '4009', 'title': '피자', 'url_q': 'https://live.staticflickr.com/4009/4371251183_05b6480574_q.jpg', 'width_q': 150}, {'farm': 3, 'height_q': 150, 'id': '4085083934', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '10911825@N00', 'secret': '876d91eb1b', 'server': '2741', 'title': '피자', 'url_q': 'https://live.staticflickr.com/2741/4085083934_876d91eb1b_q.jpg', 'width_q': 150}, {'farm': 3, 'height_q': 150, 'id': '4298843145', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '11499044@N08', 'secret': 'd0f6cdee1a', 'server': '2677', 'title': '피자', 'url_q': 'https://live.staticflickr.com/2677/4298843145_d0f6cdee1a_q.jpg', 'width_q': 150}, {'farm': 3, 'height_q': 150, 'id': '4507666426', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '27097317@N00', 'secret': '8a1259a080', 'server': '2679', 'title': '파파존스 피자', 'url_q': 'https://live.staticflickr.com/2679/4507666426_8a1259a080_q.jpg', 'width_q': 150}, {'farm': 4, 'height_q': 150, 'id': '3413830163', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '37091597@N07', 'secret': 'aa45561886', 'server': '3393', 'title': '집에서 만든 피자', 'url_q': 'https://live.staticflickr.com/3393/3413830163_aa45561886_q.jpg', 'width_q': 150}, {'farm': 3, 'height_q': 150, 'id': '2541316066', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '11983072@N05', 'secret': '78f007b3bb', 'server': '2270', 'title': '미스터 피자 그랑프리! 남자..', 'url_q': 'https://live.staticflickr.com/2270/2541316066_78f007b3bb_q.jpg', 'width_q': 150}, {'farm': 3, 'height_q': 150, 'id': '4178623778', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '39206273@N06', 'secret': 'f445ed1b41', 'server': '2723', 'title': '티비보다 오랜만에 피자. 코..', 'url_q': 'https://live.staticflickr.com/2723/4178623778_f445ed1b41_q.jpg', 'width_q': 150}, {'farm': 3, 'height_q': 150, 'id': '4177850507', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '39206273@N06', 'secret': '5083eeb1da', 'server': '2754', 'title': '티비보다 오랜만에 피자. 코..', 'url_q': 'https://live.staticflickr.com/2754/4177850507_5083eeb1da_q.jpg', 'width_q': 150}, {'farm': 5, 'height_q': 150, 'id': '4569397165', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '88939862@N00', 'secret': '3f219ce382', 'server': '4021', 'title': '파파존스 피자 처음 먹어봐요..', 'url_q': 'https://live.staticflickr.com/4021/4569397165_3f219ce382_q.jpg', 'width_q': 150}, {'farm': 4, 'height_q': 150, 'id': '2527013955', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '11983072@N05', 'secret': '94ac7b80c4', 'server': '3087', 'title': '달달한 고구마바이트 피자. ..', 'url_q': 'https://live.staticflickr.com/3087/2527013955_94ac7b80c4_q.jpg', 'width_q': 150}, {'farm': 4, 'height_q': 150, 'id': '2706607240', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '11983072@N05', 'secret': '8ceb7b1124', 'server': '3182', 'title': '배고파서 혼자 피자 시켰다.', 'url_q': 'https://live.staticflickr.com/3182/2706607240_8ceb7b1124_q.jpg', 'width_q': 150}, {'farm': 3, 'height_q': 150, 'id': '2495609705', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '11983072@N05', 'secret': '8772bc1b6c', 'server': '2342', 'title': '오늘은 비브랜드 동네 피자...', 'url_q': 'https://live.staticflickr.com/2342/2495609705_8772bc1b6c_q.jpg', 'width_q': 150}, {'farm': 5, 'height_q': 150, 'id': '4265818022', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '28333197@N04', 'secret': 'fdb703aba5', 'server': '4045', 'title': '오늘의 점심은 피자. 매일 ..', 'url_q': 'https://live.staticflickr.com/4045/4265818022_fdb703aba5_q.jpg', 'width_q': 150}, {'farm': 8, 'height_q': 150, 'id': '8731135707', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '37934744@N02', 'secret': 'c9184db32f', 'server': '7356', 'title': '피자', 'url_q': 'https://live.staticflickr.com/7356/8731135707_c9184db32f_q.jpg', 'width_q': 150}, {'farm': 3, 'height_q': 150, 'id': '4032026682', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '97502594@N00', 'secret': '270646a031', 'server': '2481', 'title': '피자', 'url_q': 'https://live.staticflickr.com/2481/4032026682_270646a031_q.jpg', 'width_q': 150}, {'farm': 1, 'height_q': 150, 'id': '125574415', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '1', 'owner': '67347235@N00', 'secret': '3229ceb6c0', 'server': '42', 'title': '스위트피자', 'url_q': 'https://live.staticflickr.com/42/125574415_3229ceb6c0_q.jpg', 'width_q': 150}, {'farm': 6, 'height_q': 150, 'id': '5348728059', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '39068097@N03', 'secret': '9fb4e5554d', 'server': '5249', 'title': '수제피자', 'url_q': 'https://live.staticflickr.com/5249/5348728059_9fb4e5554d_q.jpg', 'width_q': 150}, {'farm': 3, 'height_q': 150, 'id': '5838656536', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '37934744@N02', 'secret': '46304cb229', 'server': '2744', 'title': '피자', 'url_q': 'https://live.staticflickr.com/2744/5838656536_46304cb229_q.jpg', 'width_q': 150}, {'farm': 6, 'height_q': 150, 'id': '5512007666', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '4', 'owner': '28458636@N08', 'secret': '6091730b89', 'server': '5260', 'title': '피자', 'url_q': 'https://live.staticflickr.com/5260/5512007666_6091730b89_q.jpg', 'width_q': 150}, {'farm': 9, 'height_q': 150, 'id': '7949460978', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '28633808@N02', 'secret': '77568a00ea', 'server': '8034', 'title': '피자 ☆', 'url_q': 'https://live.staticflickr.com/8034/7949460978_77568a00ea_q.jpg', 'width_q': 150}, {'farm': 7, 'height_q': 150, 'id': '5929565000', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '37934744@N02', 'secret': '3b2f282f42', 'server': '6002', 'title': '피자', 'url_q': 'https://live.staticflickr.com/6002/5929565000_3b2f282f42_q.jpg', 'width_q': 150}, {'farm': 3, 'height_q': 150, 'id': '4142505912', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '1', 'owner': '27056886@N00', 'secret': 'bca71417ef', 'server': '2675', 'title': 'PB070232', 'url_q': 'https://live.staticflickr.com/2675/4142505912_bca71417ef_q.jpg', 'width_q': 150}, {'farm': 8, 'height_q': 150, 'id': '6445703511', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '37934744@N02', 'secret': '6dd3851124', 'server': '7175', 'title': '피자', 'url_q': 'https://live.staticflickr.com/7175/6445703511_6dd3851124_q.jpg', 'width_q': 150}, {'farm': 9, 'height_q': 150, 'id': '8296532005', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '90950581@N03', 'secret': '1b6a6edc57', 'server': '8361', 'title': '식당에서 생일파티', 'url_q': 'https://live.staticflickr.com/8361/8296532005_1b6a6edc57_q.jpg', 'width_q': 150}, {'farm': 9, 'height_q': 150, 'id': '8296532231', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '90950581@N03', 'secret': '06940612c7', 'server': '8493', 'title': '식당에서 생일파티', 'url_q': 'https://live.staticflickr.com/8493/8296532231_06940612c7_q.jpg', 'width_q': 150}, {'farm': 9, 'height_q': 150, 'id': '8296531043', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '90950581@N03', 'secret': '17acaec203', 'server': '8351', 'title': '식당에서 생일파티', 'url_q': 'https://live.staticflickr.com/8351/8296531043_17acaec203_q.jpg', 'width_q': 150}, {'farm': 2, 'height_q': 150, 'id': '1458663172', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '8638224@N07', 'secret': '9cadfb4940', 'server': '1212', 'title': '코슥코피자', 'url_q': 'https://live.staticflickr.com/1212/1458663172_9cadfb4940_q.jpg', 'width_q': 150}, {'farm': 9, 'height_q': 150, 'id': '17076459160', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '27097317@N00', 'secret': '7960c8358e', 'server': '8803', 'title': '20150422_194211', 'url_q': 'https://live.staticflickr.com/8803/17076459160_7960c8358e_q.jpg', 'width_q': 150}, {'farm': 4, 'height_q': 150, 'id': '19197774921', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '131720082@N06', 'secret': '0d51863637', 'server': '3955', 'title': '피자', 'url_q': 'https://live.staticflickr.com/3955/19197774921_0d51863637_q.jpg', 'width_q': 150}, {'farm': 8, 'height_q': 150, 'id': '17056608477', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '27097317@N00', 'secret': 'ae781450a9', 'server': '7665', 'title': '20150422_194141', 'url_q': 'https://live.staticflickr.com/7665/17056608477_ae781450a9_q.jpg', 'width_q': 150}, {'farm': 4, 'height_q': 150, 'id': '4571409654', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '22036096@N02', 'secret': '0206369dc2', 'server': '3501', 'title': '피자기다리는데 40분이상을 ..', 'url_q': 'https://live.staticflickr.com/3501/4571409654_0206369dc2_q.jpg', 'width_q': 150}, {'farm': 9, 'height_q': 150, 'id': '17056608567', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '27097317@N00', 'secret': 'e762599c7b', 'server': '8698', 'title': '20150422_194108', 'url_q': 'https://live.staticflickr.com/8698/17056608567_e762599c7b_q.jpg', 'width_q': 150}, {'farm': 8, 'height_q': 150, 'id': '9204578701', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '16437056@N02', 'secret': 'e607cc10bd', 'server': '7308', 'title': '081', 'url_q': 'https://live.staticflickr.com/7308/9204578701_e607cc10bd_q.jpg', 'width_q': 150}, {'farm': 3, 'height_q': 150, 'id': '9204578661', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '16437056@N02', 'secret': 'a063da66c0', 'server': '2865', 'title': '컵-1', 'url_q': 'https://live.staticflickr.com/2865/9204578661_a063da66c0_q.jpg', 'width_q': 150}, {'farm': 8, 'height_q': 150, 'id': '9204578429', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '16437056@N02', 'secret': '78e2bd65c0', 'server': '7314', 'title': 'PP-3', 'url_q': 'https://live.staticflickr.com/7314/9204578429_78e2bd65c0_q.jpg', 'width_q': 150}, {'farm': 3, 'height_q': 150, 'id': '4173380001', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '27363890@N03', 'secret': '676bdeefbc', 'server': '2662', 'title': '진리의 시장피자 콤비네이션', 'url_q': 'https://live.staticflickr.com/2662/4173380001_676bdeefbc_q.jpg', 'width_q': 150}, {'farm': 5, 'height_q': 150, 'id': '4419734656', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '83002893@N00', 'secret': 'dacdf1c853', 'server': '4065', 'title': '피자', 'url_q': 'https://live.staticflickr.com/4065/4419734656_dacdf1c853_q.jpg', 'width_q': 150}, {'farm': 8, 'height_q': 150, 'id': '9204578207', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '16437056@N02', 'secret': '0f12e99bc5', 'server': '7300', 'title': 'PP-00', 'url_q': 'https://live.staticflickr.com/7300/9204578207_0f12e99bc5_q.jpg', 'width_q': 150}, {'farm': 4, 'height_q': 150, 'id': '2719040185', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '22833020@N05', 'secret': '710d937e25', 'server': '3170', 'title': '이게 진짜 피자지 이태원..', 'url_q': 'https://live.staticflickr.com/3170/2719040185_710d937e25_q.jpg', 'width_q': 150}, {'farm': 4, 'height_q': 150, 'id': '9204578263', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '16437056@N02', 'secret': 'fa55ff7054', 'server': '3819', 'title': 'PP-2', 'url_q': 'https://live.staticflickr.com/3819/9204578263_fa55ff7054_q.jpg', 'width_q': 150}, {'farm': 6, 'height_q': 150, 'id': '5333026718', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '11499044@N08', 'secret': '1bb018c675', 'server': '5241', 'title': 'IMGP2407', 'url_q': 'https://live.staticflickr.com/5241/5333026718_1bb018c675_q.jpg', 'width_q': 150}, {'farm': 2, 'height_q': 150, 'id': '24407733726', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '103745897@N03', 'secret': '7ce6c6b83d', 'server': '1650', 'title': '피자', 'url_q': 'https://live.staticflickr.com/1650/24407733726_7ce6c6b83d_q.jpg', 'width_q': 150}, {'farm': 3, 'height_q': 150, 'id': '2498931550', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '11983072@N05', 'secret': '337a09ff0b', 'server': '2374', 'title': '소고기가 `안`들어간 치킨바..', 'url_q': 'https://live.staticflickr.com/2374/2498931550_337a09ff0b_q.jpg', 'width_q': 150}, {'farm': 6, 'height_q': 150, 'id': '5549577532', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '11499044@N08', 'secret': '143670a89a', 'server': '5021', 'title': '피자', 'url_q': 'https://live.staticflickr.com/5021/5549577532_143670a89a_q.jpg', 'width_q': 150}, {'farm': 6, 'height_q': 150, 'id': '5333026250', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '11499044@N08', 'secret': '292b30d0d2', 'server': '5242', 'title': 'IMGP2406', 'url_q': 'https://live.staticflickr.com/5242/5333026250_292b30d0d2_q.jpg', 'width_q': 150}, {'farm': 5, 'height_q': 150, 'id': '4215057916', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '8598206@N02', 'secret': 'd20d47f718', 'server': '4019', 'title': '크리스마스 저녁 식사', 'url_q': 'https://live.staticflickr.com/4019/4215057916_d20d47f718_q.jpg', 'width_q': 150}, {'farm': 1, 'height_q': 150, 'id': '210290454', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '1', 'owner': '27056886@N00', 'secret': 'c2163d603c', 'server': '88', 'title': '피자', 'url_q': 'https://live.staticflickr.com/88/210290454_c2163d603c_q.jpg', 'width_q': 150}, {'farm': 4, 'height_q': 150, 'id': '2898527128', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '28682831@N03', 'secret': '4bcfa23c1b', 'server': '3293', 'title': '피자', 'url_q': 'https://live.staticflickr.com/3293/2898527128_4bcfa23c1b_q.jpg', 'width_q': 150}, {'farm': 3, 'height_q': 150, 'id': '4236966554', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '36549880@N07', 'secret': '51e4f722a6', 'server': '2506', 'title': '피자~', 'url_q': 'https://live.staticflickr.com/2506/4236966554_51e4f722a6_q.jpg', 'width_q': 150}, {'farm': 4, 'height_q': 150, 'id': '3327512419', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '11983072@N05', 'secret': '532e6dfbfd', 'server': '3350', 'title': '피자…', 'url_q': 'https://live.staticflickr.com/3350/3327512419_532e6dfbfd_q.jpg', 'width_q': 150}, {'farm': 5, 'height_q': 150, 'id': '4463844825', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '22693630@N03', 'secret': 'd0d3e9293c', 'server': '4043', 'title': '피자.', 'url_q': 'https://live.staticflickr.com/4043/4463844825_d0d3e9293c_q.jpg', 'width_q': 150}, {'farm': 4, 'height_q': 150, 'id': '4080495284', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '22693630@N03', 'secret': '4717689c8c', 'server': '3525', 'title': '피자.', 'url_q': 'https://live.staticflickr.com/3525/4080495284_4717689c8c_q.jpg', 'width_q': 150}, {'farm': 4, 'height_q': 150, 'id': '4074226627', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '22693630@N03', 'secret': 'f25f9235e7', 'server': '3157', 'title': '피자.', 'url_q': 'https://live.staticflickr.com/3157/4074226627_f25f9235e7_q.jpg', 'width_q': 150}, {'farm': 5, 'height_q': 150, 'id': '4331802373', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '26474193@N08', 'secret': 'f407f09aa0', 'server': '4032', 'title': '피자!', 'url_q': 'https://live.staticflickr.com/4032/4331802373_f407f09aa0_q.jpg', 'width_q': 150}, {'farm': 6, 'height_q': 150, 'id': '5333025050', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '11499044@N08', 'secret': '58f3baf859', 'server': '5010', 'title': 'IMGP2410', 'url_q': 'https://live.staticflickr.com/5010/5333025050_58f3baf859_q.jpg', 'width_q': 150}, {'farm': 3, 'height_q': 150, 'id': '4190438788', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '36613407@N02', 'secret': '61d8517538', 'server': '2595', 'title': '미군부대PX에서 사온 피자!..', 'url_q': 'https://live.staticflickr.com/2595/4190438788_61d8517538_q.jpg', 'width_q': 150}, {'farm': 5, 'height_q': 150, 'id': '4462016944', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '28909386@N06', 'secret': 'a3f8336195', 'server': '4062', 'title': '알고보니 그 병 탄산수 병이..', 'url_q': 'https://live.staticflickr.com/4062/4462016944_a3f8336195_q.jpg', 'width_q': 150}, {'farm': 3, 'height_q': 150, 'id': '2231926776', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '52038763@N00', 'secret': 'a0194f9398', 'server': '2151', 'title': '피자', 'url_q': 'https://live.staticflickr.com/2151/2231926776_a0194f9398_q.jpg', 'width_q': 150}, {'farm': 5, 'height_q': 150, 'id': '4540687574', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '26991826@N03', 'secret': 'f9663f14d4', 'server': '4061', 'title': '마무리는 피자힐의 피자', 'url_q': 'https://live.staticflickr.com/4061/4540687574_f9663f14d4_q.jpg', 'width_q': 150}, {'farm': 7, 'height_q': 150, 'id': '6302481696', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '68780192@N07', 'secret': '31e85dc0e0', 'server': '6044', 'title': '피자', 'url_q': 'https://live.staticflickr.com/6044/6302481696_31e85dc0e0_q.jpg', 'width_q': 150}, {'farm': 1, 'height_q': 150, 'id': '22605739242', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '130840633@N03', 'secret': '115741a176', 'server': '723', 'title': '피자', 'url_q': 'https://live.staticflickr.com/723/22605739242_115741a176_q.jpg', 'width_q': 150}, {'farm': 8, 'height_q': 150, 'id': '14026902531', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '123527920@N02', 'secret': '2296fb3eb7', 'server': '7383', 'title': '피자', 'url_q': 'https://live.staticflickr.com/7383/14026902531_2296fb3eb7_q.jpg', 'width_q': 150}, {'farm': 8, 'height_q': 150, 'id': '14026876582', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '123527920@N02', 'secret': '0e71fdae76', 'server': '7274', 'title': '피자', 'url_q': 'https://live.staticflickr.com/7274/14026876582_0e71fdae76_q.jpg', 'width_q': 150}, {'farm': 1, 'height_q': 150, 'id': '19742010310', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '134724746@N05', 'secret': '06172af529', 'server': '512', 'title': '피자', 'url_q': 'https://live.staticflickr.com/512/19742010310_06172af529_q.jpg', 'width_q': 150}, {'farm': 5, 'height_q': 150, 'id': '37512909800', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '27097317@N00', 'secret': 'b821849a46', 'server': '4486', 'title': '20171018_181814', 'url_q': 'https://live.staticflickr.com/4486/37512909800_b821849a46_q.jpg', 'width_q': 150}, {'farm': 1, 'height_q': 150, 'id': '20229329081', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '133429258@N03', 'secret': '636a29bcf1', 'server': '457', 'title': '피자', 'url_q': 'https://live.staticflickr.com/457/20229329081_636a29bcf1_q.jpg', 'width_q': 150}, {'farm': 5, 'height_q': 150, 'id': '39323995031', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '139132837@N04', 'secret': 'a10bd5b4fe', 'server': '4640', 'title': '피자', 'url_q': 'https://live.staticflickr.com/4640/39323995031_a10bd5b4fe_q.jpg', 'width_q': 150}, {'farm': 1, 'height_q': 150, 'id': '20007410638', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '40083602@N04', 'secret': '085623e200', 'server': '444', 'title': '피자', 'url_q': 'https://live.staticflickr.com/444/20007410638_085623e200_q.jpg', 'width_q': 150}, {'farm': 5, 'height_q': 150, 'id': '37156505263', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '139860603@N07', 'secret': 'c24f5066fd', 'server': '4466', 'title': '피자', 'url_q': 'https://live.staticflickr.com/4466/37156505263_c24f5066fd_q.jpg', 'width_q': 150}, {'farm': 4, 'height_q': 150, 'id': '3915085980', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '21964241@N00', 'secret': '612c49bdce', 'server': '3504', 'title': '한가한 일요일 오후', 'url_q': 'https://live.staticflickr.com/3504/3915085980_612c49bdce_q.jpg', 'width_q': 150}, {'farm': 6, 'height_q': 150, 'id': '5332410337', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '11499044@N08', 'secret': 'eb4fedc509', 'server': '5123', 'title': 'IMGP2405', 'url_q': 'https://live.staticflickr.com/5123/5332410337_eb4fedc509_q.jpg', 'width_q': 150}, {'farm': 4, 'height_q': 150, 'id': '2988202523', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '87171883@N00', 'secret': '3004ec611c', 'server': '3006', 'title': '게살몽땅', 'url_q': 'https://live.staticflickr.com/3006/2988202523_3004ec611c_q.jpg', 'width_q': 150}, {'farm': 8, 'height_q': 150, 'id': '7399919188', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '8429795@N05', 'secret': '053d8e8e54', 'server': '7228', 'title': '피자 먹을꺼임', 'url_q': 'https://live.staticflickr.com/7228/7399919188_053d8e8e54_q.jpg', 'width_q': 150}, {'farm': 4, 'height_q': 150, 'id': '2824439740', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '7958880@N02', 'secret': '278c0f0a7e', 'server': '3289', 'title': '오늘 저녁은 Papa Joh..', 'url_q': 'https://live.staticflickr.com/3289/2824439740_278c0f0a7e_q.jpg', 'width_q': 150}, {'farm': 3, 'height_q': 150, 'id': '4085873899', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '44124301123@N01', 'secret': '9f6126e719', 'server': '2502', 'title': '여보님이 손수 만든 핏자- 데헷', 'url_q': 'https://live.staticflickr.com/2502/4085873899_9f6126e719_q.jpg', 'width_q': 150}, {'farm': 6, 'height_q': 150, 'id': '5333027214', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '11499044@N08', 'secret': '9664e02088', 'server': '5003', 'title': 'IMGP2409', 'url_q': 'https://live.staticflickr.com/5003/5333027214_9664e02088_q.jpg', 'width_q': 150}, {'farm': 3, 'height_q': 150, 'id': '4105475516', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '36645149@N07', 'secret': '40fb45ddc8', 'server': '2656', 'title': 'DSC_0219', 'url_q': 'https://live.staticflickr.com/2656/4105475516_40fb45ddc8_q.jpg', 'width_q': 150}, {'farm': 3, 'height_q': 150, 'id': '4105474630', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '36645149@N07', 'secret': 'fb37f23120', 'server': '2684', 'title': 'DSC_0214', 'url_q': 'https://live.staticflickr.com/2684/4105474630_fb37f23120_q.jpg', 'width_q': 150}, {'farm': 5, 'height_q': 150, 'id': '4647401964', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '43033308@N08', 'secret': '8055ef4e87', 'server': '4072', 'title': '구워져랏!', 'url_q': 'https://live.staticflickr.com/4072/4647401964_8055ef4e87_q.jpg', 'width_q': 150}, {'farm': 3, 'height_q': 150, 'id': '4104706645', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '36645149@N07', 'secret': '5246af6984', 'server': '2605', 'title': 'DSC_0213', 'url_q': 'https://live.staticflickr.com/2605/4104706645_5246af6984_q.jpg', 'width_q': 150}, {'farm': 4, 'height_q': 150, 'id': '2646124358', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '7828283@N04', 'secret': 'd972943217', 'server': '3179', 'title': '저녁을 이제야', 'url_q': 'https://live.staticflickr.com/3179/2646124358_d972943217_q.jpg', 'width_q': 150}, {'farm': 3, 'height_q': 150, 'id': '4104707333', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '36645149@N07', 'secret': '7eb99482e6', 'server': '2511', 'title': 'DSC_0218', 'url_q': 'https://live.staticflickr.com/2511/4104707333_7eb99482e6_q.jpg', 'width_q': 150}, {'farm': 6, 'height_q': 150, 'id': '22815038114', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '44381673@N05', 'secret': 'a3af255906', 'server': '5718', 'title': '이태원 피자.', 'url_q': 'https://live.staticflickr.com/5718/22815038114_a3af255906_q.jpg', 'width_q': 150}, {'farm': 3, 'height_q': 150, 'id': '3979096745', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '88939862@N00', 'secret': 'd7a7a6ff7f', 'server': '2620', 'title': '오랜만에 피자 식미투', 'url_q': 'https://live.staticflickr.com/2620/3979096745_d7a7a6ff7f_q.jpg', 'width_q': 150}, {'farm': 4, 'height_q': 150, 'id': '2642137790', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '12670449@N06', 'secret': '0460b7098b', 'server': '3098', 'title': '야간 피자 타임!', 'url_q': 'https://live.staticflickr.com/3098/2642137790_0460b7098b_q.jpg', 'width_q': 150}, {'farm': 1, 'height_q': 150, 'id': '23066344875', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '123832885@N05', 'secret': '51f090e3f8', 'server': '717', 'title': '피자 가방', 'url_q': 'https://live.staticflickr.com/717/23066344875_51f090e3f8_q.jpg', 'width_q': 150}, {'farm': 4, 'height_q': 150, 'id': '33182677910', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '146544745@N08', 'secret': '5f2d597d2d', 'server': '3839', 'title': '명상센터 연말 파티 음식 - 피자', 'url_q': 'https://live.staticflickr.com/3839/33182677910_5f2d597d2d_q.jpg', 'width_q': 150}, {'farm': 7, 'height_q': 150, 'id': '6877770274', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '29895909@N00', 'secret': '04abedec61', 'server': '6231', 'title': '야근은 피자.', 'url_q': 'https://live.staticflickr.com/6231/6877770274_04abedec61_q.jpg', 'width_q': 150}, {'farm': 6, 'height_q': 150, 'id': '5252969286', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '97502594@N00', 'secret': '8021313c3e', 'server': '5281', 'title': 'Pizza di Pomodoro', 'url_q': 'https://live.staticflickr.com/5281/5252969286_8021313c3e_q.jpg', 'width_q': 150}, {'farm': 6, 'height_q': 150, 'id': '5534999952', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '46037582@N03', 'secret': 'fd086c6a92', 'server': '5132', 'title': '홈메이드 피자', 'url_q': 'https://live.staticflickr.com/5132/5534999952_fd086c6a92_q.jpg', 'width_q': 150}, {'farm': 8, 'height_q': 150, 'id': '10957920583', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '109225368@N06', 'secret': 'e1c9012f32', 'server': '7394', 'title': '이태원 피자 가게', 'url_q': 'https://live.staticflickr.com/7394/10957920583_e1c9012f32_q.jpg', 'width_q': 150}, {'farm': 8, 'height_q': 150, 'id': '10957920613', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '109225368@N06', 'secret': 'e8b6beba0e', 'server': '7443', 'title': '이태원 피자 가게', 'url_q': 'https://live.staticflickr.com/7443/10957920613_e8b6beba0e_q.jpg', 'width_q': 150}, {'farm': 5, 'height_q': 150, 'id': '4621418606', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '7828283@N04', 'secret': '064996f476', 'server': '4064', 'title': '뜨거운 피자', 'url_q': 'https://live.staticflickr.com/4064/4621418606_064996f476_q.jpg', 'width_q': 150}, {'farm': 3, 'height_q': 150, 'id': '4365122212', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '40398325@N03', 'secret': '4a1e6c935d', 'server': '2754', 'title': '빨간모자에서 피자를 먹었더니..', 'url_q': 'https://live.staticflickr.com/2754/4365122212_4a1e6c935d_q.jpg', 'width_q': 150}, {'farm': 9, 'height_q': 150, 'id': '8320873316', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '91629146@N02', 'secret': '9d97d62a8c', 'server': '8498', 'title': 'Pizza 피자', 'url_q': 'https://live.staticflickr.com/8498/8320873316_9d97d62a8c_q.jpg', 'width_q': 150}, {'farm': 8, 'height_q': 150, 'id': '6445463567', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '4', 'owner': '66172503@N00', 'secret': 'c5da3f2ef2', 'server': '7147', 'title': '페페로니 피자', 'url_q': 'https://live.staticflickr.com/7147/6445463567_c5da3f2ef2_q.jpg', 'width_q': 150}, {'farm': 4, 'height_q': 150, 'id': '2759489983', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '28853050@N04', 'secret': 'caa6b25970', 'server': '3054', 'title': '계란빵 피자', 'url_q': 'https://live.staticflickr.com/3054/2759489983_caa6b25970_q.jpg', 'width_q': 150}, {'farm': 5, 'height_q': 150, 'id': '4308166385', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '27363890@N03', 'secret': '8c9943fa82', 'server': '4014', 'title': '리미니 구스또미오 피자', 'url_q': 'https://live.staticflickr.com/4014/4308166385_8c9943fa82_q.jpg', 'width_q': 150}, {'farm': 8, 'height_q': 150, 'id': '10233465664', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '49698717@N02', 'secret': 'f70fa90199', 'server': '7300', 'title': '피자 맛있어요!', 'url_q': 'https://live.staticflickr.com/7300/10233465664_f70fa90199_q.jpg', 'width_q': 150}, {'farm': 1, 'height_q': 150, 'id': '259235964', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '82971493@N00', 'secret': 'f64c146c6a', 'server': '119', 'title': '포테이토 피자', 'url_q': 'https://live.staticflickr.com/119/259235964_f64c146c6a_q.jpg', 'width_q': 150}, {'farm': 5, 'height_q': 150, 'id': '4647425282', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '43033308@N08', 'secret': 'dd6031c5a9', 'server': '4030', 'title': '모양은 볼품없지만 좋은 치즈..', 'url_q': 'https://live.staticflickr.com/4030/4647425282_dd6031c5a9_q.jpg', 'width_q': 150}, {'farm': 3, 'height_q': 150, 'id': '4455735135', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '46130640@N05', 'secret': '63131701d2', 'server': '2705', 'title': '또 피자~', 'url_q': 'https://live.staticflickr.com/2705/4455735135_63131701d2_q.jpg', 'width_q': 150}, {'farm': 4, 'height_q': 150, 'id': '3350390285', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '1', 'owner': '8055436@N08', 'secret': '850ac73619', 'server': '3473', 'title': '피자 박스는 쌓여만 가고.', 'url_q': 'https://live.staticflickr.com/3473/3350390285_850ac73619_q.jpg', 'width_q': 150}, {'farm': 4, 'height_q': 150, 'id': '2933721437', 'isfamily': 0, 'isfriend': 0, 'ispublic': 1, 'license': '0', 'owner': '11983072@N05', 'secret': 'e8d2827a2a', 'server': '3001', 'title': '치킨바베큐 피자!', 'url_q': 'https://live.staticflickr.com/3001/2933721437_e8d2827a2a_q.jpg', 'width_q': 150}], 'total': 2241} 1:download= https://live.staticflickr.com/5248/5359100116_f8a66ed0c9_q.jpg 2:download= https://live.staticflickr.com/5673/21543946772_e4054957e9_q.jpg 3:download= https://live.staticflickr.com/3263/3137453339_4a303f6ded_q.jpg 4:download= https://live.staticflickr.com/8005/7582603778_67c3af4104_q.jpg 5:download= https://live.staticflickr.com/8478/8284054706_f61bda4948_q.jpg 6:download= https://live.staticflickr.com/4003/4237076954_68e28252e0_q.jpg 7:download= https://live.staticflickr.com/5136/5397326628_e9d0cc5012_q.jpg 8:download= https://live.staticflickr.com/3224/2655615464_16f96fb146_q.jpg 9:download= https://live.staticflickr.com/3065/2655617008_429e219ce9_q.jpg 10:download= https://live.staticflickr.com/4007/4197243546_f7d7dc5666_q.jpg 11:download= https://live.staticflickr.com/2176/3545734840_3eabe61193_q.jpg 12:download= https://live.staticflickr.com/3592/3504326558_dd92638aea_q.jpg 13:download= https://live.staticflickr.com/5052/5398188992_48b6366814_q.jpg 14:download= https://live.staticflickr.com/4054/4502228087_d3d3e92810_q.jpg 15:download= https://live.staticflickr.com/6031/6382440549_eccdf0429e_q.jpg 16:download= https://live.staticflickr.com/8354/8296531367_d748e85ccd_q.jpg 17:download= https://live.staticflickr.com/8219/8296531751_5bde229514_q.jpg 18:download= https://live.staticflickr.com/3608/3414644752_099d725a48_q.jpg 19:download= https://live.staticflickr.com/2882/12046872666_d22fb12aa1_q.jpg 20:download= https://live.staticflickr.com/8816/17076245128_b8098362b2_q.jpg 21:download= https://live.staticflickr.com/2726/4159201955_bf60a73145_q.jpg 22:download= https://live.staticflickr.com/7058/6927971061_b2450d38ce_q.jpg 23:download= https://live.staticflickr.com/7292/8959472388_d17fe57d53_q.jpg 24:download= https://live.staticflickr.com/2808/8959473932_39b7c786dd_q.jpg 25:download= https://live.staticflickr.com/975/41929422982_5097b9ae3f_q.jpg 26:download= https://live.staticflickr.com/2566/4142520688_bcd2c7f4cb_q.jpg 27:download= https://live.staticflickr.com/5465/7060254281_d4c6b0959f_q.jpg 28:download= https://live.staticflickr.com/4064/4334668082_7dd4a010d9_q.jpg 29:download= https://live.staticflickr.com/4035/4291675683_cdf5ce4047_q.jpg 30:download= https://live.staticflickr.com/943/28102752988_79548e98e3_q.jpg 31:download= https://live.staticflickr.com/909/28102751158_36c87278c3_q.jpg 32:download= https://live.staticflickr.com/970/41255158924_e6a7462f7b_q.jpg 33:download= https://live.staticflickr.com/4123/4796426220_c19258859e_q.jpg 34:download= https://live.staticflickr.com/3391/3538815030_7397f630bb_q.jpg 35:download= https://live.staticflickr.com/2781/4273844698_6ee99a4353_q.jpg 36:download= https://live.staticflickr.com/826/41255157024_2debbf087f_q.jpg 37:download= https://live.staticflickr.com/2662/4105477328_aa5c9d497b_q.jpg 38:download= https://live.staticflickr.com/909/41255157984_ac2dd29a75_q.jpg 39:download= https://live.staticflickr.com/832/41255158214_6d5576f94d_q.jpg 40:download= https://live.staticflickr.com/4019/4651846635_4ef40083ff_q.jpg 41:download= https://live.staticflickr.com/955/41255157714_232ae1e100_q.jpg 42:download= https://live.staticflickr.com/908/41929423492_cf23aa73c1_q.jpg 43:download= https://live.staticflickr.com/953/41255157414_42676d6dea_q.jpg 44:download= https://live.staticflickr.com/981/41929423942_1e3fe62fba_q.jpg 45:download= https://live.staticflickr.com/7643/26931993834_4bea0399c0_q.jpg 46:download= https://live.staticflickr.com/910/28102754548_da0e4496ed_q.jpg 47:download= https://live.staticflickr.com/828/41255158644_e03ef47cb1_q.jpg 48:download= https://live.staticflickr.com/4034/4348295983_e659b6f226_q.jpg 49:download= https://live.staticflickr.com/976/28102751848_692440efa8_q.jpg 50:download= https://live.staticflickr.com/8506/8573125349_1f8a5e6e05_q.jpg 51:download= https://live.staticflickr.com/2638/4105475760_429ccab38a_q.jpg 52:download= https://live.staticflickr.com/4048/4422130916_248e8c8807_q.jpg 53:download= https://live.staticflickr.com/8309/8049903089_eb1094da67_q.jpg 54:download= https://live.staticflickr.com/2758/4105473860_6ac2569a03_q.jpg 55:download= https://live.staticflickr.com/5707/20730488059_99e0b3587c_q.jpg 56:download= https://live.staticflickr.com/2769/4105478064_ca727f1678_q.jpg 57:download= https://live.staticflickr.com/2800/4104710051_35c67ea8a3_q.jpg 58:download= https://live.staticflickr.com/2472/4104708299_440b820874_q.jpg 59:download= https://live.staticflickr.com/2570/3725700867_36f31987e7_q.jpg 60:download= https://live.staticflickr.com/2732/4104709097_10e861f0ed_q.jpg 61:download= https://live.staticflickr.com/1579/26192795180_e83b7edff8_q.jpg 62:download= https://live.staticflickr.com/2939/33218560100_e2f752a29d_q.jpg 63:download= https://live.staticflickr.com/2683/4466297765_50dbfcf990_q.jpg 64:download= https://live.staticflickr.com/65535/51122322706_67ac7d6124_q.jpg 65:download= https://live.staticflickr.com/6050/6285918352_3f0e06e804_q.jpg 66:download= https://live.staticflickr.com/3602/3437688769_8b00601c01_q.jpg 67:download= https://live.staticflickr.com/57/199894377_55831b39ea_q.jpg 68:download= https://live.staticflickr.com/3377/3438498724_87497b0e67_q.jpg 69:download= https://live.staticflickr.com/2897/14525193926_36b20c5938_q.jpg 70:download= https://live.staticflickr.com/3590/3438497732_d45fe0fb73_q.jpg 71:download= https://live.staticflickr.com/3355/3437684327_32be3072c4_q.jpg 72:download= https://live.staticflickr.com/3035/2867213616_ee453cf57e_q.jpg 73:download= https://live.staticflickr.com/3409/3438502100_80982eda3f_q.jpg 74:download= https://live.staticflickr.com/3400/3438503638_14180b2923_q.jpg 75:download= https://live.staticflickr.com/1135/570942551_b32fd7d362_q.jpg 76:download= https://live.staticflickr.com/3284/2923882906_ff68f2532f_q.jpg 77:download= https://live.staticflickr.com/8535/8779812648_49447594c7_q.jpg 78:download= https://live.staticflickr.com/3307/4617867914_fd7252b8b1_q.jpg 79:download= https://live.staticflickr.com/3296/2684300249_db072bfe52_q.jpg 80:download= https://live.staticflickr.com/2494/4237077142_5a388ee4cd_q.jpg 81:download= https://live.staticflickr.com/7183/13258720735_e741964037_q.jpg 82:download= https://live.staticflickr.com/3109/2759489997_89910c3754_q.jpg 83:download= https://live.staticflickr.com/7367/8959475826_61a63f22f0_q.jpg 84:download= https://live.staticflickr.com/2732/4412785943_971b5f446a_q.jpg 85:download= https://live.staticflickr.com/5091/5453010680_86114b24f9_q.jpg 86:download= https://live.staticflickr.com/4258/35005198564_728c1e3f1f_q.jpg 87:download= https://live.staticflickr.com/5064/5599740703_3b831ac5ee_q.jpg 88:download= https://live.staticflickr.com/2762/4348982114_e4a0f466ac_q.jpg 89:download= https://live.staticflickr.com/534/20052846995_07cd7e5b71_q.jpg 90:download= https://live.staticflickr.com/3890/14654829199_1359b446be_q.jpg 91:download= https://live.staticflickr.com/2467/3714196325_61d49b4090_q.jpg 92:download= https://live.staticflickr.com/6086/6127056514_b72802373f_q.jpg 93:download= https://live.staticflickr.com/3922/14841463775_92b5bb3707_q.jpg 94:download= https://live.staticflickr.com/5565/14839104564_71660fb5eb_q.jpg 95:download= https://live.staticflickr.com/5558/14838380091_ae59af8fe8_q.jpg 96:download= https://live.staticflickr.com/58/161536384_7e18012471_q.jpg 97:download= https://live.staticflickr.com/4009/4371251183_05b6480574_q.jpg 98:download= https://live.staticflickr.com/2741/4085083934_876d91eb1b_q.jpg 99:download= https://live.staticflickr.com/2677/4298843145_d0f6cdee1a_q.jpg 100:download= https://live.staticflickr.com/2679/4507666426_8a1259a080_q.jpg 101:download= https://live.staticflickr.com/3393/3413830163_aa45561886_q.jpg 102:download= https://live.staticflickr.com/2270/2541316066_78f007b3bb_q.jpg 103:download= https://live.staticflickr.com/2723/4178623778_f445ed1b41_q.jpg 104:download= https://live.staticflickr.com/2754/4177850507_5083eeb1da_q.jpg 105:download= https://live.staticflickr.com/4021/4569397165_3f219ce382_q.jpg 106:download= https://live.staticflickr.com/3087/2527013955_94ac7b80c4_q.jpg 107:download= https://live.staticflickr.com/3182/2706607240_8ceb7b1124_q.jpg 108:download= https://live.staticflickr.com/2342/2495609705_8772bc1b6c_q.jpg 109:download= https://live.staticflickr.com/4045/4265818022_fdb703aba5_q.jpg 110:download= https://live.staticflickr.com/7356/8731135707_c9184db32f_q.jpg 111:download= https://live.staticflickr.com/2481/4032026682_270646a031_q.jpg 112:download= https://live.staticflickr.com/42/125574415_3229ceb6c0_q.jpg 113:download= https://live.staticflickr.com/5249/5348728059_9fb4e5554d_q.jpg 114:download= https://live.staticflickr.com/2744/5838656536_46304cb229_q.jpg 115:download= https://live.staticflickr.com/5260/5512007666_6091730b89_q.jpg 116:download= https://live.staticflickr.com/8034/7949460978_77568a00ea_q.jpg 117:download= https://live.staticflickr.com/6002/5929565000_3b2f282f42_q.jpg 118:download= https://live.staticflickr.com/2675/4142505912_bca71417ef_q.jpg 119:download= https://live.staticflickr.com/7175/6445703511_6dd3851124_q.jpg 120:download= https://live.staticflickr.com/8361/8296532005_1b6a6edc57_q.jpg 121:download= https://live.staticflickr.com/8493/8296532231_06940612c7_q.jpg 122:download= https://live.staticflickr.com/8351/8296531043_17acaec203_q.jpg 123:download= https://live.staticflickr.com/1212/1458663172_9cadfb4940_q.jpg 124:download= https://live.staticflickr.com/8803/17076459160_7960c8358e_q.jpg 125:download= https://live.staticflickr.com/3955/19197774921_0d51863637_q.jpg 126:download= https://live.staticflickr.com/7665/17056608477_ae781450a9_q.jpg 127:download= https://live.staticflickr.com/3501/4571409654_0206369dc2_q.jpg 128:download= https://live.staticflickr.com/8698/17056608567_e762599c7b_q.jpg 129:download= https://live.staticflickr.com/7308/9204578701_e607cc10bd_q.jpg 130:download= https://live.staticflickr.com/2865/9204578661_a063da66c0_q.jpg 131:download= https://live.staticflickr.com/7314/9204578429_78e2bd65c0_q.jpg 132:download= https://live.staticflickr.com/2662/4173380001_676bdeefbc_q.jpg 133:download= https://live.staticflickr.com/4065/4419734656_dacdf1c853_q.jpg 134:download= https://live.staticflickr.com/7300/9204578207_0f12e99bc5_q.jpg 135:download= https://live.staticflickr.com/3170/2719040185_710d937e25_q.jpg 136:download= https://live.staticflickr.com/3819/9204578263_fa55ff7054_q.jpg 137:download= https://live.staticflickr.com/5241/5333026718_1bb018c675_q.jpg 138:download= https://live.staticflickr.com/1650/24407733726_7ce6c6b83d_q.jpg 139:download= https://live.staticflickr.com/2374/2498931550_337a09ff0b_q.jpg 140:download= https://live.staticflickr.com/5021/5549577532_143670a89a_q.jpg 141:download= https://live.staticflickr.com/5242/5333026250_292b30d0d2_q.jpg 142:download= https://live.staticflickr.com/4019/4215057916_d20d47f718_q.jpg 143:download= https://live.staticflickr.com/88/210290454_c2163d603c_q.jpg 144:download= https://live.staticflickr.com/3293/2898527128_4bcfa23c1b_q.jpg 145:download= https://live.staticflickr.com/2506/4236966554_51e4f722a6_q.jpg 146:download= https://live.staticflickr.com/3350/3327512419_532e6dfbfd_q.jpg 147:download= https://live.staticflickr.com/4043/4463844825_d0d3e9293c_q.jpg 148:download= https://live.staticflickr.com/3525/4080495284_4717689c8c_q.jpg 149:download= https://live.staticflickr.com/3157/4074226627_f25f9235e7_q.jpg 150:download= https://live.staticflickr.com/4032/4331802373_f407f09aa0_q.jpg 151:download= https://live.staticflickr.com/5010/5333025050_58f3baf859_q.jpg 152:download= https://live.staticflickr.com/2595/4190438788_61d8517538_q.jpg 153:download= https://live.staticflickr.com/4062/4462016944_a3f8336195_q.jpg 154:download= https://live.staticflickr.com/2151/2231926776_a0194f9398_q.jpg 155:download= https://live.staticflickr.com/4061/4540687574_f9663f14d4_q.jpg 156:download= https://live.staticflickr.com/6044/6302481696_31e85dc0e0_q.jpg 157:download= https://live.staticflickr.com/723/22605739242_115741a176_q.jpg 158:download= https://live.staticflickr.com/7383/14026902531_2296fb3eb7_q.jpg 159:download= https://live.staticflickr.com/7274/14026876582_0e71fdae76_q.jpg 160:download= https://live.staticflickr.com/512/19742010310_06172af529_q.jpg 161:download= https://live.staticflickr.com/4486/37512909800_b821849a46_q.jpg 162:download= https://live.staticflickr.com/457/20229329081_636a29bcf1_q.jpg 163:download= https://live.staticflickr.com/4640/39323995031_a10bd5b4fe_q.jpg 164:download= https://live.staticflickr.com/444/20007410638_085623e200_q.jpg 165:download= https://live.staticflickr.com/4466/37156505263_c24f5066fd_q.jpg 166:download= https://live.staticflickr.com/3504/3915085980_612c49bdce_q.jpg 167:download= https://live.staticflickr.com/5123/5332410337_eb4fedc509_q.jpg 168:download= https://live.staticflickr.com/3006/2988202523_3004ec611c_q.jpg 169:download= https://live.staticflickr.com/7228/7399919188_053d8e8e54_q.jpg 170:download= https://live.staticflickr.com/3289/2824439740_278c0f0a7e_q.jpg 171:download= https://live.staticflickr.com/2502/4085873899_9f6126e719_q.jpg 172:download= https://live.staticflickr.com/5003/5333027214_9664e02088_q.jpg 173:download= https://live.staticflickr.com/2656/4105475516_40fb45ddc8_q.jpg 174:download= https://live.staticflickr.com/2684/4105474630_fb37f23120_q.jpg 175:download= https://live.staticflickr.com/4072/4647401964_8055ef4e87_q.jpg 176:download= https://live.staticflickr.com/2605/4104706645_5246af6984_q.jpg 177:download= https://live.staticflickr.com/3179/2646124358_d972943217_q.jpg 178:download= https://live.staticflickr.com/2511/4104707333_7eb99482e6_q.jpg 179:download= https://live.staticflickr.com/5718/22815038114_a3af255906_q.jpg 180:download= https://live.staticflickr.com/2620/3979096745_d7a7a6ff7f_q.jpg 181:download= https://live.staticflickr.com/3098/2642137790_0460b7098b_q.jpg 182:download= https://live.staticflickr.com/717/23066344875_51f090e3f8_q.jpg 183:download= https://live.staticflickr.com/3839/33182677910_5f2d597d2d_q.jpg 184:download= https://live.staticflickr.com/6231/6877770274_04abedec61_q.jpg 185:download= https://live.staticflickr.com/5281/5252969286_8021313c3e_q.jpg 186:download= https://live.staticflickr.com/5132/5534999952_fd086c6a92_q.jpg 187:download= https://live.staticflickr.com/7394/10957920583_e1c9012f32_q.jpg 188:download= https://live.staticflickr.com/7443/10957920613_e8b6beba0e_q.jpg 189:download= https://live.staticflickr.com/4064/4621418606_064996f476_q.jpg 190:download= https://live.staticflickr.com/2754/4365122212_4a1e6c935d_q.jpg 191:download= https://live.staticflickr.com/8498/8320873316_9d97d62a8c_q.jpg 192:download= https://live.staticflickr.com/7147/6445463567_c5da3f2ef2_q.jpg 193:download= https://live.staticflickr.com/3054/2759489983_caa6b25970_q.jpg 194:download= https://live.staticflickr.com/4014/4308166385_8c9943fa82_q.jpg 195:download= https://live.staticflickr.com/7300/10233465664_f70fa90199_q.jpg 196:download= https://live.staticflickr.com/119/259235964_f64c146c6a_q.jpg 197:download= https://live.staticflickr.com/4030/4647425282_dd6031c5a9_q.jpg 198:download= https://live.staticflickr.com/2705/4455735135_63131701d2_q.jpg 199:download= https://live.staticflickr.com/3473/3350390285_850ac73619_q.jpg 200:download= https://live.staticflickr.com/3001/2933721437_e8d2827a2a_q.jpg
(3) 사진 정리하기(클린징)¶
- 제대로 된 사진 100개만 남기기
- 대상이 크게 나오고 다른 물체가 안나오고 색이 선명한 것 위주로 선택
- 필터를 심하게 적용해 색상이 이상하거나 흑백 이미지는 제거
In [ ]:
# 디렉토리 안의 이미지 파일 수 확인하기
import os, glob
path1 = "./image/pizza/"
path2 = "./image/spaghetti/"
path3 = "./image/sushi/"
# for img in glob.glob(path1 + "/*.jpg"):
# print(img)
print("pizza: ", len(glob.glob(path1 + "/*.jpg")))
print("spaghetti: ", len(glob.glob(path2 + "/*.jpg")))
print("sushi: ", len(glob.glob(path3 + "/*.jpg")))
pizza: 129 spaghetti: 143 sushi: 111
In [ ]:
# 이미지들을 NumPy 형식으로 변환하기
import numpy as np
from PIL import Image
import os, glob, random
outfile = "image/photos.npz" # 저장할 파일 이름
max_photo = 100 # 사용할 이미지 수
photo_size = 32 # 이미지 크기
x = [] # 이미지 데이터
y = [] # 레이블 데이터
def main():
# 디렉터리 읽어 들이기
glob_files("./image/pizza", 0) # 레이블 설정 - glob_files("폴더명", 레이블)
glob_files("./image/spaghetti", 1)
glob_files("./image/sushi", 2)
# 파일로 저장하기
np.savez(outfile, x=x, y=y) # Numpy 압축파일로 저장
print(str(len(x)) + "개의 이미지를", "저장했습니다. 파일명 :" + outfile)
# path 내부의 이미지 읽어 들이기
def glob_files(path, label): # glob_files("./image/pizza", 0)
files = glob.glob(path + "/*.jpg")
random.shuffle(files)
# 파일 처리하기
num = 0
for f in files:
if num >= max_photo: break
num += 1
# 이미지 파일 읽어 들이기
img = Image.open(f)
img = img.convert("RGB") # RGB 컬러로 변환하기
img = img.resize((photo_size, photo_size)) # 크기 변경하기 - 32X32
img = np.asarray(img) # RBG의 각 색상 값을 0~1까지의 실수로 변환
x.append(img)
y.append(label)
# 메인 프로그램
if __name__ == '__main__':
main()
300개의 이미지를 저장했습니다. 파일명 :image/photos.npz
Numpy로 저장된 이미지 확인하기¶
In [ ]:
import matplotlib.pyplot as plt
import numpy as np
# 사진 데이타 읽어 들이기
photos = np.load("image/photos.npz")
x = photos["x"]
y = photos["y"]
# 시작 인덱스
idx = 0 # 100 or 200으로 변경하여 다른 이미지도 확인하기
# pyplot으로 출력하기
plt.figure(figsize=(10,10))
for i in range(25):
plt.subplot(5, 5, i+1)
plt.title(y[i+idx])
plt.imshow(x[i+idx])
plt.show()
In [ ]:
# 시작 인덱스
idx = 100 # 100 or 200으로 변경하여 다른 이미지도 확인하기
# pyplot으로 출력하기
plt.figure(figsize=(10,10))
for i in range(25):
plt.subplot(5, 5, i+1)
plt.title(y[i+idx])
plt.imshow(x[i+idx])
plt.show()
In [ ]:
# 시작 인덱스
idx = 200 # 100 or 200으로 변경하여 다른 이미지도 확인하기
# pyplot으로 출력하기
plt.figure(figsize=(10,10))
for i in range(25):
plt.subplot(5, 5, i+1)
plt.title(y[i+idx])
plt.imshow(x[i+idx])
plt.show()
3) 데이타 전처리¶
- 속성(피처) 데이터 - 1차원에서 3차원 배열로 변환, 정규화
- 레이블 - 원-핫 인코딩 형식으로 변환
In [ ]:
import tensorflow.keras
from tensorflow.keras.utils import to_categorical
import matplotlib.pyplot as plt
import numpy as np
# 입력 데이타와 출력 데이타 지정
im_rows = 32 # 이미지의 높이
im_cols = 32 # 이미지의 너비
im_color = 3 # 이미지의 색공간(RGB)
in_shape = (im_rows, im_cols, im_color) # (32, 32, 3) # 입력 데이타
nb_classes = 3 # 출력 데이타 수, 3종류의 요리
# 사진 데이터 읽어 들이기
photos = np.load('image/photos.npz')
X = photos['x']
y = photos['y']
# x 속성(피처) 데이터를 1차원에서 3차원 배열로 변환 및 정규화하기
X = x.reshape(-1, im_rows, im_cols, im_color)
X = x.astype('float32') / 255
# y 레이블을 원-핫 인코딩 형식으로 변환하기
y = to_categorical(y.astype('int32'), nb_classes) # nb_classes=3
4) 데이타 구분¶
- 학습데이타셋, 검증데이타셋, 테스트데이타셋으로 구분
In [ ]:
# 전체 데이타셋을 학습 데이타셋과 테스트셋으로 구분하기
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y,
test_size=0.2,
random_state=0)
# 학습데이타셋을 학습데이셋과 검증데이타셋으로 구분하기
X_train, X_val, y_train, y_val = train_test_split(X_train, y_train,
test_size=0.2,
random_state=0)
# 데이타셋 형태 확인
print(X_train.shape, y_train.shape)
print(X_val.shape, y_val.shape)
print(X_test.shape, y_test.shape)
(192, 32, 32, 3) (192, 3) (48, 32, 32, 3) (48, 3) (60, 32, 32, 3) (60, 3)
2. CNN 모델 정의, 컴파일 설정¶
- cnn_model.py 파일로 저장
In [ ]:
# cnn_model.py 파일 코드
import tensorflow.keras
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Dropout, Flatten
from tensorflow.keras.layers import Conv2D, MaxPooling2D
from tensorflow.keras.optimizers import Adam
# CNN 모델 정의하기
def def_model(in_shape, nb_classes):
model = Sequential()
model.add(Conv2D(32, kernel_size=(3, 3), activation='relu',
input_shape=in_shape))
model.add(Conv2D(32, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Flatten())
model.add(Dense(512, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(nb_classes, activation='softmax'))
return model
# 컴파일하고 모델 반환하기
def get_model(in_shape, nb_classes):
model = def_model(in_shape, nb_classes)
model.compile(
loss='categorical_crossentropy',
optimizer = Adam(1e-4),
metrics=['acc'])
return model
3. CNN 모델 학습¶
- 주피터에서 [Kernel --> Restart] 클릭하여 커널을 재시작한 후 실행
- 정답률이 너무 안좋은 경우는 이미지 클리닝을 한 후 다시 실행하기
1) ModelCheckpoint, Early_stopping 지정¶
In [ ]:
from tensorflow.keras.callbacks import ModelCheckpoint, EarlyStopping
import os
# 딥러닝 모델을 저장할 디렉토리(폴더) 생성
MODEL_DIR = './model/'
if not os.path.exists(MODEL_DIR):
os.mkdir(MODEL_DIR)
modelpath="./model/CNN_Cooking.hdf5"
checkpointer = ModelCheckpoint(filepath=modelpath, monitor='val_loss', verbose=1, save_best_only=True)
early_stopping_callback = EarlyStopping(monitor='val_loss', patience=10)
2) 모델 학습¶
In [ ]:
import cnn_model # 내가 만든 CNN 모델 import 하기
im_rows = 32 # 이미지의 높이
im_cols = 32 # 이미지의 너비
im_color = 3 # 이미지의 색공간
in_shape = (im_rows, im_cols, im_color) # (32, 32, 3) # 입력 데이타
nb_classes = 3 # 출력 데이타 수, 3종류의 요리
# CNN 모델 만들기
model = cnn_model.get_model(in_shape, nb_classes)
# 모델 학습
history = model.fit(X_train, y_train,
batch_size=32,
epochs=30,
verbose=1,
validation_data=(X_val, y_val),
callbacks=[early_stopping_callback,checkpointer])
Epoch 1/30 5/6 [========================>.....] - ETA: 0s - loss: 1.1058 - acc: 0.2438 Epoch 1: val_loss improved from inf to 1.10462, saving model to ./model\CNN_Cooking.hdf5 6/6 [==============================] - 1s 104ms/step - loss: 1.1023 - acc: 0.2552 - val_loss: 1.1046 - val_acc: 0.2708 Epoch 2/30 5/6 [========================>.....] - ETA: 0s - loss: 1.0919 - acc: 0.3625 Epoch 2: val_loss did not improve from 1.10462 6/6 [==============================] - 0s 50ms/step - loss: 1.0947 - acc: 0.3490 - val_loss: 1.1057 - val_acc: 0.2500 Epoch 3/30 5/6 [========================>.....] - ETA: 0s - loss: 1.0939 - acc: 0.3625 Epoch 3: val_loss did not improve from 1.10462 6/6 [==============================] - 0s 49ms/step - loss: 1.0938 - acc: 0.3646 - val_loss: 1.1048 - val_acc: 0.2708 Epoch 4/30 5/6 [========================>.....] - ETA: 0s - loss: 1.1048 - acc: 0.3063 Epoch 4: val_loss improved from 1.10462 to 1.10234, saving model to ./model\CNN_Cooking.hdf5 6/6 [==============================] - 0s 59ms/step - loss: 1.1020 - acc: 0.3333 - val_loss: 1.1023 - val_acc: 0.3542 Epoch 5/30 5/6 [========================>.....] - ETA: 0s - loss: 1.0983 - acc: 0.3063 Epoch 5: val_loss improved from 1.10234 to 1.10088, saving model to ./model\CNN_Cooking.hdf5 6/6 [==============================] - 0s 58ms/step - loss: 1.0951 - acc: 0.3229 - val_loss: 1.1009 - val_acc: 0.3542 Epoch 6/30 5/6 [========================>.....] - ETA: 0s - loss: 1.0978 - acc: 0.3750 Epoch 6: val_loss did not improve from 1.10088 6/6 [==============================] - 0s 48ms/step - loss: 1.0931 - acc: 0.3906 - val_loss: 1.1014 - val_acc: 0.2917 Epoch 7/30 5/6 [========================>.....] - ETA: 0s - loss: 1.0861 - acc: 0.4250 Epoch 7: val_loss did not improve from 1.10088 6/6 [==============================] - 0s 48ms/step - loss: 1.0864 - acc: 0.4167 - val_loss: 1.1019 - val_acc: 0.2917 Epoch 8/30 5/6 [========================>.....] - ETA: 0s - loss: 1.0874 - acc: 0.3562 Epoch 8: val_loss did not improve from 1.10088 6/6 [==============================] - 0s 50ms/step - loss: 1.0876 - acc: 0.3698 - val_loss: 1.1011 - val_acc: 0.2917 Epoch 9/30 5/6 [========================>.....] - ETA: 0s - loss: 1.0908 - acc: 0.3750 Epoch 9: val_loss did not improve from 1.10088 6/6 [==============================] - 0s 50ms/step - loss: 1.0940 - acc: 0.3542 - val_loss: 1.1010 - val_acc: 0.2917 Epoch 10/30 5/6 [========================>.....] - ETA: 0s - loss: 1.0981 - acc: 0.3875 Epoch 10: val_loss did not improve from 1.10088 6/6 [==============================] - 0s 50ms/step - loss: 1.0981 - acc: 0.3906 - val_loss: 1.1019 - val_acc: 0.3125 Epoch 11/30 5/6 [========================>.....] - ETA: 0s - loss: 1.0825 - acc: 0.3562 Epoch 11: val_loss improved from 1.10088 to 1.10023, saving model to ./model\CNN_Cooking.hdf5 6/6 [==============================] - 0s 61ms/step - loss: 1.0855 - acc: 0.3646 - val_loss: 1.1002 - val_acc: 0.3125 Epoch 12/30 5/6 [========================>.....] - ETA: 0s - loss: 1.0846 - acc: 0.4125 Epoch 12: val_loss improved from 1.10023 to 1.09729, saving model to ./model\CNN_Cooking.hdf5 6/6 [==============================] - 0s 60ms/step - loss: 1.0836 - acc: 0.4010 - val_loss: 1.0973 - val_acc: 0.2708 Epoch 13/30 5/6 [========================>.....] - ETA: 0s - loss: 1.0813 - acc: 0.4062 Epoch 13: val_loss did not improve from 1.09729 6/6 [==============================] - 0s 50ms/step - loss: 1.0845 - acc: 0.3854 - val_loss: 1.0987 - val_acc: 0.3125 Epoch 14/30 5/6 [========================>.....] - ETA: 0s - loss: 1.0903 - acc: 0.3750 Epoch 14: val_loss improved from 1.09729 to 1.09703, saving model to ./model\CNN_Cooking.hdf5 6/6 [==============================] - 0s 60ms/step - loss: 1.0852 - acc: 0.4010 - val_loss: 1.0970 - val_acc: 0.2917 Epoch 15/30 5/6 [========================>.....] - ETA: 0s - loss: 1.0795 - acc: 0.4000 Epoch 15: val_loss did not improve from 1.09703 6/6 [==============================] - 0s 49ms/step - loss: 1.0787 - acc: 0.4062 - val_loss: 1.0979 - val_acc: 0.3125 Epoch 16/30 5/6 [========================>.....] - ETA: 0s - loss: 1.0810 - acc: 0.4062 Epoch 16: val_loss improved from 1.09703 to 1.09379, saving model to ./model\CNN_Cooking.hdf5 6/6 [==============================] - 0s 60ms/step - loss: 1.0765 - acc: 0.4271 - val_loss: 1.0938 - val_acc: 0.3542 Epoch 17/30 5/6 [========================>.....] - ETA: 0s - loss: 1.0671 - acc: 0.4938 Epoch 17: val_loss improved from 1.09379 to 1.09286, saving model to ./model\CNN_Cooking.hdf5 6/6 [==============================] - 0s 59ms/step - loss: 1.0652 - acc: 0.4896 - val_loss: 1.0929 - val_acc: 0.3542 Epoch 18/30 5/6 [========================>.....] - ETA: 0s - loss: 1.0492 - acc: 0.5437 Epoch 18: val_loss did not improve from 1.09286 6/6 [==============================] - 0s 48ms/step - loss: 1.0596 - acc: 0.5260 - val_loss: 1.0966 - val_acc: 0.3125 Epoch 19/30 5/6 [========================>.....] - ETA: 0s - loss: 1.0566 - acc: 0.4750 Epoch 19: val_loss improved from 1.09286 to 1.09043, saving model to ./model\CNN_Cooking.hdf5 6/6 [==============================] - 0s 61ms/step - loss: 1.0632 - acc: 0.4583 - val_loss: 1.0904 - val_acc: 0.3542 Epoch 20/30 5/6 [========================>.....] - ETA: 0s - loss: 1.0548 - acc: 0.4250 Epoch 20: val_loss improved from 1.09043 to 1.08046, saving model to ./model\CNN_Cooking.hdf5 6/6 [==============================] - 0s 59ms/step - loss: 1.0507 - acc: 0.4375 - val_loss: 1.0805 - val_acc: 0.5000 Epoch 21/30 5/6 [========================>.....] - ETA: 0s - loss: 1.0554 - acc: 0.4750 Epoch 21: val_loss did not improve from 1.08046 6/6 [==============================] - 0s 49ms/step - loss: 1.0526 - acc: 0.5000 - val_loss: 1.0805 - val_acc: 0.4583 Epoch 22/30 5/6 [========================>.....] - ETA: 0s - loss: 1.0366 - acc: 0.4812 Epoch 22: val_loss did not improve from 1.08046 6/6 [==============================] - 0s 51ms/step - loss: 1.0377 - acc: 0.4740 - val_loss: 1.0906 - val_acc: 0.3333 Epoch 23/30 5/6 [========================>.....] - ETA: 0s - loss: 1.0301 - acc: 0.4938 Epoch 23: val_loss did not improve from 1.08046 6/6 [==============================] - 0s 50ms/step - loss: 1.0333 - acc: 0.4844 - val_loss: 1.0909 - val_acc: 0.3125 Epoch 24/30 5/6 [========================>.....] - ETA: 0s - loss: 1.0497 - acc: 0.4187 Epoch 24: val_loss improved from 1.08046 to 1.07602, saving model to ./model\CNN_Cooking.hdf5 6/6 [==============================] - 0s 59ms/step - loss: 1.0303 - acc: 0.4583 - val_loss: 1.0760 - val_acc: 0.4375 Epoch 25/30 5/6 [========================>.....] - ETA: 0s - loss: 1.0150 - acc: 0.5500 Epoch 25: val_loss improved from 1.07602 to 1.07305, saving model to ./model\CNN_Cooking.hdf5 6/6 [==============================] - 0s 60ms/step - loss: 1.0181 - acc: 0.5521 - val_loss: 1.0730 - val_acc: 0.4583 Epoch 26/30 5/6 [========================>.....] - ETA: 0s - loss: 1.0295 - acc: 0.5188 Epoch 26: val_loss improved from 1.07305 to 1.06345, saving model to ./model\CNN_Cooking.hdf5 6/6 [==============================] - 0s 59ms/step - loss: 1.0262 - acc: 0.5365 - val_loss: 1.0634 - val_acc: 0.4792 Epoch 27/30 5/6 [========================>.....] - ETA: 0s - loss: 1.0204 - acc: 0.4812 Epoch 27: val_loss improved from 1.06345 to 1.06251, saving model to ./model\CNN_Cooking.hdf5 6/6 [==============================] - 0s 60ms/step - loss: 1.0063 - acc: 0.5104 - val_loss: 1.0625 - val_acc: 0.4583 Epoch 28/30 5/6 [========================>.....] - ETA: 0s - loss: 0.9853 - acc: 0.5312 Epoch 28: val_loss did not improve from 1.06251 6/6 [==============================] - 0s 50ms/step - loss: 1.0123 - acc: 0.4948 - val_loss: 1.0793 - val_acc: 0.3333 Epoch 29/30 5/6 [========================>.....] - ETA: 0s - loss: 1.0046 - acc: 0.5375 Epoch 29: val_loss improved from 1.06251 to 1.04789, saving model to ./model\CNN_Cooking.hdf5 6/6 [==============================] - 0s 59ms/step - loss: 1.0052 - acc: 0.5365 - val_loss: 1.0479 - val_acc: 0.5000 Epoch 30/30 5/6 [========================>.....] - ETA: 0s - loss: 0.9924 - acc: 0.5375 Epoch 30: val_loss improved from 1.04789 to 1.04737, saving model to ./model\CNN_Cooking.hdf5 6/6 [==============================] - 0s 63ms/step - loss: 0.9875 - acc: 0.5260 - val_loss: 1.0474 - val_acc: 0.4792
5. 모델 평가¶
In [ ]:
score = model.evaluate(X_test, y_test, verbose=1)
print('정답률 =', score[1], 'loss =', score[0])
2/2 [==============================] - 0s 12ms/step - loss: 1.0091 - acc: 0.5500 정답률 = 0.550000011920929 loss = 1.0090534687042236
학습 과정 시각화¶
In [ ]:
history.history.keys()
Out[ ]:
dict_keys(['loss', 'acc', 'val_loss', 'val_acc'])
In [ ]:
# 학습 상태를 그래프로 그리기
import matplotlib.pyplot as plt
his_dict = history.history
loss = his_dict['loss']
val_loss = his_dict['val_loss']
epochs = range(1, len(loss) + 1)
fig = plt.figure(figsize = (10, 5))
# 훈련 및 검증 손실 그리기
ax1 = fig.add_subplot(1, 2, 1)
ax1.plot(epochs, loss, color = 'blue', label = 'train_loss')
ax1.plot(epochs, val_loss, color = 'orange', label = 'val_loss')
ax1.set_title('train and val loss')
ax1.set_xlabel('epochs')
ax1.set_ylabel('loss')
ax1.legend()
acc = his_dict['acc']
val_acc = his_dict['val_acc']
# 훈련 및 검증 정확도 그리기
ax2 = fig.add_subplot(1, 2, 2)
ax2.plot(epochs, acc, color = 'blue', label = 'train_acc')
ax2.plot(epochs, val_acc, color = 'orange', label = 'val_acc')
ax2.set_title('train and val acc')
ax2.set_xlabel('epochs')
ax2.set_ylabel('acc')
ax2.legend()
plt.show()
6. 이미지 증식 하기¶
- 정답률을 높이기 위해서 데이타 수량을 늘려서 진행
- 사진을 회전하거나 반전시켜서 데이타 수량을 늘리기
OpenCV를 사용하여 이미지를 0~180도까지 회전¶
- opencv-python 모듈 설치 : pip install opencv-python
In [ ]:
import matplotlib.pyplot as plt
import cv2
# 사진 데이터 읽어 들이기
photos = np.load('image/photos.npz')
x = photos['x']
img = x[250] # 사진 하나만 선택하기
plt.figure(figsize=(10,10))
for i in range(36):
plt.subplot(6,6,i+1)
# 회전 시키기
center = (16, 16) # 회전 중심
angle = i * 5 # 각도 조정
scale = 1.0 # 확대 비율
mtx = cv2.getRotationMatrix2D(center, angle, scale)
img2 = cv2.warpAffine(img, mtx, (32, 32))
# 화면에 출력하기
plt.imshow(img2)
plt.show()
7. 이미지 증식 후 CNN 모델 학습¶
In [ ]:
import cnn_model
import tensorflow.keras
import matplotlib.pyplot as plt
import numpy as np
from sklearn.model_selection import train_test_split
from tensorflow.keras.utils import to_categorical
import cv2
from tensorflow.keras.callbacks import ModelCheckpoint, EarlyStopping
import os
# 입력과 출력 지정하기
im_rows = 32 # 이미지의 높이
im_cols = 32 # 이미지의 너비
im_color = 3 # 이미지의 색공간
in_shape = (im_rows, im_cols, im_color)
nb_classes = 3
# 사진 데이터 읽어 들이기
photos = np.load('image/photos.npz')
X = photos['x']
y = photos['y']
# X 속성 데이터를 3차원 배열로 변환, 정규화하기
X = x.reshape(-1, im_rows, im_cols, im_color)
X = x.astype('float32') / 255
# 레이블 데이터를 One-hot 형식으로 변환하기
y = to_categorical(y.astype('int32'), nb_classes)
# 학습 전용과 테스트 전용으로 구분하기
X_train, X_test, y_train, y_test = train_test_split(X, y,
test_size=0.2,
random_state=0)
# 검증 데이타 만들기
X_train, X_val, y_train, y_val = train_test_split(X_train, y_train,
test_size=0.2,
random_state=0)
# 이미지 증식 - 학습 데이타만 적용(주의-테스트 데이타 증식 하지 않는다.)
x_new = []
y_new = []
for i, xi in enumerate(X_train):
yi = y_train[i]
for ang in range(-30, 30, 5):
# 회전 시키기
center = (16, 16) # 회전 중심
mtx = cv2.getRotationMatrix2D(center, ang, 1.0)
xi2 = cv2.warpAffine(xi, mtx, (32, 32))
x_new.append(xi2)
y_new.append(yi)
# 좌우 반전
xi3 = cv2.flip(xi2, 1)
x_new.append(xi3)
y_new.append(yi)
# 이미지를 늘린 데이터를 학습 데이터로 사용하기
print('수량을 늘리기 전=', len(y_train))
X_train = np.array(x_new)
y_train = np.array(y_new)
print('수량을 늘린 후=', len(y_train))
print('-'*70)
수량을 늘리기 전= 192 수량을 늘린 후= 4608 ----------------------------------------------------------------------
In [ ]:
# CNN 모델 만들기
model = cnn_model.get_model(in_shape, nb_classes)
# ModelCheckpoint, EarlyStopping 지정
# 딥러닝 모델을 저장할 디렉토리(폴더) 생성
MODEL_DIR = './model/'
if not os.path.exists(MODEL_DIR):
os.mkdir(MODEL_DIR)
modelpath="./model/CNN_Cooking2.hdf5"
checkpointer = ModelCheckpoint(filepath=modelpath, monitor='val_loss', verbose=1, save_best_only=True)
early_stopping_callback = EarlyStopping(monitor='val_loss', patience=10)
# 모델 학습
history = model.fit(X_train, y_train,
batch_size=32,
epochs=30,
verbose=1,
validation_data=(X_val, y_val),
callbacks=[early_stopping_callback, checkpointer])
Epoch 1/30 143/144 [============================>.] - ETA: 0s - loss: 1.0878 - acc: 0.3805 Epoch 1: val_loss improved from inf to 1.10275, saving model to ./model\CNN_Cooking2.hdf5 144/144 [==============================] - 7s 43ms/step - loss: 1.0875 - acc: 0.3813 - val_loss: 1.1028 - val_acc: 0.3333 Epoch 2/30 144/144 [==============================] - ETA: 0s - loss: 0.9641 - acc: 0.5263 Epoch 2: val_loss improved from 1.10275 to 1.04126, saving model to ./model\CNN_Cooking2.hdf5 144/144 [==============================] - 6s 42ms/step - loss: 0.9641 - acc: 0.5263 - val_loss: 1.0413 - val_acc: 0.5417 Epoch 3/30 143/144 [============================>.] - ETA: 0s - loss: 0.8402 - acc: 0.6071 Epoch 3: val_loss did not improve from 1.04126 144/144 [==============================] - 6s 42ms/step - loss: 0.8392 - acc: 0.6076 - val_loss: 1.1161 - val_acc: 0.4792 Epoch 4/30 143/144 [============================>.] - ETA: 0s - loss: 0.7678 - acc: 0.6525 Epoch 4: val_loss did not improve from 1.04126 144/144 [==============================] - 6s 42ms/step - loss: 0.7671 - acc: 0.6532 - val_loss: 1.1064 - val_acc: 0.5000 Epoch 5/30 143/144 [============================>.] - ETA: 0s - loss: 0.6868 - acc: 0.6984 Epoch 5: val_loss did not improve from 1.04126 144/144 [==============================] - 6s 41ms/step - loss: 0.6851 - acc: 0.6994 - val_loss: 1.0656 - val_acc: 0.5000 Epoch 6/30 143/144 [============================>.] - ETA: 0s - loss: 0.5900 - acc: 0.7498 Epoch 6: val_loss did not improve from 1.04126 144/144 [==============================] - 6s 42ms/step - loss: 0.5896 - acc: 0.7498 - val_loss: 1.1462 - val_acc: 0.5417 Epoch 7/30 143/144 [============================>.] - ETA: 0s - loss: 0.5163 - acc: 0.7793 Epoch 7: val_loss did not improve from 1.04126 144/144 [==============================] - 6s 42ms/step - loss: 0.5164 - acc: 0.7795 - val_loss: 1.2973 - val_acc: 0.5417 Epoch 8/30 143/144 [============================>.] - ETA: 0s - loss: 0.4758 - acc: 0.8005 Epoch 8: val_loss did not improve from 1.04126 144/144 [==============================] - 5s 36ms/step - loss: 0.4750 - acc: 0.8008 - val_loss: 1.3910 - val_acc: 0.6250 Epoch 9/30 143/144 [============================>.] - ETA: 0s - loss: 0.4042 - acc: 0.8381 Epoch 9: val_loss did not improve from 1.04126 144/144 [==============================] - 5s 36ms/step - loss: 0.4036 - acc: 0.8385 - val_loss: 1.4131 - val_acc: 0.5833 Epoch 10/30 143/144 [============================>.] - ETA: 0s - loss: 0.3602 - acc: 0.8553 Epoch 10: val_loss did not improve from 1.04126 144/144 [==============================] - 5s 34ms/step - loss: 0.3604 - acc: 0.8553 - val_loss: 1.4942 - val_acc: 0.5833 Epoch 11/30 143/144 [============================>.] - ETA: 0s - loss: 0.3378 - acc: 0.8580 Epoch 11: val_loss did not improve from 1.04126 144/144 [==============================] - 5s 34ms/step - loss: 0.3377 - acc: 0.8579 - val_loss: 1.6179 - val_acc: 0.6250 Epoch 12/30 143/144 [============================>.] - ETA: 0s - loss: 0.3112 - acc: 0.8811 Epoch 12: val_loss did not improve from 1.04126 144/144 [==============================] - 5s 34ms/step - loss: 0.3108 - acc: 0.8815 - val_loss: 1.6454 - val_acc: 0.5833
이미지를 증식한 후 학습한 모델 평가하기¶
In [ ]:
# 모델 평가하기
score = model.evaluate(X_test, y_test, verbose=1)
print('정답률 =', score[1], 'loss =', score[0])
2/2 [==============================] - 0s 11ms/step - loss: 1.2103 - acc: 0.5833 정답률 = 0.5833333134651184 loss = 1.2102775573730469
학습 과정 시각화¶
In [ ]:
# 학습 과정 시각화
import matplotlib.pyplot as plt
his_dict = history.history
loss = his_dict['loss']
val_loss = his_dict['val_loss']
epochs = range(1, len(loss) + 1)
fig = plt.figure(figsize = (10, 5))
# 학습 및 데트스 손실(loss) 그리기
ax1 = fig.add_subplot(1, 2, 1)
ax1.plot(epochs, loss, color = 'blue', label = 'train_loss')
ax1.plot(epochs, val_loss, color = 'orange', label = 'val_loss')
ax1.set_title('train and val loss')
ax1.set_xlabel('epochs')
ax1.set_ylabel('loss')
ax1.legend()
acc = his_dict['acc']
val_acc = his_dict['val_acc']
# 학습 및 데이타 정확도(accuracy) 그리기
ax2 = fig.add_subplot(1, 2, 2)
ax2.plot(epochs, acc, color = 'blue', label = 'train_acc')
ax2.plot(epochs, val_acc, color = 'orange', label = 'val_acc')
ax2.set_title('train and val acc')
ax2.set_xlabel('epochs')
ax2.set_ylabel('acc')
ax2.legend()
plt.show()
모델과 학습된 가중치 데이타 저장하기¶
- CNN 모델 저장 => photos-cnn.h5
- 학습된 데이타 저장 => photos-cnn-weight.hdf5
In [ ]:
# 모델 저장
model.save('./model/photos-cnn-model.h5')
In [ ]:
# 학습된 가중치 데이타 저장
model.save_weights('./model/photos-cnn-weight.hdf5')
In [ ]:
import os
os.getcwd()
Out[ ]:
'c:\\python\\딥러닝 실무 프로젝트\\1. CNN_요리이미지분류'
In [ ]:
import cv2
import numpy as np
import tensorflow.keras
from tensorflow.keras.models import load_model
import matplotlib.pyplot as plt
im_rows = 32
im_cols = 32
in_shape = (im_rows, im_cols, 3)
# 레이블 정보 - 3개 레이블 클래스
labels = ["피자", "스파게티", "스시"]
# CNN 모델 읽기
model = load_model('./model/photos-cnn-model.h5')
# 학습된 데이타 불러오기
model.load_weights('./model/photos-cnn-weight.hdf5')
# OpenCV를 사용해서 이미지 읽어 들이기
im = cv2.imread('./img/test-pizza.jpg')
im = cv2.cvtColor(im, cv2.COLOR_BGR2RGB)
im = cv2.resize(im, (32, 32))
plt.imshow(im) # 이미지 출력하기
plt.show()
In [ ]:
# 학습한 이미지 데이터에 형태 맞추기
im = im.reshape(in_shape).astype('float32') / 255
# 예측하기
r = model.predict(np.array([im]), batch_size=32,verbose=1)
res = r[0]
# 결과 출력하기
for i, acc in enumerate(res):
print(labels[i], "=", round(float(acc * 100), 4))
print("---"*12)
idx = res.argmax()
per = float(round(res[idx] * 100, 4))
print("예측한 결과 = index :", idx, "\b,", str(round(per,4)) + "%")
1/1 [==============================] - 0s 87ms/step 피자 = 99.1389 스파게티 = 0.6162 스시 = 0.2449 ------------------------------------ 예측한 결과 = index : 0, 99.1389%
분류된 음식에 칼로리 출력하기¶
In [ ]:
import cnn_model
import tensorflow.keras
import matplotlib.pyplot as plt
import numpy as np
from PIL import Image
import matplotlib.pyplot as plt
from tensorflow.keras.models import load_model
# target_image = "test-sushi.jpg"
im_rows = 32 # 이미지의 높이
im_cols = 32 # 이미지의 너비
im_color = 3 # 이미지의 색공간
in_shape = (im_rows, im_cols, im_color)
nb_classes = 3
LABELS = ["피자", "스파게티", "스시"] # 레이블의 음식 이름
CALORIES = [266, 157, 228] # 각 레이블별 칼로리
# 저장한 CNN 모델 읽어 들이기
model = load_model('./model/photos-cnn-model.h5')
model.load_weights('./model/photos-cnn-weight.hdf5')
def check_photo(path):
# 이미지 읽어 들이기
img = Image.open(path)
img = img.convert("RGB") # 색공간 변환하기
img = img.resize((im_cols, im_rows)) # 크기 변경하기
plt.imshow(img)
plt.show()
# 3차원으로 데이터 변환하기 + 정규화
x = np.asarray(img)
x = x.reshape(-1, im_rows, im_cols, im_color)
x = x / 255
# 예측하기
pre = model.predict([x])[0]
# print(pre)
idx = pre.argmax()
per = int(pre[idx] * 100)
return (idx, per)
def check_photo_str(path):
idx, per = check_photo(path)
# 응답하기
print("이 사진은", LABELS[idx], "\b로(으로), 칼로리는", CALORIES[idx],"kcal입니다.")
print("정확도는", per, "%")
# 메인 프로그램
if __name__ == '__main__':
check_photo_str('./img/test-pizza.jpg')
# check_photo_str('./test-spaghetti.jpg')
# check_photo_str('./test-sushi.jpg')
1/1 [==============================] - 0s 89ms/step 이 사진은 피자로(으로), 칼로리는 266 kcal입니다. 정확도는 99 %
예측 결과를 html 파일로 저장하기 --> predict-result.html¶
In [ ]:
import cnn_model
import tensorflow.keras
import matplotlib.pyplot as plt
import numpy as np
from PIL import Image
from tensorflow.keras.models import load_model
# target_image = "test-pizza.jpg"
im_rows = 32 # 이미지의 높이
im_cols = 32 # 이미지의 너비
im_color = 3 # 이미지의 색공간
in_shape = (im_rows, im_cols, im_color)
nb_classes = 3
LABELS = ["피자", "스파게티", "스시"] # 레이블의 음식 이름
CALORIES = [266, 157, 228] # 각 레이블별 칼로리
# 저장한 CNN 모델 읽어 들이기
# model = cnn_model.get_model(in_shape, nb_classes)
# CNN 모델 읽기
model = load_model('./model/photos-cnn-model.h5')
# 학습된 데이타 불러오기
model.load_weights('./model/photos-cnn-weight.hdf5')
# M학습한 이미지 데이터에 형태 맞추기
# im = im.reshape(in_shape).astype('float32') / 255
def check_photo(path):
# 이미지 읽어 들이기
img = Image.open(path)
img = img.convert("RGB") # 색공간 변환하기
img = img.resize((im_cols, im_rows)) # 크기 변경하기
plt.imshow(img)
plt.show()
# 데이터 변환하기
x = np.asarray(img)
x = x.reshape(-1, im_rows, im_cols, im_color)
x = x / 255
# 예측하기
pre = model.predict([x])[0]
idx = pre.argmax()
per = round(float(pre[idx] * 100),3)
return (idx, per)
result = [] # 여러개의 이미지 파일 예측결과를 리스트로 저장하기
def check_photo_str(path):
idx, per = check_photo(path)
# 응답하기
print("이 사진은", LABELS[idx], "로(으로), 칼로리는", CALORIES[idx],"kcal입니다.")
print("예측 정확도는", per, "%")
# HTML로 저장하기------------------------------
# 딥러닝 예측 결과
srcfile = path
html = ""
html = """<html><head><meta charset="utf8"></head>
<body><h3>원본 이미지</h3><p>
<img src='{0}' width=400></p>{1}""".format(path, html)
res = "이 사진은 " + LABELS[idx] + "로(으로), 칼로리는" + str(CALORIES[idx]) +"kcal입니다."
res = res + "<p>예측 정확도는" + str(per) + "% 입니다.</p><br>"
s = '<div style="float:center;"><p><h3>'+ "<딥러닝 결과> "+'</p></h3><h3>' + res + '</h3>'+ '</div>'
html += s
end = "</body></html>"
html += end
print('-'*100)
print(html)
print('-'*100)
result.append(html)
# html을 파일로 저장하기
with open("./predict-result.html", "w", encoding="utf-8") as f:
for item in result :
f.writelines(item)
print("성공")
if __name__ == '__main__':
check_photo_str('./img/test-pizza.jpg')
# check_photo_str('test-spaghetti.jpg')
# check_photo_str('test-sushi.jpg')
1/1 [==============================] - 0s 88ms/step 이 사진은 피자 로(으로), 칼로리는 266 kcal입니다. 예측 정확도는 99.155 % ---------------------------------------------------------------------------------------------------- <html><head><meta charset="utf8"></head> <body><h3>원본 이미지</h3><p> <img src='./img/test-pizza.jpg' width=400></p><div style="float:center;"><p><h3><딥러닝 결과> </p></h3><h3>이 사진은 피자로(으로), 칼로리는266kcal입니다.<p>예측 정확도는99.155% 입니다.</p><br></h3></div></body></html> ---------------------------------------------------------------------------------------------------- 성공
In [ ]:
In [ ]:
In [ ]:
flickrapi.FlickrAPI
- flickrapi 라이브러리는 Flickr API와 상호작용하기 위한 라이브러리입니다. 이를 사용하면 Flickr의 이미지를 검색하고, 해당 이미지를 다운로드하거나 메타데이터를 가져올 수 있습니다.
- FlickrAPI 클래스는 Flickr와 연결하는 데 필요한 API 키를 사용하여 Flickr API에 접근할 수 있게 해 줍니다.
2. urllib.request.urlretrieve
- urllib.request 모듈의 urlretrieve 함수는 URL을 통해 데이터를 다운로드할 수 있게 해 줍니다. 이 함수는 주로 파일을 직접 다운로드하는 데 사용됩니다.
- 예를 들어, 이미지 URL을 사용하여 이미지를 컴퓨터에 저장할 수 있습니다.
3. pprint
- pprint는 Pretty Print의 약자입니다. 파이썬의 pprint 모듈을 사용하면 데이터를 보기 좋게 출력할 수 있습니다. 리스트나 딕셔너리 같은 복잡한 자료 구조를 읽기 쉽게 정렬해 보여줍니다.
4. os, time, sys
- os: 운영체제와 상호작용할 수 있는 모듈입니다. 예를 들어, 파일이나 디렉토리 경로를 처리하거나 시스템 관련 작업을 수행할 때 사용됩니다.
- time: 시간과 관련된 기능을 제공하는 모듈입니다. 특정 시간 동안 지연시키거나 현재 시간을 측정하는 등의 작업을 할 수 있습니다.
- sys: 파이썬 인터프리터와 관련된 정보를 제공하는 모듈입니다. 예를 들어, 명령행 인수에 접근하거나, 시스템 종료와 같은 작업을 수행할 수 있습니다.