Google I / O가 5 월 18 ~ 20 일에 돌아옵니다! 공간을 예약하고 일정을 짜세요 지금 등록하세요

이미지 분류

이미지가 나타내는 것을 식별하는 작업을 이미지 분류 라고 합니다 . 이미지 분류 모델은 다양한 이미지 클래스를 인식하도록 훈련됩니다. 예를 들어 토끼, 햄스터, 개 등 세 가지 동물 유형을 나타내는 사진을 인식하도록 모델을 훈련시킬 수 있습니다. TensorFlow Lite는 모바일 애플리케이션에 배포 할 수있는 최적화 된 사전 학습 된 모델을 제공합니다. 여기에서 TensorFlow를 사용한 이미지 분류에 대해 자세히 알아보세요.

다음 이미지는 Android에서 이미지 분류 모델의 출력을 보여줍니다.

Android 예시 스크린 샷

시작하다

TensorFlow Lite를 처음 사용하고 Android 또는 iOS로 작업하는 경우 시작하는 데 도움이 될 수있는 다음 예제 애플리케이션을 살펴 보는 것이 좋습니다.

TensorFlow Lite Task Library의 기본 제공 API를 활용하여 단 몇 줄의 코드로 이미지 분류 모델을 통합 할 수 있습니다. TensorFlow Lite 지원 라이브러리를 사용하여 고유 한 사용자 지정 추론 파이프 라인을 구축 할 수도 있습니다.

아래의 Android 예제는 각각 lib_task_apilib_support 로 두 메서드의 구현을 보여줍니다.

Android 예제보기

iOS 예보기

Android / iOS 이외의 플랫폼을 사용 중이거나 TensorFlow Lite API에 이미 익숙한 경우 시작 모델 및 지원 파일 (해당하는 경우)을 다운로드하세요.

스타터 모델 다운로드

모델 설명

작동 원리

학습 중에 이미지 분류 모델에는 이미지 및 관련 라벨이 제공 됩니다. 각 레이블은 모델이 인식하는 방법을 배울 수있는 고유 한 개념 또는 클래스의 이름입니다.

충분한 학습 데이터 (종종 라벨 당 수백 또는 수천 개의 이미지)가 주어지면 이미지 분류 모델은 새로운 이미지가 학습 된 클래스에 속하는지 여부를 예측하는 방법을 학습 할 수 있습니다. 이 예측 과정을 추론 이라고 합니다 . 전이 학습 을 사용하여 기존 모델을 사용하여 새로운 이미지 클래스를 식별 할 수도 있습니다. 전이 학습에는 매우 큰 훈련 데이터 세트가 필요하지 않습니다.

이후에 모델에 대한 입력으로 새 이미지를 제공하면 학습 된 각 동물 유형을 나타내는 이미지의 확률이 출력됩니다. 예제 출력은 다음과 같습니다.

동물 유형 개연성
토끼 0.07
햄스터 0.02
0.91

출력의 각 숫자는 훈련 데이터의 레이블에 해당합니다. 모델이 훈련 된 3 개의 라벨과 출력을 연결하면 모델이 이미지가 개를 나타낼 확률이 높다는 것을 알 수 있습니다.

모든 확률의 합 (토끼, 햄스터 및 개)이 1이라는 것을 알 수 있습니다. 이것은 여러 클래스가있는 모델에 대한 일반적인 출력 유형입니다 (자세한 내용은 Softmax 참조).

모호한 결과

출력 확률의 합은 항상 1이므로 이미지가 모델이 학습 된 클래스에 속하는 것으로 확실하게 인식되지 않으면 하나의 값이 크게 커지지 않고 레이블 전체에 분포 된 확률을 볼 수 있습니다.

예를 들어 다음은 모호한 결과를 나타낼 수 있습니다.

상표 개연성
토끼 0.31
햄스터 0.35
0.34
모델이 모호한 결과를 자주 반환하는 경우 다른 더 정확한 모델이 필요할 수 있습니다.

모델 아키텍처 선택

TensorFlow Lite는 원본 데이터 세트에서 모두 학습 된 다양한 이미지 분류 모델을 제공합니다. MobileNet, Inception 및 NASNet과 같은 모델 아키텍처는 호스팅 된 모델 페이지 에서 사용할 수 있습니다. 사용 사례에 가장 적합한 모델을 선택하려면 개별 아키텍처와 다양한 모델 간의 몇 가지 장단점을 고려해야합니다. 이러한 모델 장단점 중 일부는 성능, 정확도 및 모델 크기와 같은 메트릭을 기반으로합니다. 예를 들어 바코드 스캐너를 구축하려면 더 빠른 모델이 필요하지만 의료용 이미징 앱에는 더 느리고 정확한 모델이 필요할 수 있습니다. 제공된 이미지 분류 모델 은 다양한 크기의 입력을 허용합니다. 일부 모델의 경우 파일 이름에 표시됩니다. 예를 들어 Mobilenet_V1_1.0_224 모델은 224x224 픽셀의 입력을 허용합니다. 모든 모델에는 픽셀 당 3 개의 색상 채널 (빨간색, 녹색 및 파란색)이 필요합니다. 양자화 된 모델에는 채널당 1 바이트가 필요하고 부동 모델에는 채널당 4 바이트가 필요합니다. AndroidiOS 코드 샘플은 전체 크기 카메라 이미지를 각 모델에 필요한 형식으로 처리하는 방법을 보여줍니다.

