이미지 세그먼트 도구를 사용하면 이미지의 각 픽셀이 특정 클래스에 관해서도 알아보겠습니다. 이는 같은 위치에서 객체를 감지하는 객체 감지와는 직사각형 영역, 이미지 분류는 이미지 이미지 세분화 개요 보기 예 를 참조하세요.
Task Library ImageSegmenter
API를 사용하여 커스텀 이미지 분류기 배포
모바일 앱에 적용할 수 있습니다
ImageSegmenter API의 주요 기능
회전, 크기 조절, 색상 공간을 포함한 입력 이미지 처리 알 수 있습니다.
라벨 지도 언어
두 가지 출력 유형, 카테고리 마스크와 신뢰도 마스크.
표시용 색상 라벨입니다.
지원되는 이미지 세그먼트 도구 모델
다음 모델은 ImageSegmenter
과(와) 호환됩니다.
API에 액세스할 수 있습니다.
모델 호환성을 충족하는 커스텀 모델 요구사항을 충족하는 방법을 안내합니다.
Java에서 추론 실행
자세한 내용은 이미지 세분화 참조
앱
Android 앱에서 ImageSegmenter
를 사용하는 방법의 예를 확인하세요.
1단계: Gradle 종속 항목 및 기타 설정 가져오기
.tflite
모델 파일을 Android 모듈의 assets 디렉터리에 복사합니다.
지정할 수도 있습니다 파일을 압축하지 않도록 지정합니다.
모듈의 build.gradle
파일에 TensorFlow Lite 라이브러리를 추가합니다.
android {
// Other settings
// Specify tflite file should not be compressed for the app apk
aaptOptions {
noCompress "tflite"
}
}
dependencies {
// Other dependencies
// Import the Task Vision Library dependency
implementation 'org.tensorflow:tensorflow-lite-task-vision'
// Import the GPU delegate plugin Library for GPU inference
implementation 'org.tensorflow:tensorflow-lite-gpu-delegate-plugin'
}
2단계: 모델 사용
// Initialization
ImageSegmenterOptions options =
ImageSegmenterOptions.builder()
.setBaseOptions(BaseOptions.builder().useGpu().build())
.setOutputType(OutputType.CONFIDENCE_MASK)
.build();
ImageSegmenter imageSegmenter =
ImageSegmenter.createFromFileAndOptions(context, modelFile, options);
// Run inference
List<Segmentation> results = imageSegmenter.segment(image);
자세한 내용은 소스 코드 및
javadoc
ImageSegmenter
구성 옵션을 참조하세요.
iOS에서 추론 실행
1단계: 종속 항목 설치
작업 라이브러리는 CocoaPods를 사용한 설치를 지원합니다. CocoaPods가 이(가) 시스템에 설치되어 있습니다. 자세한 내용은 CocoaPods 설치 가이드 를 참조하세요.
자세한 내용은 CocoaPods 가이드를 참조하세요. Xcode 프로젝트에 포드 추가하기
Podfile에 TensorFlowLiteTaskVision
포드를 추가합니다.
target 'MyAppWithTaskAPI' do
use_frameworks!
pod 'TensorFlowLiteTaskVision'
end
추론에 사용할 .tflite
모델이 있는지 확인합니다.
App Bundle을 개발합니다
2단계: 모델 사용
Swift
// Imports
import TensorFlowLiteTaskVision
// Initialization
guard let modelPath = Bundle.main.path(forResource: "deeplabv3",
ofType: "tflite") else { return }
let options = ImageSegmenterOptions(modelPath: modelPath)
// Configure any additional options:
// options.outputType = OutputType.confidenceMasks
let segmenter = try ImageSegmenter.segmenter(options: options)
// Convert the input image to MLImage.
// There are other sources for MLImage. For more details, please see:
// https://developers.google.com/ml-kit/reference/ios/mlimage/api/reference/Classes/GMLImage
guard let image = UIImage (named: "plane.jpg"), let mlImage = MLImage(image: image) else { return }
// Run inference
let segmentationResult = try segmenter.segment(mlImage: mlImage)
Objective-C
// Imports
#import <TensorFlowLiteTaskVision/TensorFlowLiteTaskVision.h>
// Initialization
NSString *modelPath = [[NSBundle mainBundle] pathForResource:@"deeplabv3" ofType:@"tflite"];
TFLImageSegmenterOptions *options =
[[TFLImageSegmenterOptions alloc] initWithModelPath:modelPath];
// Configure any additional options:
// options.outputType = TFLOutputTypeConfidenceMasks;
TFLImageSegmenter *segmenter = [TFLImageSegmenter imageSegmenterWithOptions:options
error:nil];
// Convert the input image to MLImage.
UIImage *image = [UIImage imageNamed:@"plane.jpg"];
// There are other sources for GMLImage. For more details, please see:
// https://developers.google.com/ml-kit/reference/ios/mlimage/api/reference/Classes/GMLImage
GMLImage *gmlImage = [[GMLImage alloc] initWithImage:image];
// Run inference
TFLSegmentationResult *segmentationResult =
[segmenter segmentWithGMLImage:gmlImage error:nil];
출처
코드
TFLImageSegmenter
구성 옵션을 참조하세요.
Python에서 추론 실행
1단계: pip 패키지 설치
pip install tflite-support
2단계: 모델 사용
# Imports
from tflite_support.task import vision
from tflite_support.task import core
from tflite_support.task import processor
# Initialization
base_options = core.BaseOptions(file_name=model_path)
segmentation_options = processor.SegmentationOptions(
output_type=processor.SegmentationOptions.output_type.CATEGORY_MASK)
options = vision.ImageSegmenterOptions(base_options=base_options, segmentation_options=segmentation_options)
segmenter = vision.ImageSegmenter.create_from_options(options)
# Alternatively, you can create an image segmenter in the following manner:
# segmenter = vision.ImageSegmenter.create_from_file(model_path)
# Run inference
image_file = vision.TensorImage.create_from_file(image_path)
segmentation_result = segmenter.segment(image_file)
출처
코드
ImageSegmenter
구성 옵션을 참조하세요.
C++에서 추론 실행
// Initialization
ImageSegmenterOptions options;
options.mutable_base_options()->mutable_model_file()->set_file_name(model_path);
std::unique_ptr<ImageSegmenter> image_segmenter = ImageSegmenter::CreateFromOptions(options).value();
// Create input frame_buffer from your inputs, `image_data` and `image_dimension`.
// See more information here: tensorflow_lite_support/cc/task/vision/utils/frame_buffer_common_utils.h
std::unique_ptr<FrameBuffer> frame_buffer = CreateFromRgbRawBuffer(
image_data, image_dimension);
// Run inference
const SegmentationResult result = image_segmenter->Segment(*frame_buffer).value();
출처
코드
ImageSegmenter
구성 옵션을 참조하세요.
결과 예시
이것은 세그먼테이션 결과의 예입니다. deeplab_v3 TensorFlow Hub에서 사용할 수 있는 일반 세분화 모델
Color Legend:
(r: 000, g: 000, b: 000):
index : 0
class name : background
(r: 128, g: 000, b: 000):
index : 1
class name : aeroplane
# (omitting multiple lines for conciseness) ...
(r: 128, g: 192, b: 000):
index : 19
class name : train
(r: 000, g: 064, b: 128):
index : 20
class name : tv
Tip: use a color picker on the output PNG file to inspect the output mask with
this legend.
세분화 카테고리 마스크는 다음과 같아야 합니다.
간단한 CLI 데모 도구 ImageSegmenter 모델을 학습시킬 수 있습니다
모델 호환성 요구사항
ImageSegmenter
API에는 필수 TFLite 모델이 포함된 TFLite 모델이 필요합니다.
메타데이터. 이미지 메타데이터 생성 예시 보기
TensorFlow Lite 메타데이터 작성기를 사용한 세그먼트
API를 참고하세요.
입력 이미지 텐서 (kTfLiteUInt8/kTfLiteFloat32)
- 크기가
[batch x height x width x channels]
인 이미지 입력 - 일괄 추론은 지원되지 않습니다 (
batch
는 1이어야 함). - RGB 입력만 지원됩니다 (
channels
는 3이어야 함). - 유형이 kTfLiteFloat32인 경우 NormalizationOptions가 입력 정규화를 위해 메타데이터에 첨부됩니다.
- 크기가
출력 마스크 텐서: (kTfLiteUInt8/kTfLiteFloat32)
- 크기가
[batch x mask_height x mask_width x num_classes]
인 텐서,batch
는 1이어야 하며,mask_width
및mask_height
는 모델이 생성한 세그먼테이션 마스크의 차원num_classes
는 모델에서 지원하는 클래스 수입니다. - 선택사항이지만 권장되는 라벨 맵은
유형 TENSOR_AXIS_LABELS인 AssociatedFile-s,
행입니다. 이러한 첫 번째 AssociatedFile (있는 경우)은
label
를 채우는 데 사용됩니다. 필드 (C++에서는class_name
라고 함)를 반환합니다.display_name
필드는 언어가 다음에서 사용되는ImageSegmenterOptions
의display_names_locale
필드: 생성 시간(기본값: en, 예: 영어) 다음 사항이 모두 충족되지 않는 경우 결과의index
필드만 채워집니다.
- 크기가