PIL to tensor type transfer

이두현·2022년 3월 15일
0
  • 평소에 image datatype에 대한 혼돈이 있었는데 이번 기회를 통해 확실히 정리해 보고자 한다.

  • image 데이터가 PIL에 저장될 경우 dimension은 HxWxC 형태로 설정된다. (C=1 ; when gray scale // C=3 ; when color scale)

  • 또한 저장되는 숫자들의 크기는 0~255 사이의 값을 갖는다.


  • pytorch image tensor의 경우 CxHxW 형태의 dimension을 가져야 한다.

  • 또한 image pixel 당 갖는 수의 크기도 0~1로 위의 경우와 차이를 보인다.

위의 문제를 해결하기 위해 tensor.Transforms 라는 라이브러리에서 PIL -> tensor와 tensor -> PIL 변환 함수를 제공하고 있다.


이 함수가 하는 일은
1. tensor type으로 dimension 변환
2. 이미지 scale [0,1]로 전환

반대로 tensor -> PIL 로 전환하는 함수도 존재한다.

아래의 블로그를 참고하였다
https://supermemi.tistory.com/139

추가내용

  • plt.imshow()가 받는 image 형태는 HxWxC 형태이므로 이를 고려하여 Nerual Network에서 바로나온 torch 형태의 CxHxW 데이터를 입력하는 일이 없도록 하자

  • gray scale로 변환 후에는 plt.imshow(cmap='gray')라는 옵션을 줘야 원하는 방식으로 확인됐음을 알 수 있다.

  • plt.imshow() 이후 plt.show() 함수를 콜해야 이전까지 쌓여있던 image buffer를 화면으로 내보낼 수 있다.

  • pyplot이 xming을 통해 나타나지 않아서 tkinter 라는 library를 apt-get 으로 받았다.
    http://daplus.net/python-python-%EC%9A%A9-tkinter-%EC%84%A4%EC%B9%98/

profile
0100101

0개의 댓글