안면 데이타 처리 예제를 살펴보자. 이 예제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 으로 한줄 넘어가는 효과가 있었음을 참조하자. 지금 예제는 landmark된 4개의 안면을 출력하지만 ax = plt.subplot(1, 4, i+1) 명령과 plt.tight_layout()을 빼고 if i==3 에서 숫자를 늘려주면 늘린 만큼 출력된다.
이 출력 결과를 살펴보면 그 크기가 제각기 다르다는 것을 알 수 있다. 이와 같이 크기가 제각각인 이미지들을 뉴럴 네트워크에 적용하기 위해서는 Rescal, RandomCrop, ToTensor 와 같은 처리를 해야 한다.
이 기법들은 PyTorch의 Trandfer Learning 예제 초반에서 다시 사용되므로 잘 연습해 둘 필요가 있다.
'머신러닝' 카테고리의 다른 글
구글 Colabo에서 PyTorch CIFAR-10 이미지 머신 러닝 (0) | 2019.06.18 |
---|---|
PyTorch 안면 이미지 데이타 Rescale, RandomCrop, Compo (0) | 2019.06.17 |
PyTorch의 정체와 자동미분 알고리듬(Automatic Differentiation) (0) | 2019.06.15 |
PyTorch의 정체와 사용법 튜토리얼 소개 (0) | 2019.06.14 |
Low Pass Filtering 알고리듬을 사용한 학습 데이터 생성 및 RNN 필터링 (0) | 2019.06.12 |