YOLOv5 모델을 공부하면서, 직접 Custom Dataset를 활용해 모델을 학습하는 실습을 진행해보고 싶어졌다.
모델 학습을 위한 Custom Dataset은 구글 이미지를 검색, 크롤링하여 구축하고자 한다.
Selenium과 ChromeDriver를 활용해 구글 이미지를 크롤링한 실습 내용은 아래와 같다. 본 실습은 Mac m1 노트북 환경에서 이루어졌다.
다음 명령어를 통해 셀레니움 라이브러리를 설치한다.
%pip install selenium
구글 이미지 검색 및 크롤링을 위해서는 각자의 크롬 환경에 알맞는 Chrome Driver를 설치해주어야 한다.
크롬 버젼은 크롬 창의 오른쪽 상단의 세 개 점을 클릭, 도움말 > Chrome 정보에서 확인할 수 있다.
현재 103.0.5060.134 버젼을 사용 중이다.
https://chromedriver.chromium.org/downloads
위 링크에서 크롬 버젼에 알맞는 Chrome Driver를 선택해 다운로드 받는다.
이후 코드 작성을 위해 Chrome Driver를 설치한 경로를 파악해둔다. Chrome Driver는 작성할 코드와 동일한 경로에 설치해줘여 한다.
크롬 드라이버를 활용해 구글 창에 '호랑이'를 검색한 후, 호랑이 이미지를 모두 조회하였다. 해당 코드는 아래와 같다.
1) Chrome 창 열기
import selenium
from selenium import webdriver
import time
driver = webdriver.Chrome(r"/Users/soorim/Desktop/chromedriver") # chromedriver 경로
🖥 실행 화면
2) 입력한 키워드를 활용하여 Google에서 해당 이미지 검색하기
# Google image 검색 URL
driver.get("https://www.google.co.kr/imghp?hl=ko&ogbl")
elem = driver.find_element("name", "q")
elem.send_keys('호랑이') # 호랑이로 이미지 검색 진행
elem.submit()
🖥 실행 화면
3) 더 이상 이미지가 없을 때까지 최대한 스크롤 내리기
SCROLL_PAUSE_TIME = 1
last_height = driver.execute_script("return document.body.scrollHeight")
# 마지막 이미지까지 스크롤 내리기 (더 이상의 이미지가 없을 때까지)
while True:
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
time.sleep(SCROLL_PAUSE_TIME)
new_height = driver.execute_script("return document.body.scrollHeight")
if new_height == last_height:
try:
driver.find_element_by_css_selector('.mye4qd').click() #더보기 항목을 클릭하기 위한 명령어
except:
break #더보기 항목이 없게되면 멈추기
last_height = new_height
# driver.close()
🖥 실행 화면
Selenium 라이브러리 및 Chrome Driver 설치에 대해 진행해보았다. 다음 글에서는 해당 이미지들을 크롤링하여 노트북의 지정한 경로에 저장하는 내용에 대해 포스트를 작성할 것이다.
Chrome Driver를 사용하기 위한 문법이 최근 변경되어, 이미지 크롤링 및 저장을 위해 새로운 문법으로 코드 작성을 진행해야 한다.