Image classification을 했으니 object detection으로 넘어가야 한다. 가르침을 받을만한 책이 없기 때문에 맨 땅에 헤딩하면서 배우기로 한다. 다행히 PyTorch에서 제공하는 한글 메뉴얼이 있다.
https://tutorials.pytorch.kr/intermediate/torchvision_tutorial.html
PennFudan 이라는 데이터셋을 이용한 설명이 있다. Custom 데이터를 이용해야 하므로 mask를 어떻게 구성해야 하는지 파악해 보기로 한다. Colab 코드에서 정보를 좀 얻어보기로 한다.
https://colab.research.google.com/github/pytorch/vision/blob/temp-tutorial/tutorials/torchvision_finetuning_instance_segmentation.ipynb
from PIL import Image
Image.open('PennFudanPed/PNGImages/FudanPed00001.png')
Jupyter Notebook에서 이 코드를 실행하면 다음의 그림 파일인 것을 알 수 있다.
그리고 같은 형식의 이름 파일이 mask 인 것 같다.
mask = Image.open('PennFudanPed/PedMasks/FudanPed00001_mask.png')
검은색이다. 분명히 정보가 있을 것 같지만 검은색으로 보인다. 익숙한 R을 이용하여 그림 파일을 분석해 보았다.
library('png')
a=readPNG('FudanPed00001_mask.png')
Matrix 형식으로 불러오면 분석이 어려우니까 numeric 으로 변환하여 확인해 본다. 즉, 이 그림 파일은 3개의 값으로만 구성되어 있다.
unique(as.numeric(a))
[1] 0.000000000 0.003921569 0.007843137
좀 더 이해하기 쉽도록 자료를 변경하여 보자.
unique(as.numeric(a)) * 255
[1] 0 1 2
즉, 배경인 0과 1(1/255), 2(2/255)로 표시된 정보임을 알 수 있다. 프로그램의 관점에서는 분명하게 구분되지만 그림 파일 뷰어에서는 그렇게 보이지 않는 그런 것임을 알 수 있다.
답답해 하지 말고 다음 단계로 넘어가면 될 것 같다.