본문 바로가기
딥러닝\머신러닝/이미지분석

[pytorch, 이미지분석] 이미지 불러올 때, io.imread, plt.imread 차이

by 인포메틱스 2022. 8. 4.
반응형

 최근 이미지 분석을 공부하면서 논문에서 공개 해놓은 모델을 사용해보려고 했습니다.

 

 github에 공개해놓은 모델 pipeline은 실제 사용하기에 엉망이었기 때문에(스스로 만든 function을 공개를 못해놓으니.. 실사용이 불가하더라구요) 공개 해놓은 모델만 이용이 가능했었습니다. 

 

그래서 내부 코드 분석후에  모델의 구조를 대략적으로 만들어서 돌아갈 수 있게끔 만들어냈고, TCGA 데이터를 patch들로 나누고 (해당 논문 github에 공개해놓은걸 조금 돌아갈수있게끔 개조했습니다.) 모델을 돌려보니 이게 왠걸 결과가 개똥으로 나오더군요.. (논문까지 나왔으면서.. 왜.. )

 

 이렇게 개똥같이 github가 정리되고 결과도 실제로 잘 안 나오는 논문이 가끔 있다는 것으로 알고 있어서 넘어갔습니다.

 

 그리고 다른 논문을 이것 저것 찾아 보다가 어쩌다 보니 그 이유를 찾게 되었습니다.

 

그 이유는..

 

이미지를 불러올때, 다양한 방법이 있습니다.

 

skimage에서 io.imread가 있고, matplotlib.pyplot에서의 imread(plt.imread로 주로 사용되죠)가 있습니다. 그이외에도 opencv(cv2)에도 있습니다.

 

그런데 여기에서 다같은 imread라고 해서 결과값이 같다라고 생각될 수 있는데, 그렇지 않습니다. 

 

모델이 돌아가지 않았던 이유. 바로 io.imread와 plt.imread의 차이 때문이었습니다.

 

plt.imread의 경우 PNG만 읽어들일 때, 0-1사이의 float로 읽히게끔 해놨기 때문에 다른 imread와는 결과가 다르게 나옵니다(왜.. 그렇게 만들었누...). 그리고 그 내용은 다음과 같은 정보에 있습니다.

 

 

 

그리고 해당 모델의 github를 확인해보니. plt를 주로 사용하였고, 같이 공개 해놓은 그림이 png더군요. 그래서 후딱 변경해서 진행해보니 전보다는 훨씬 괜찮은 결과가 나오게 되었습니다.

 

 

딥러닝에서 중요한 부분이자 대부분 에러가 나는 곳이 Input부분인듯하니 어떤 공개된 모델을 사용할 때 결과가 잘 안나올 경우 input을 꼭 보시기 바랍니다.

728x90
반응형

댓글