인프런 커뮤니티 질문&답변

김태근님의 프로필 이미지
김태근

작성한 질문수

[개정판] 딥러닝 컴퓨터 비전 완벽 가이드

<삭제 예정> Keras-Retinanet으로 Object Detection 실습 - 01

Retinanet 오류

작성

·

340

0

pretrained model를 load_model로 불러올때  아래와 같은 오류가 나옵니다. 이전에는 아무런 문제없이 잘 되었는데....


---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-17-3a306d3fab4b> in <module>
      4 # pretrained coco 모델 파일을 retinanet 모델로 로딩.
      5 from keras_retinanet import models
----> 6 retina_model = models.load_model(model_path, backbone_name='resnet50')

~\AppData\Roaming\Python\Python36\site-packages\keras_retinanet\models\__init__.py in load_model(filepath, backbone_name)
     81     """
     82     import keras.models
---> 83     return keras.models.load_model(filepath, custom_objects=backbone(backbone_name).custom_objects)
     84 
     85 

C:\anaconda3\envs\tf115\lib\site-packages\keras\engine\saving.py in load_wrapper(*args, **kwargs)
    490                 os.remove(tmp_filepath)
    491             return res
--> 492         return load_function(*args, **kwargs)
    493 
    494     return load_wrapper

C:\anaconda3\envs\tf115\lib\site-packages\keras\engine\saving.py in load_model(filepath, custom_objects, compile)
    582     if H5Dict.is_supported_type(filepath):
    583         with H5Dict(filepath, mode='r') as h5dict:
--> 584             model = _deserialize_model(h5dict, custom_objects, compile)
    585     elif hasattr(filepath, 'write') and callable(filepath.write):
    586         def load_function(h5file):

C:\anaconda3\envs\tf115\lib\site-packages\keras\engine\saving.py in _deserialize_model(h5dict, custom_objects, compile)
    271     if model_config is None:
    272         raise ValueError('No model found in config.')
--> 273     model_config = json.loads(model_config.decode('utf-8'))
    274     model = model_from_config(model_config, custom_objects=custom_objects)
    275     model_weights_group = h5dict['model_weights']

AttributeError: 'str' object has no attribute 'decode'

답변 4

0

김태근님의 프로필 이미지
김태근
질문자

감사합니다.

pip install h5py==2.10.0을 실행하여 버전이 3.1.0인 h5py가 삭제하고 h5py를 2.10.0로 하니 정상적으로 작동합니다.

감사합니다.

0

권 철민님의 프로필 이미지
권 철민
지식공유자

알려드린 stackoverflow link에 h5py를 2.10.0으로 downgrade하여 문제를 해결했다고 한 사례가 있으니 pip로 downgrade하여 재 시도해보시지요.

For me the solution was downgrading the h5py package (in my case to 2.10.0), apparently putting back only Keras and Tensorflow to the correct versions was not enough.

0

김태근님의 프로필 이미지
김태근
질문자

window 7, window 10에서 동일한 오류가 나옵니다.

h5py 버전은 '3.1.0'이고 업그레이드 다운그레이드 한 적은 없습니다.

conda는 최신버전으로 재설치한 후

tensorflow-gpu == 1.15.2
keras==2.3.0으로 설치하였습니다.

그리고 아래 명령어 실행시에도 동일한 오류 메세지가 나옵니다.

training_model.load_weights('./keras-retinanet/snapshots/resnet50_coco_best_v2.1.0.h5',skip_mismatch=True,by_name=True)

0

권 철민님의 프로필 이미지
권 철민
지식공유자

안녕하십니까,

지금 Windows 서버에서 안되시는 거죠?

해당 오류는 Keras의 load_model()을 호출 시 발생하는 오류같습니다.  원래 잘 수행되었다면, 최근에 keras나 tensorflow 버전을 해당 conda 환경에서 업그레이드/다운그레이드 한적이 없는지 확인 부탁드립니다.  또한 h5py 패키지를 upgrade/또는 downgrade 한적 없는지도 확인 부탁드립니다. h5py package의 버전도 확인해 주십시요.

아래 stackoverflow 내용도 같이 보시고 첵크 부탁드립니다.

https://stackoverflow.com/questions/53740577/does-any-one-got-attributeerror-str-object-has-no-attribute-decode-whi

감사합니다.

김태근님의 프로필 이미지
김태근

작성한 질문수

질문하기