4. ImageNet으로 꽃 분류 with flower_photos

2024. 6. 16. 23:04공부 정리

 

 Tf에 공개되어 있는 코드를 뜯어 본다. tf 사이트가 정말 잘되어있는게 순서대로 따라가기 좋고 다음에 무엇을 하면 좋은지도 알려준다.

https://www.tensorflow.org/tutorials/images/classification?hl=ko

 

 

전 단계의 코드와 다른 점:

  • PIL
  • seed와 이미지사이즈도 데이터셋 지정할 때 넣어준 점
  • prefetch
  • augmentation 추가
  • sequential([사전모델 변수, 뒤는 그대로-])식으로 모델 레이어를 쌓는다.
  • Tf.lite를 써서 모델을 저장하고 불러와 예측. 이전 모델과 측정값 비교.

 

Tf:

불러오기 > 갯수 체크 > PIL로 이미지 테스트 > 변수 지정 > 학습과 검사로 분리 > 클래스 정보 확인 > 데이터 시각화로 확인 > 각각 이미지 형태, 라벨 길이 확인 > 프리페칭 > 표준화층 생성 > 표준화 > 모델 생성 > 컴파일 > 요약 > 학습 > 시각화 > 데이터 증강 > 데이터 시각화로 증강 확인 > 모델층 추가 > 컴파일 > 요약 > 재학습 > 시각화 > 새로운 데이터 가져와 예측 > 케라스모델을 tf.lite모델로 변환 > 모델 저장 > 불러오기 > 키 역할인 시그니쳐를 통해 모델 불러오기 > 해당 모델로 예측 > 소프트맥스층을 통해 결과인 정확도 도출

 

 

* PIL = Python Image Library, cv2와 비슷한 일을 한다. 출력 형태와 쓰임새는 조금 다르다.

* cache().prefetch(buffer_size=AUTOTUNE) : 성능향상을 위해 데이터를 로컬 스토리지(or 메모리)에 임시로 저장해둔다. 또한 에포크마다 미리 대기하는 prefetching기능을 사용한다.

* augmentation을 tf.keras.layers.preprocessing.RandomFlip을 쓰지 않고 tf.keras.RandomFlip식으로 씀. preprocessing 앞에 experimental은 없어도 잘 된다. sof에서는 전자를 더 쓰라고 하는데 최신코드 모두 후자로 되어있다.

https://stackoverflow.com/questions/72928149/difference-between-experimental-preprocessing-layers-and-normal-preprocessing-la

* sequential로 모델을 재생성할 때 증강레이어를 추가할 수 있다. 이 경우 데이터의 변형 없이 그대로 모델을 통과시키면서 모든 이미지에 랜덤이펙트를 적용시킨다. 층 추가의 경우 보통 오브젝트 형태처럼 sequential로 감싼 것을 또 감싸는 형태라 뎁스가 올라갈거라 생각했는데, 이 경우엔 층부분만 똑똑하게 가져간다.

https://www.tensorflow.org/guide/keras/sequential_model?hl=ko

* tf.lite로 모바일 배포 및 최적화를 할 수 있다고 한다. 여기서는 저장과 불러와서 재사용하기까지만 한다.

 

 

728x90