본문 바로가기

프로젝트/(Vision)이미지 검색 및 상품추천

개발 일지 (3) - Extract features 및 Feature map 그리기

deep-deep-deep.tistory.com/25

 

Keras 이미지 Extract features 및 Feature map 그리기

1. 이미지 features 추출하고, Feature map을 그리기. (with VGG16) keras.io/api/applications/#extract-features-with-vgg16 from tensorflow.keras.applications.vgg16 import VGG16 from tensorflow.keras.pr..

deep-deep-deep.tistory.com

다음 구현 목표는 Extract features 및 Feature map을 추출하는 것이다. 

 

전체 시스템 동작 방식은 다음과 같다

사진입력 - 물체부 탐지 - 특징맵으로 추출 - 데이터베이스에서 유사 특징맵 검색 - 유사도 값 계산 및 유사 사진 출력

 

위 단계에서

사진입력 - 물체부 탐지 - 특징맵으로 추출 - 데이터베이스에서 유사 특징맵 검색 - 유사도 값 계산 및 유사 사진 출력

을 수행하려면, pretrained 된 모델에서 특정 물체의 feature를 추출할 수 있어야 하고, 이미지에서도 특징을 추출할 수 있어야 한다.

 

물론 이는 간단한 차원압축 모델로 작동하게 할 수는 있다.

 

하지만 현재 다루고 있는 모델은 COCO_pretrained_resnet50을 backbone으로 하는 RetinaNet 모델이지만

우리 프로젝트는 한샘에서 제공하는 커스텀 데이터셋을 사용하기 때문에 Feature map size에 대해서도 논의가 필요하다.

 

따라서 Feature Map을 이미지에서 추출과 Pretrained 모델에서 추출이 모두 필요하다. 

 

그 전에 오류 발생... 환경을 옮기다 보니 케라스와 tf 버전이 바뀐 것으로 보인다.

github.com/Jiwon-Hwang/DeepImaging/issues/4

 

ImportError: Keras requires TensorFlow 2.2 or higher. Install TensorFlow via `pip install tensorflow` · Issue #4 · Jiwon-Hwang

tensorflow 설치 후 python을 실행해서 import keras 했을 때의 오류. (ImportError: No module named 'tensorflow.keras) 이것도 마찬가지로 최신 케라스 버전과 기존에 설치된 텐서플로우 버전이 달라서 생기는 오류

github.com

위 조치를 취해서 keras를 재설치하여 해결했다.

 

 

Retinanet에서 feature를 어떻게 추출할까... 

 

github.com/raghakot/keras-vis/issues/37

 

Multiple inbound nodes error when visualising dense softmax · Issue #37 · raghakot/keras-vis

Im using the Keras VGG16 net with a custom top layer (4 class softmax) Loaded model with layers: [u'input_2', u'block1_conv1', u'block1_conv2', u'block1_pool', u'...

github.com

 

이전까지, keras와 tf의 호환 문제가 있었는데 tf.keras.Model이 아닌 keras.models.Model을 사용하니 오류가 사라졌다!

이를 통해 중간 레이어의 output을 받아오는데 성공했다.

 

 

또한 다음 블로그에서, 모델 중간에서 피쳐맵을 추출하는 방법에 대해 알 수 있었다.

 

pythonkim.tistory.com/164?category=698204

 

CNN 시각화 : 피처맵 (2)

이전 글에서 얘기했던 것처럼 지금부터 설명하는 코드는 "케라스 창시자"를 토대로 했고 수업에 사용하기 위해서 필요하기는 하지만 정해진 수업 시간을 넘어가는 부분에 대해서는 과감하게 정

pythonkim.tistory.com

 

성공!

 

원본

 

retinaNet P3 Layer에서 추출한 FeatureMap 256중 32개