용도 및 제한

TensorFlow Lite 이미지 분류 모델은 단일 라벨 분류에 유용합니다. 즉, 이미지가 나타낼 가능성이 가장 높은 단일 레이블을 예측합니다. 그들은 1000 개의 이미지 클래스를 인식하도록 훈련되었습니다. 전체 클래스 목록은 모델 zip 의 라벨 파일을 참조하세요. 새 클래스를 인식하도록 모델을 학습 시키려면 모델 사용자 지정을 참조하십시오. 다음 사용 사례의 경우 다른 유형의 모델을 사용해야합니다.
  • 이미지 내 하나 이상의 객체 유형 및 위치 예측 ( 객체 감지 참조)
  • 이미지 구성 예측 (예 : 피사체 대 배경) ( 세그멘테이션 참조)
대상 장치에서 스타터 모델을 실행 한 후에는 여러 모델을 실험하여 성능, 정확도 및 모델 크기 간의 최적 균형을 찾을 수 있습니다.

모델 사용자 지정

제공된 사전 훈련 된 모델은 1000 개의 이미지 클래스를 인식하도록 훈련되었습니다. 전체 클래스 목록은 모델 zip 의 라벨 파일을 참조하세요. 또한 전이 학습을 사용하여 원래 세트에없는 클래스를 인식하도록 모델을 다시 훈련시킬 수 있습니다. 예를 들어, 원래 훈련 데이터에 나무가 없더라도 다른 나무 종을 구별하기 위해 모델을 다시 훈련 할 수 있습니다. 이렇게하려면 학습하려는 각 새 레이블에 대한 학습 이미지 세트가 필요합니다. TFLite Model Maker 또는 TensorFlow Codelab으로 꽃 인식 에서 전이 학습을 수행하는 방법을 알아 봅니다.

성능 벤치 마크

모델 성능은 모델이 주어진 하드웨어에서 추론을 실행하는 데 걸리는 시간으로 측정됩니다. 시간이 낮을수록 모델이 더 빠릅니다. 필요한 성능은 응용 프로그램에 따라 다릅니다. 다음 프레임이 그려지기 전에 각 프레임을 분석하는 것이 중요 할 수있는 실시간 비디오와 같은 애플리케이션의 경우 성능이 중요 할 수 있습니다 (예 : 30fps 비디오 스트림에서 실시간 추론을 수행하려면 추론이 33ms보다 빨라야 함) . TensorFlow Lite는 MobileNet 모델의 성능 범위를 3.7ms에서 80.3ms까지 양자화했습니다. 성능 벤치 마크 수치는 벤치마킹 도구 로 생성됩니다.
모델명 모델 사이즈 장치 NNAPI CPU
Mobilenet_V1_1.0_224_quant 4.3Mb Pixel 3 (Android 10) 6ms 13ms *
Pixel 4 (Android 10) 3.3ms 5ms *
iPhone XS (iOS 12.4.1) 11ms **

* 4 개의 스레드가 사용되었습니다.

** 최상의 성능을 위해 iPhone에서 2 개의 스레드를 사용했습니다.

모델 정확도

정확도는 모델이 이미지를 올바르게 분류하는 빈도로 측정됩니다. 예를 들어 명시된 정확도가 60 % 인 모델은 평균 60 %의 시간 동안 이미지를 올바르게 분류 할 수 있습니다.

호스팅 된 모델 목록 은 Top-1 및 Top-5 정확도 통계를 제공합니다. Top-1은 모델 출력에서 ​​가장 높은 확률을 가진 레이블로 올바른 레이블이 나타나는 빈도를 나타냅니다. 상위 5 개는 모델 출력에서 ​​가장 높은 5 개의 확률에 올바른 레이블이 나타나는 빈도를 나타냅니다.

TensorFlow Lite 양자화 MobileNet 모델의 Top-5 정확도 범위는 64.4 ~ 89.9 %입니다.

모델 사이즈

디스크에있는 모델의 크기는 성능과 정확도에 따라 다릅니다. 크기는 모바일 개발 (앱 다운로드 크기에 영향을 줄 수 있음) 또는 하드웨어 작업 (사용 가능한 저장 용량이 제한 될 수있는 경우)에 중요 할 수 있습니다.

TensorFlow Lite 양자화 MobileNet 모델의 크기는 0.5 ~ 3.4MB입니다.

추가 읽기 및 리소스

이미지 분류와 관련된 개념에 대해 자세히 알아 보려면 다음 리소스를 사용하세요.