데보션앱 소개페이지 바로가기
로그인 선택

신고하기

CLOSE
신고사유 (대표 사유 1개)
상세내용 (선택)
0/200
  • 신고한 게시글은 더 이상 보이지 않습니다.
  • 이용약관과 운영정책에 따라 신고사유에 해당하는지 검토 후 조치됩니다.
  • 허위 신고인 경우, 신고자의 서비스 이용이 제한될 수 있으니 유의하시어 신중하게 신고해 주세요.
(이 회원이 작성한 모든 댓글과 커뮤니티 게시물이 보이지 않고, 알림도 오지 않습니다.)

미리보기

커뮤니티

      1,234

      badge 23.06.15

      글 등록

      카테고리를 선택해주세요.

      DEVOTEE를 활성화 시키면
      지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.

      버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.

      임시저장함에 저장되었습니다. 저장일시 : 2022.5.17 14:29:08

      임시저장함

      제목을 선택하시면 이어서 작성이 가능하며,
      최대 20건까지 저장합니다.
      컨텐츠 유형, 제목, 저장일시, 삭제로 이뤄진 임시저장 목록
      컨텐츠 유형 제목 저장일 삭제

      데보션 블로그 게재 요청

      CLOSE
      • *
      • *

      본인인증

      효율적인 데보션 서비스 이용 및
      고객님의 소중한 개인정보보호를 위해
      본인인증을 진행해주세요. 본인인증 미 진행 시 로그인이 제한됩니다.
      본인인증 실패

      본인인증 로그인에 실패하였습니다.
      회원이 아니시거나 본인인증 등록이
      완료되지 않은 사용자입니다.

      회원정보 연결

      통상적이지 않은 이미지 분류에 대한 고찰 - 2

      chem 24.02.26
      1,807 6 0
      DEVOTEE 요약
      이 포스트는 딥러닝을 이용하여 이미지 분류를 진행할 때, 이미지 데이터셋이 적거나 일반 분포의 이미지를 사용할 수 없을 상황에 대처하는 방법을 설명합니다. 특히, 명품 손목시계 이미지 분류에서 이미지 데이터셋이 부족한 문제를 해결하기 위해 이미지 CROP 및 전이학습(Transfer Learning) 등을 통해 한계를 극복한 경험을 공유합니다. 또한, 분류가 잘 되지 않은 이미지에 대한 분석을 통해 문제인 왜곡이 심한 이미지를 Image Normalization 기법을 사용하여 정상적으로 분류가 가능하도록 개선한 사례를 소개합니다.
      DEVOTEE 추천 블로그

      이포스트는 이미지를 딥러닝으로 분류할 때 데이터 셋이 적고

      통상적으로 퍼져있는 이미지 데이터셋을 사용하지 못할 때 유용한 방법에 대한 포스트입니다.

      Introduction

      앞서 서술한 "통상적이지 않은 이미지 분류에 대한 고찰"포스트에서 명품 손목시계 이미지 분류를 진행할 때 적은 이미지 셋을

      CROP, Transfer Learning(전이학습)등을 통해 한계를 극복한 방법을 서술했습니다.

      이번 포스트에서는 분류가 잘 안된 이미지를 분석하고 해결방안을 찾은 사례에 대해서 소개하고자 합니다.




      왜 분류가 제대로 되지 않았는가?

      앞선 model도 분명 괜찮을 정도의 성능이 나왔지만, 더 높은 성능을 위해서 데이터 분석이 필요하다고 느꼈습니다.

      따라서 가장 먼저 분류가 제대로 안된 이미지를 확인 해 보았습니다.


      시계에서 어떤 점이 느껴지셨나요? 네 맞습니다. 화질이 희미하고 빛번짐이 심합니다.

      실제 이미지 데이터는 이처럼 사용자의 사진 촬영 환경이나, 사진 촬영 도구에 따라 왜곡이 심해지게 되어 컴퓨터가 제대로 시계 분류를 하지 못하게 됩니다.


      Image Normalization


      이러한 문제를 해결하는 가장 기본적인 방법 중에 하나가 Normalization 기법 입니다.

      이미지 각 픽셀에 해당하는 컬러가 각 RGB 채널에서 정규분포를 가지도록 만들어주는 기법인데,

      이를 통해 좀더 명확한 색상을 가지게 하여 이미지 분류가 잘 되도록 하는 것입니다.


      제가 실제로 적용한 방법은, 이미지를 train, test셋으로 나눌 때 함수를 통해 normalization이 적용 되도록 하였습니다.

      def custom_normalization(image):
          r, g, b = cv2.split(image)
          b_norm = cv2.normalize(b, None, 0, 1, cv2.NORM_MINMAX, dtype=cv2.CV_32F)
          g_norm = cv2.normalize(g, None, 0, 1, cv2.NORM_MINMAX, dtype=cv2.CV_32F)
          r_norm = cv2.normalize(r, None, 0, 1, cv2.NORM_MINMAX, dtype=cv2.CV_32F)
          img = cv2.merge([r_norm, g_norm, b_norm])
          return img
      
      data_gen = ImageDataGenerator(
          preprocessing_function=custom_normalization, validation_split=0.2
      )


      실제 이미지 비교


      왼쪽이 적용 전, 오른쪽이 적용 후 사진입니다.

      적용 전후를 비교해보면 명확하게 오른쪽 사진이 선명하게 보이는 것을 확인하실 수 있습니다.


      평가


      위 그래프는 특정 손목 시계 이미지를 넣었을 때, 몇순위만에 손목 시계 종류를 맞추었는지에 대한 그래프입니다.

      normalization 적용 후 1순위로 맞출 확률이 10%가량 상승한 것을 확인할 수 있었습니다.


      Conclusions

      실제 제가 진행하고 있는명품 손목시계 분류 Project는 이미지 데이터 셋이 적은 문제를 가지고 있었고,

      덕분에 어떻게하면 적은 데이터 셋으로 제대로된 분류를 할 수 있을까에 대한 많은 고민을 하였습니다.

      그 결과 만족할만한 수준의 분류 성능을 만들어내어 실제 User에게 제공할 수 있게 되었습니다.

      이미지 프로세싱에 대해 실제 데이터를 다뤄보고 적용해본 좋은 경험이었다고 생각합니다.

      댓글 0

      DEVOTEE를 활성화 시키면
      지금 작성한 댓글에 AI가 댓글을 달아줍니다.

      chem 님의 최신 블로그

      더보기

      DEVOTEE 추천 블로그

      동영상 기고하기