MediaPipe 互動式圖像分割工具工作接收圖片中的位置,然後估算 然後將該物件的區隔傳回 映像檔資料以下指示將說明如何將互動式圖片區隔工具與 Android 應用程式。如需上述操作說明中的程式碼範例,請參閱 GitHub。 進一步瞭解功能、模型和設定選項 請參閱總覽。
程式碼範例
MediaPipe 工作程式碼範例是一種互動式圖片區隔器的簡易實作方式 App Engine 應用程式 這個範例適用於從裝置圖片庫中選取的圖片。
您可以將應用程式做為起點,當做 Android 應用程式的起點,也可以參照應用程式 做出決定互動式圖片區隔範例程式碼 GitHub。
下載程式碼
以下說明如何建立範例的本機副本 git 指令列工具編寫程式碼。
如要下載範例程式碼,請按照下列步驟操作:
- 使用下列指令複製 git 存放區:
git clone https://github.com/google-ai-edge/mediapipe-samples
- 您也可以選擇設定 Git 執行個體,以使用稀疏結帳功能。
所以您只擁有互動式圖片區隔應用程式範例的檔案:
cd mediapipe git sparse-checkout init --cone git sparse-checkout set examples/interactive_segmentation/android
建立範例程式碼的本機版本後,您可以匯入專案 然後執行應用程式如需操作說明,請參閱 Android 設定指南。
重要元件
下列檔案包含這張圖片的重要程式碼 區隔範例應用:
- InteractiveSegmentationHelper.kt - 初始化互動式圖像分割工具工作,並處理模型和委派 。
- OverlayView.kt - 處理區隔結果並設定格式。
設定
本節說明設定開發環境的重要步驟,以及 程式碼專案才能使用互動式影像分割器。如需 設定開發環境以使用 MediaPipe 工作,包括: 平台版本需求,請參閱 Android 設定指南。
依附元件
互動式圖像區隔工具使用 com.google.mediapipe:tasks-vision
程式庫。新增此項目
build.gradle
檔案的依附元件
Android 應用程式開發專案。使用下列指令匯入必要的依附元件
下列程式碼:
dependencies {
...
implementation 'com.google.mediapipe:tasks-vision:latest.release'
}
型號
MediaPipe 互動式圖像區隔工具工作需要經過訓練且與此模型相容的模型。 工作。如要進一步瞭解互動式圖像區隔工具可用的已訓練模型,請參閱: 工作總覽的「模型」一節。
選取並下載模型,然後將模型儲存在專案目錄中:
<dev-project-root>/src/main/assets
使用 BaseOptions.Builder.setModelAssetPath()
方法指定路徑
以便訓練模型此方法會在
專區。
在互動式影像分割器中
範例程式碼
模型定義於 InteractiveSegmenterHelper.kt
setupInteractiveSegmenter()
函式中的類別。
建立工作
您可以使用 createFromOptions
函式建立工作。
createFromOptions
函式接受設定選項,包括
遮蓋輸出類型進一步瞭解設定
選項,請參閱設定總覽。
InteractiveSegmenterOptions options = InteractiveSegmenterOptions.builder() .setBaseOptions( BaseOptions.builder().setModelAssetPath("model.tflite").build()) .setOutputCategoryMask(true) .setOutputConfidenceMasks(false) .setResultListener((result, inputImage) -> { // Process the segmentation result here. }) .setErrorListener(exception -> { // Process the segmentation errors here. }) .build(); interactivesegmenter = InteractiveSegmenter.createFromOptions(context, options);
outputCategoryMask
True
,則輸出結果會包含區隔遮罩
視為 uint8 圖片,其中每個像素值都表示像素是否屬於
位於感興趣的區域。True, False
}False
outputConfidenceMasks
True
,則輸出結果會包含區隔遮罩
視為浮點值圖片,其中各浮點值代表信心值
表示該像素屬於物件的一部分。True, False
}True
displayNamesLocale
en
:
英語。您可以在自訂模型的中繼資料中加入經本地化的標籤
使用 TensorFlow Lite Metadata Writer API
errorListener
準備資料
互動式圖像分割工具會使用圖片,工作則處理資料輸入
進行預先處理作業,包括調整大小、旋轉及值正規化。
您必須將輸入圖片轉換為
com.google.mediapipe.framework.image.MPImage
物件,然後再將該物件傳送至
工作。
import com.google.mediapipe.framework.image.BitmapImageBuilder; import com.google.mediapipe.framework.image.MPImage; // Load an image on the user’s device as a Bitmap object using BitmapFactory. // Convert an Android’s Bitmap object to a MediaPipe’s Image object. MPImage mpImage = new BitmapImageBuilder(bitmap).build();
RegionOfInterest roi = RegionOfInterest.create( NormalizedKeypoint.create( normX * it.width, normY * it.height ) ); ImageSegmenterResult segmenterResult = interactivesegmenter.segment(image, roi);