Web_Images_Search_Project

OverView

해당 프로젝트는 유사 이미지 검색 서비스입니다. Spring 서버에서 사용자 화면을 같이 다루고 있습니다. Spring 서버와 Flask 서버로 이루어져 있습니다.

Spring

클라이언트와 API를 통한 HTTP 통신을 하는 서버

Client

클라이언트는 thymeleaf와 js로 제작되었습니다.

Flask

크롤링 및 이미지 분석을 수행하는 서버

크롤링

사용 library : beatifulSoup4, lxml

이미지 분석

사용 library : OpenCV 이미지 분석 사용 알고리즘 : 해시

프로젝트 상세 설명

  1. 사용자는 이미지와 키워드를 함께 검색합니다.
  2. 검색 시, Spring 서버에 요청이 갑니다.
  3. 요청을 받은 Spring 서버는 해당 키워드로 DB에 이미지가 저장되어있는지 확인합니다.
  4. 저장이 되어있으면, Flask 서버에 사용자의 이미지를 전달하고 분석을 요청합니다. (HTTP)
  5. 이미지를 전달받은 Flask 서버는 해당 이미지를 분석하고 HTTP를 통해서 분석이 끝난 이미지를 Spring에게 응답합니다.
  6. Spring은 Flask로부터 받은 이미지를 사용자에게 응답합니다.
  7. DB에 이미지가 저장되어있지 않는 경우에 Spring 서버는 Flask 서버에 크롤링 요청을 합니다.
  8. Flask 서버는 크롤링을 수행하고 DB에 저장합니다. 그 후 Spring 서버에 완료되었다는 응답을 합니다.
  9. 응답을 받은 Spring 서버는 Flask 서버에 이미지 분석 요청을 다시 합니다. (Spring 서버와 Flask 서버는 같은 DB를 사용하고 있습니다.)

프로젝트를 중단한 이유

  1. Flask 서버에서 네이버 이미지를 크롤링하면서 API 요청, 크롤링, DB 삽입으로 아주 많은 시간이 걸립니다.
  2. Flask 서버에서 OpenCV를 이용하여 이미지를 분석하면서 아주 많은 시간이 걸립니다.

좀 더 학습을 한 후에 최적화하는 방안을 생각해볼 예정입니다.