Resim segmenterleri, bir resmin her pikselinin yardımcı olur. Bu, belirli bir bölgedeki nesneleri algılayan nesne algılamadan farklıdır. genel görünümü sınıflandıran resim sınıflandırması ve görüntüsüdür. Bkz. Resim segmentasyonuna genel bakış örnek .
Özel görüntü segmentleyicilerinizi dağıtmak için Task Library ImageSegmenter
API'yi kullanın.
veya önceden eğitilmiş uygulamalar
ekleyebilirsiniz.
ImageSegmenter API'nin temel özellikleri
Döndürme, yeniden boyutlandırma ve renk alanı dahil resim işleme gösterir.
Harita yerel ayarını etiketle.
Kategori maskesi ve güven maskesi olmak üzere iki çıkış türü vardır.
Görüntüleme amaçlı renkli etiket.
Desteklenen görüntü segmentleyici modelleri
Aşağıdaki modellerin ImageSegmenter
ile uyumlu olacağı garanti edilir
API'ye gidin.
TensorFlow'daki önceden eğitilmiş görüntü segmentasyon modelleri Pekiştirici.
Model uyumluluğunu karşılayan özel modeller hakkında daha fazla bilgi edinin.
Java'da çıkarım çalıştırma
Bkz. Resim Segmentasyonu referansı
uygulama
ImageSegmenter
uygulamasını Android uygulamasında nasıl kullanacağınızı gösteren örnek.
1. Adım: Gradle bağımlılığını ve diğer ayarları içe aktarın
.tflite
model dosyasını Android modülünün öğe dizinine kopyalayın
nerede çalıştırılacağına karar verin. Dosyanın sıkıştırılmaması gerektiğini belirtin ve
modülün build.gradle
dosyasına TensorFlow Lite kitaplığını ekleyin:
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. Adım: Modeli kullanma
// 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);
Kaynak koduna ve
javadoc
daha fazla ImageSegmenter
yapılandırma seçeneğine gidin.
iOS'te çıkarım çalıştır
1. Adım: Bağımlılıkları yükleyin
Görev Kitaplığı, CocoaPods kullanılarak yüklemeyi destekler. CocoaPods'un sisteminizde yüklü. Lütfen CocoaPods kurulumuna bakın. kılavuz başlıklı bölüme bakın.
Daha fazla bilgi için lütfen CocoaPods rehberine Xcode projesine kapsüller eklemeyi ele alacağız.
TensorFlowLiteTaskVision
kapsülünü Podfile'a ekleyin.
target 'MyAppWithTaskAPI' do
use_frameworks!
pod 'TensorFlowLiteTaskVision'
end
Çıkarım için kullanacağınız .tflite
modelinin mevcut olduğundan emin olun
uygulamanızı sağlar.
2. Adım: Modeli kullanma
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];
Kaynağa bakın
kod
daha fazla TFLImageSegmenter
yapılandırma seçeneğine gidin.
Python'da çıkarım çalıştırma
1. Adım: Pip paketini yükleyin
pip install tflite-support
2. Adım: Modeli kullanma
# 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)
Kaynağa bakın
kod
daha fazla ImageSegmenter
yapılandırma seçeneğine gidin.
C++'ta çıkarım çalıştır
// 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();
Kaynağa bakın
kod
daha fazla ImageSegmenter
yapılandırma seçeneğine gidin.
Örnek sonuçlar
Buradaki segmentin segmentasyon sonuçlarının bir örneği deeplab_v3 TensorFlow Hub'da bulunan genel bir segmentasyon modelidir.
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.
Segmentasyon kategorisi maskesi aşağıdaki gibi görünmelidir:
Şunun için basit CLI demo aracını deneyin: ImageSegmenter kullanarak test edebilirsiniz.
Model uyumluluğu şartları
ImageSegmenter
API, zorunlu TFLite Modeline sahip bir TFLite modeli bekler
Meta veri. Resim için meta veri oluşturma örneklerini inceleyin
TensorFlow Lite Meta Veri Yazıcısını kullanarak segmentleyiciler
API.
Giriş görüntüsü tensörü (kTfLiteUInt8/kTfLitefloat32)
[batch x height x width x channels]
boyutunda resim girişi.- toplu çıkarım desteklenmiyor (
batch
değerinin 1 olması gerekir). - yalnızca RGB girişleri desteklenir (
channels
değerinin 3 olması gerekir). - tür kTfLitefloat32 ise NormalizationOptions'ın giriş normalleştirmesi için meta verilere eklenir.
Çıkış maskeleri tensörü: (kTfLiteUInt8/kTfLitefloat32)
[batch x mask_height x mask_width x num_classes]
boyutundaki tensor, buradabatch
1 olmalıdır.mask_width
vemask_height
model tarafından üretilen segmentasyon maskelerinin boyutları venum_classes
, modelin desteklediği sınıfların sayısıdır.- isteğe bağlı (ancak önerilen) etiket haritaları şu şekilde eklenebilir:
Her biri için bir etiket içeren TENSOR_AXIS_LABELS türünde AssociatedFile-s
satırında görünür. Bu tür ilk AssociatedFile (varsa)
label
öğesini doldurmak için kullanılır alanına (C++ ürünündeclass_name
olarak adlandırılır) gönderilir.display_name
alanı, yerel ayarıImageSegmenterOptions
öğesinindisplay_names_locale
alanı kullanılan oluşturma zamanı ("en" varsayılan olarak kullanılır, ör. İngilizce). Bunların hiçbiri sonuçların yalnızcaindex
alanı doldurulacaktır.