이미지 분류

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

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

Android 예시 스크린 샷

참고: (1) 기존 모델을 통합하려면 TensorFlow Lite 작업 라이브러리를 사용해 보세요. (2) 모델을 사용자 정의하려면 TensorFlow Lite 모델 제작기를 사용해 보세요.

시작하기

TensorFlow Lite를 처음 사용하고 Android 또는 iOS로 작업하는 경우, 다음 예제 애플리케이션을 탐색하면 시작하는 데 도움이 됩니다.

TensorFlow Lite 작업 라이브러리의 기본 API를 활용하여 몇 줄의 코드만으로 오디오 분류 모델을 통합할 수 있습니다. TensorFlow Lite 지원 라이브러리를 사용하여 사용자 정의 추론 파이프라인을 구축할 수도 있습니다.

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

Android 예제 보기

iOS 예제 보기

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

스타터 모델 다운로드

모델 설명

동작 원리

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

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

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

동물 유형 확률
토끼 0.07
햄스터 0.02
0.91

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

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

참고: 이미지 분류는 이미지가 모델이 훈련된 클래스 중 하나 이상을 나타낼 확률만 알려줍니다. 이미지 내에서 객체의 위치나 정체성을 알 수 없습니다. 이미지 내에서 객체와 위치를 식별해야 하는 경우 객체 감지 모델을 사용해야 합니다.

모호한 결과

출력 확률의 합은 항상 1이기 때문에 이미지가 모델이 훈련된 클래스에 속하는 것으로 확실하게 인식되지 않으면 어떤 하나의 값이 유의할 정도로 커지지 않으면서 확률이 레이블 전체에 걸쳐 분포되는 것을 볼 수 있습니다.

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

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

모델 아키텍처 선택하기

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

용도 및 제한

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

모델을 사용자 정의하기

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

성능 벤치마크

모델 성능은 모델이 주어진 하드웨어에서 추론을 실행하는 데 걸리는 시간으로 측정됩니다. 시간이 낮을수록 모델이 더 빠릅니다. 필요한 성능은 애플리케이션에 따라 다릅니다. 다음 프레임이 그려지기 전에 각 프레임을 분석하는 것이 중요할 수 있는 실시간 비디오와 같은 애플리케이션의 경우, 성능이 중요할 수 있습니다(예: 30fps 비디오 스트림에서 실시간 추론을 수행하려면 추론이 33ms보다 빨라야 함). TensorFlow Lite는 MobileNet 모델의 성능 범위를 3.7ms에서 80.3ms까지 양자화했습니다. 성능 벤치마크 번호는 벤치마킹 도구로 생성됩니다.
모델명 모델 크기 기기 NNAPI CPU
Mobilenet_V1_1.0_224_quant 4.3 Mb 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은 모델의 출력에서 가장 높은 확률을 가진 레이블로 올바른 레이블이 나타나는 빈도를 나타냅니다. Top-5는 모델의 출력에서 가장 높은 확률 5개에 올바른 레이블이 나타나는 빈도를 나타냅니다.

TensorFlow Lite는 MobileNet 모델의 Top-5 정확성 범위를 64.4~89.9%로 양자화했습니다.

모델 크기

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

TensorFlow Lite는 MobileNet 모델의 크기 범위를 0.5~3.4MB로 양자화했습니다.

추가 자료 및 리소스

다음 리소스를 사용하여 오디오 분류와 관련된 개념에 대해 자세히 알아보세요.