머신러닝

PyTorch 안면 Landmark Data Loading and Processing

coding art 2019. 6. 16. 22:29
728x90






안면 데이타 처리 예제를 살펴보자. 이 예제zip 데이터를 다운 받아서 업로드하여 파이선 unzip 알고리듬으로 압축해제를 하려 하였으나 무슨 이유에선지 성공하지 못했다. 그 대안으,zip 파일을 압축을 푼 상태에서 많이 저장 되어 있는 jpeg 파일들을 업로딩하였더니 Sample 폴더 밑에 위치하였다.


우선 mkdir faces 명령으로 폴더를 준비한다. 그 다음 거의 다 jpeg 파일들이므로 mv *.jpeg faces 명령에 의해 옮겨 넣는다. 그 외에 .py 파일 및 .csv 파일들이 하나씩 있는데 mv 명령을 사용하여 faces 폴더에 옮겨 넣는다.

그 다음 mkdir data 명령을 사용하여 data 폴더를 준비한다. 마지막으로 mv faces data 명령에 의해 데이터 파일 구조를 완성한다.


이렇게 준비한 데이터는 GPU 연결이 끓어지면 죄다 사라지므로 잽싸게 처리하도록 하자. 이어서 9번 셀에서 라이브러리들을 죄다 선언한다. 순차적으로 튜토리얼 내용을 복사하여 Colabo에서 실행하도록 하자.


특정인 즉 person-7의 안면 랜드마크 데이터를 준비하자.


다음 그림에서 CSV 데이티 파일 구조를 참조하자.



앞서 준비한 특정인의 안면 랜드마크를 그래픽 출력하자.



여러 개의 안면 랜드마크를 출력하기 위해서 class 명령을 사용해 보자.


matplot 라이브러리의 subplot 명렬을 사용하여 1줄로 출력하고자 하나 실제로 Colabo에서 \n 으로 한줄 넘어가는 효과가 있었음을 참조하자. 지금 예제는 landmark4개의 안면을 출력하지만 ax = plt.subplot(1, 4, i+1) 명령과 plt.tight_layout()을 빼고 if i==3 에서 숫자를 늘려주면 늘린 만큼 출력된다.





이 출력 결과를 살펴보면 그 크기가 제각기 다르다는 것을 알 수 있다. 이와 같이 크기가 제각각인 이미지들을 뉴럴 네트워크에 적용하기 위해서는 Rescal, RandomCrop, ToTensor 와 같은 처리를 해야 한다.

이 기법들은 PyTorchTrandfer Learning 예제 초반에서 다시 사용되므로 잘 연습해 둘 필요가 있다.