10. 플러터 : 개와 고양이 사진 분류 (케라스) (1)

여기까지만 하고 그만했으면 좋겠다.
여러 가지를 하려다 보니
매번 할 때마다 새롭게 느껴지는 부분들이 힘들다.


어쨌든 마지막으로
딥러닝으로 개와 고양이를 분류하는 모델을 만들고
플러터를 사용해서 스마트폰에서 직접 분류를 해보려고 한다.
동물을 사랑하느냐고 물으면
당연히 그렇다고 대답하겠지만
그것보다도 기존 예제들이 너무 복잡해서
이미지를 분류할 수 있는 가장 단순한 예제를 만들고 싶었다.

첫 번째 사진은 처음 실행했을 때,
두 번째 사진은 [사진] 메뉴를 선택했을 때를 보여준다.
에뮬레이터에서 사용할 사진은 테스트 폴더로부터 두 장씩 복사했다.

세 번째 사진은 개를 선택했을 때 94.03%,
네 번째 사진은 고양이를 선택했을 때 0.15% 확률로 개라는 것을 보여준다.
개/고양이 모델 학습이 잘 되었음을 알 수 있다.
출력 값은 시그모이드를 통과한 값이고 1은 개, 0은 고양이를 가리킨다.



딥러닝 모델은 안드로이드와 아이폰에서 직접 다루기 때문에
플러터는 앨범에서 가져오거나 카메라로 찍은 이미지를 전달하는 역할만 한다.
전체 구현에서는 파이썬, 플러터, 안드로이드 코드가 필요하고
아이폰은 구현하지 않으려고 한다.
이전에 했던 아이폰 코드를 안드로이드와 비교하면서 따라 하면 되니까.

여러 유형의 코드가 섞여 있어서
이번 글을 포함해서 다섯 번에 걸쳐 올린다.
아래 나열한 순서를 따라 차례대로 해보자.
참고로 마지막 글은
이번 프로젝트를 진행하면서 디버깅을 하기 위한 용도로 만든 코드를 넣었다.

이번 글 만드는데.. 2주 걸렸다.
내가 실수를 한 부분이 있긴 했지만..
그래도 너무 오래 걸렸다.
우재는 실수하고 찾지 못하는 아빠를 닮지 말고.
안 된다고 화내지 말고.
모든 건 자신의 잘못이라는 걸 겸허하게 인정하는 사람이 되라.
이제 한동안 화내지 않을께. ^^


# 딥러닝

1. 모델 구현 (케라스)
2. 모델을 텐서플로 라이트로 변환


# 플러터

3. flutter_catdog 프로젝트 생성
4. pubspce.yaml 파일 수정
5. 이미지 경로를 스마트폰에 전달하고 수신하는 코드 구현


# 안드로이드
# 플러터 프로젝트에 포함된 안드로이드 프로젝트 사용

6. 텐서플로 라이트 모델 파일 추가
7. gradle 파일 수정
8. 경로 수신 및 사진을 모델에 전달하고 결과 수신
9. 개와 고양이 사진 에뮬레이터에 복사