Skip to content

kh6815/pose_DeepLearning

Repository files navigation

pose

해당 프로젝트는 "딥러닝을 통한 인스타그램 해시태그 추천 및 사진 분류 웹사이트 구현" 으로 python deeplearning에 대한 깃헙 주소입니다.

Java/Spring 웹사이트 구현 깃헙 주소는 해당 주소를 참고해주세요.

전체적인 동작 구현 영상은 유튜브를 참고해주세요.

해당 프로젝트에 관한 논문은 dropbox링크를 참고해주세요

작품 요약

최근 인스타그램의 사용자들이 많아지면서 각 개인의 게시물의 수 또한 증가하고 있다. 하지만 인스타그램 내에서는 자신이 올린 사진을 분류해서 볼 수 있는 기능이 없다. 그래서 게시물이 많을수록 사용자가 보고싶은 사진을 찾기 어렵다. 이 문제를 해결하기 위해 본 논문에서는 사용자의 게시물을 크롤링을 통해 가져와 사진과 정보를 저장하고 그 정보에 따라 사진들을 분류하여 서버를 통해 웹사이트에 띄워주는 방법을 제안한다.

사진 분류 기준은 게시물을 올린 날짜와 게시물에 붙은 해시태그이다. 날짜의 경우 게시물의 업로드 날짜를 연,월 별로 분류해 폴더를 만들어 저장한다. 해시태그의 경우 본인이 자주 사용한 해시태그 위주로 폴더를 만들어 분류한다. 해시태그는 의미가 같은 단어의 변형이 많기 때문에 정형화가 필요하다. 해당 프로젝트에서는 DRN(Dilated Residual Network) 딥러닝 모델을 만들어 사용자가 게시물을 올릴 때 사진을 분석해서 해시태그를 추천하도록 한다. DRN 모델은 정확도가 73%로 교육시킨 사진의 양에 비해 높은 적중률을 가지고 있다. 해시태그를 추천할 경우 사용자가 자주 사용하는 해시태그가 정형화 되고 분류가 더욱 정확해진다. 사진 분류가 정확해질수록 사진 찾기는 쉬워짐을 알 수 있다.

기술 스택

  • 구현 언어 : Java, python, HTML/CSS/JS
  • 프레임워크 : Spring Framework
  • IDE : IntelliJ, Visal Studio Code, Pycharm
  • 딥러닝 모델 : DRN 모델

DRN 모델(= Dilated Residual Network)

합성곱

합성곱

- 표준 합성곱은 위의 Figure 4와 같이 입력 (3 x 3) 영역의 합성곱 필터에서 필터간의 간격이 1인 상태로 지정된 간격을 순회하며 채널별로 합성곱을 하고 
  모든 채널의 합성곱의 합으로 특징 지도를 만든다. 
  그러나 확장된 합성곱의 경우 표준 합성곱과 동일한 방식이긴 하지만 Figure 5,6과 같이 입력 (7 x 7) 영역에서 필터간의 간격을 2인 상태로, 
  입력 (15 x 15) 영역에서 필터간의 간격을 4인 상태로 수신필드를 넓힐수 있다. 따라서 표준 합성곱보다 확장된 합성곱의 필터가 더 넓은 범위를 사용할 수 있다.

- 확장된 합성곱 사용 이유? 
  : 기존의 CNN에서 입력 이미지의 크기보다 수신 필드가 훨씬 작아서 많은 네트워크들이 문맥 정보를 
    잘 이용하지 못하는 문제점을 확장된 합성곱은 넓은 수신필드로 해결할 수 있다.
    또한 수신 필드가 커지지만 파라미터 갯수는 늘어나지 않아서 연산량 관점에서 효과를 볼 수 있다.

데이터 수집

이미지 분류 모델에 사용될 해시태그와 관련된 이미지 데이터 수집

  1. 데이터 수집은 파이썬 웹 크롤링 사용

  2. 수집 기준

    • 한국인들이 가장 많이 사용하는 해시태그의 선택
    • 해시태그 중 직관적으로 이미지를 표현할 수 있는 해시태그 선택
  3. "#강아지", "#결혼", "#고양이", "#꽃", "#네일아트", "#독서", "#등산", "#떡볶이", "#봄", "#생일", "#셀카", "#여름", "#여행", "#운동", "#육아", "#치킨", "#카페", "#캠핑", "#커플", "#패션" 이미지 분류 모델에 적용될 해시태그 선정

  4. 20개의 각 해시태그마다 게시물 데이터 수집


데이터 전처리

평균적으로 2,500 ~ 3000개의 이미지 데이터가 각 해시태그로 수집

무분별한 해시태그 사용과 sns 광고로 인한 연관성 없는 몇몇 데이터 발견 - 관련 없는 사진들을 삭제 - 이미지 분류에 사용될 훈련 데이터셋 구성 - 최종적으로 20개의 해시태그마다 1,000개의 이미지를 구성하는 훈련 데이터셋을 구성


모델 훈련 및 평가

  1. 데이터 셋을 각 7:3 비율로 훈련 데이터셋과 유효 데이터셋으로 나눔
  2. 각 훈련 데이터셋과 유효 데이터셋 내 이미지 데이터의 코기를 조절한 후, 이미지 데이터를 배열화 및 정규화시켜 전처리 과정 진행
  3. GPU 사양에 알맞은 배치크기와 워커의 개수 설정
  4. DRN-C 모델을 최적화한 후, 10번의 에포크 동안 훈련과 평가과정을 번갈아 가며 선택된 최상의 모델 구현

모델 평가

훈련 데이터셋으로 모델을 훈련할 때와 유효 데이터셋으로 모델을 평가할 시 각 에포크마다 정확도와 손실 변화 그래프

에포크

○ 해당 훈련 지표를 보면 에포크를 10번 준것 보다 5번 준것에서 일관적으로 정확도는 높고 손실은 낮은 상태를 유지

DRN 결과

○ 유효 데이터셋 내 무작위의 이미지를 최상의 모델에 테스트한 결과

○ 15개중 11개 매치

텍스트 마이닝

텍스트마이닝

생일에 대한 연관 해시태그로써 많은 사용 빈도수에 비례하여 글씨 크기를 조정하여 나타난 것이다. 이와 비슷한 방식으로 빈도수에 따라 높은 순위로 연관 해시태그를 순서대로 보여줍니다.

  • 연관성 높은 해시태그를 남기기 위해 인스타그램에서 공용적으로 사용되는 해시태그를 불용어 처리 ex) (#일상, #맞팔, #ootd etc)가 모든 파일에 높은 빈도수로 사용 된다는 것을 확인

  • 특수한 해시태그 (ex. #셀카, #봄, #여름 etc)같은 경우 독립적으로 사용되는 해시태그가 아닌 공용적으로 사용되는 해시태그이므로 정확성이 낮은 해시태그가 나타나는 것을 확인

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages