참고: https://youtu.be/9Y77ha3ioYY?si=wRbguq1IYqViWDLw
이번 예제는 인터넷이나 본인이 촬영한 개 사진으로 견종을 분류하는 예제이다.
학습 데이터로 많은 사진을 구해야 하는게 번거러울 수 있으니 유튜브 링크에서 받은 파일을 공유한다.
이 예제를 문제없이 실행하려면, 먼저 사진들을 지정공간에 저장하여야 한다.
작업 디렉토리에서 'content'란 폴더를 먼저 생성하고 'content' 폴더 아래에서 'dog_image' 폴더 안에 압축된 사진을 풀어낸다.
위 그림과 같은 폴더 구조를 갖도록 하며, 'cats_and_dogs_filtered'는 앞의 글 예제에서 사용한 파일이므로 무시한다.압축을 풀면 'test' 폴더와 'test_image_files' 폴더는 만들어지지 않아서 빈 폴더를 만들어 주고, 아래 코드를 따라하도록 하자.
'test' 폴더 아래 있는 사진들을 모두 'test_image_files' 폴더로 복사하는 코드이다.
위 코드는 학습용 데이터중 15%를 검증용으로 사용하기 위한 작업이다.
flow_from_directory()에서 subset인자를 'training', 'validation'으로 나누었다는 것을 확인하자.
사전 학습된 모델은 MobileNet()을 사용하며 이중에서도 특징 추출기만 사용한다.
여기서 4가지 견종을 분류하기 위해서 분류기를 설계하고 특히 출력층의 노드는 견종에 맞춰 4개로 설정한다.사전 학습된 모델을 사용하므로 새로 학습하는 비율을 낮게 fine-tuning 하도록 하였다.
학습 초기에는 정확도가 47% 정도로 낮았으나, EarlyStopping 조건에 의해 학습을 끝냈을 때는 97%까지 올라갔다.
이전 글에서도 많이 했던 loss와 accuracy에 대한 그래프이다. overfitting을 별로 보이지 않는다.
이제 다른 사진을 가지고 추론해보자.
앞에서 사진중 일부를 테스트용 데이터로 사용하기 위해서 따로 저장했었다.
이것으로 추론하고 그 결과를 보니 잘 맞추고 있다.
다음 글에서는 이미 예제에서 사용했었지만, 잘모르고 있는 callback 함수에 대해서 설명한다.
'AI > TensorFlow 학습' 카테고리의 다른 글
25. TensorFlow 2.x - GTSRB를 이용한 예제 (0) | 2024.08.29 |
---|---|
24. TensorFlow 2.x - callback 함수 소개 (0) | 2024.08.26 |
22. TensorFlow 2.x - Transfer Learning 예제 Cats and Dogs (0) | 2024.08.22 |
21. TensorFlow 2.x - Transfer Learning 소개 (0) | 2024.08.21 |
19. TensorFlow 2.x - GRU 주가예측 예제 (0) | 2024.08.19 |