Merge pull request #4864 from priankakariatyml:ios-image-segmenter-documentation-updates
PiperOrigin-RevId: 574966608
This commit is contained in:
commit
1c7ea02b0e
|
@ -33,15 +33,15 @@ typedef NS_ENUM(NSUInteger, MPPMaskDataType) {
|
||||||
* Masks are stored as `UInt8 *` or `float *` objects.
|
* Masks are stored as `UInt8 *` or `float *` objects.
|
||||||
* Every mask has an underlying type which can be accessed using `dataType`. You can access the
|
* Every mask has an underlying type which can be accessed using `dataType`. You can access the
|
||||||
* mask as any other type using the appropriate properties. For example, if the underlying type is
|
* mask as any other type using the appropriate properties. For example, if the underlying type is
|
||||||
* `MPPMaskDataTypeUInt8`, in addition to accessing the mask using `uint8Data`, you can access
|
* `uInt8`, in addition to accessing the mask using `uint8Data`, you can access `float32Data` to get
|
||||||
* `float32Data` to get the 32 bit float data (with values ranging from 0.0 to 1.0). The first
|
* the 32 bit float data (with values ranging from 0.0 to 1.0). The first time you access the data
|
||||||
* time you access the data as a type different from the underlying type, an expensive type
|
* as a type different from the underlying type, an expensive type conversion is performed.
|
||||||
* conversion is performed. Subsequent accesses return a pointer to the memory location for the same
|
* Subsequent accesses return a pointer to the memory location for the same type converted array. As
|
||||||
* type converted array. As type conversions can be expensive, it is recommended to limit the
|
* type conversions can be expensive, it is recommended to limit the accesses to data of types
|
||||||
* accesses to data of types different from the underlying type.
|
* different from the underlying type.
|
||||||
*
|
*
|
||||||
* Masks that are returned from a MediaPipe Tasks are owned by by the underlying C++ Task. If you
|
* Masks that are returned from a MediaPipe Tasks are owned by by the underlying C++ Task. If you
|
||||||
* need to extend the lifetime of these objects, you can invoke the `[MPPMask copy:]` method.
|
* need to extend the lifetime of these objects, you can invoke the `copy()` method.
|
||||||
*/
|
*/
|
||||||
NS_SWIFT_NAME(Mask)
|
NS_SWIFT_NAME(Mask)
|
||||||
@interface MPPMask : NSObject <NSCopying>
|
@interface MPPMask : NSObject <NSCopying>
|
||||||
|
@ -68,19 +68,18 @@ NS_SWIFT_NAME(Mask)
|
||||||
@property(nonatomic, readonly, assign) const float *float32Data;
|
@property(nonatomic, readonly, assign) const float *float32Data;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initializes an `MPPMask` object of type `MPPMaskDataTypeUInt8` with the given `UInt8*` data,
|
* Initializes an `Mask` object of type `uInt8` with the given `UInt8*` data, width and height.
|
||||||
* width and height.
|
|
||||||
*
|
*
|
||||||
* If `shouldCopy` is set to `YES`, the newly created `MPPMask` stores a reference to a deep copied
|
* If `shouldCopy` is set to `true`, the newly created `Mask` stores a reference to a deep copied
|
||||||
* `uint8Data`. Since deep copies are expensive, it is recommended to not set `shouldCopy` unless
|
* `uint8Data`. Since deep copies are expensive, it is recommended to not set `shouldCopy` unless
|
||||||
* the `MPPMask` must outlive the passed in `uint8Data`.
|
* the `Mask` must outlive the passed in `uint8Data`.
|
||||||
*
|
*
|
||||||
* @param uint8Data A pointer to the memory location of the `UInt8` data array.
|
* @param uint8Data A pointer to the memory location of the `UInt8` data array.
|
||||||
* @param width The width of the mask.
|
* @param width The width of the mask.
|
||||||
* @param height The height of the mask.
|
* @param height The height of the mask.
|
||||||
* @param shouldCopy The height of the mask.
|
* @param shouldCopy The height of the mask.
|
||||||
*
|
*
|
||||||
* @return A new `MPPMask` instance with the given `UInt8*` data, width and height.
|
* @return A new `Mask` instance with the given `UInt8*` data, width and height.
|
||||||
*/
|
*/
|
||||||
- (nullable instancetype)initWithUInt8Data:(const UInt8 *)uint8Data
|
- (nullable instancetype)initWithUInt8Data:(const UInt8 *)uint8Data
|
||||||
width:(NSInteger)width
|
width:(NSInteger)width
|
||||||
|
@ -88,18 +87,17 @@ NS_SWIFT_NAME(Mask)
|
||||||
shouldCopy:(BOOL)shouldCopy NS_DESIGNATED_INITIALIZER;
|
shouldCopy:(BOOL)shouldCopy NS_DESIGNATED_INITIALIZER;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initializes an `MPPMask` object of type `MPPMaskDataTypeFloat32` with the given `float*` data,
|
* Initializes an `Mask` object of type `float32` with the given `float*` data, width and height.
|
||||||
* width and height.
|
|
||||||
*
|
*
|
||||||
* If `shouldCopy` is set to `YES`, the newly created `MPPMask` stores a reference to a deep copied
|
* If `shouldCopy` is set to `true`, the newly created `Mask` stores a reference to a deep copied
|
||||||
* `float32Data`. Since deep copies are expensive, it is recommended to not set `shouldCopy` unless
|
* `float32Data`. Since deep copies are expensive, it is recommended to not set `shouldCopy` unless
|
||||||
* the `MPPMask` must outlive the passed in `float32Data`.
|
* the `Mask` must outlive the passed in `float32Data`.
|
||||||
*
|
*
|
||||||
* @param float32Data A pointer to the memory location of the `float` data array.
|
* @param float32Data A pointer to the memory location of the `float` data array.
|
||||||
* @param width The width of the mask.
|
* @param width The width of the mask.
|
||||||
* @param height The height of the mask.
|
* @param height The height of the mask.
|
||||||
*
|
*
|
||||||
* @return A new `MPPMask` instance with the given `float*` data, width and height.
|
* @return A new `Mask` instance with the given `float*` data, width and height.
|
||||||
*/
|
*/
|
||||||
- (nullable instancetype)initWithFloat32Data:(const float *)float32Data
|
- (nullable instancetype)initWithFloat32Data:(const float *)float32Data
|
||||||
width:(NSInteger)width
|
width:(NSInteger)width
|
||||||
|
|
|
@ -30,7 +30,6 @@
|
||||||
width:(NSInteger)width
|
width:(NSInteger)width
|
||||||
height:(NSInteger)height
|
height:(NSInteger)height
|
||||||
shouldCopy:(BOOL)shouldCopy {
|
shouldCopy:(BOOL)shouldCopy {
|
||||||
|
|
||||||
self = [super init];
|
self = [super init];
|
||||||
if (self) {
|
if (self) {
|
||||||
_width = width;
|
_width = width;
|
||||||
|
|
|
@ -23,28 +23,28 @@ NS_ASSUME_NONNULL_BEGIN
|
||||||
@class MPPImageSegmenter;
|
@class MPPImageSegmenter;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This protocol defines an interface for the delegates of `MPPImageSegmenter` object to receive
|
* This protocol defines an interface for the delegates of `ImageSegmenter` object to receive
|
||||||
* results of performing asynchronous segmentation on images (i.e, when `runningMode` =
|
* results of performing asynchronous segmentation on images (i.e, when `runningMode` =
|
||||||
* `MPPRunningModeLiveStream`).
|
* `liveStream`).
|
||||||
*
|
*
|
||||||
* The delegate of `MPPImageSegmenter` must adopt `MPPImageSegmenterLiveStreamDelegate` protocol.
|
* The delegate of `ImageSegmenter` must adopt `ImageSegmenterLiveStreamDelegate` protocol.
|
||||||
* The methods in this protocol are optional.
|
* The methods in this protocol are optional.
|
||||||
*/
|
*/
|
||||||
NS_SWIFT_NAME(ObjectDetectorLiveStreamDelegate)
|
NS_SWIFT_NAME(ImageSegmenterLiveStreamDelegate)
|
||||||
@protocol MPPImageSegmenterLiveStreamDelegate <NSObject>
|
@protocol MPPImageSegmenterLiveStreamDelegate <NSObject>
|
||||||
|
|
||||||
@optional
|
@optional
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This method notifies a delegate that the results of asynchronous segmentation of
|
* This method notifies a delegate that the results of asynchronous segmentation of
|
||||||
* an image submitted to the `MPPImageSegmenter` is available.
|
* an image submitted to the `ImageSegmenter` is available.
|
||||||
*
|
*
|
||||||
* This method is called on a private serial dispatch queue created by the `MPPImageSegmenter`
|
* This method is called on a private serial dispatch queue created by the `ImageSegmenter`
|
||||||
* for performing the asynchronous delegates calls.
|
* for performing the asynchronous delegates calls.
|
||||||
*
|
*
|
||||||
* @param imageSegmenter The image segmenter which performed the segmentation. This is useful to
|
* @param imageSegmenter The image segmenter which performed the segmentation. This is useful to
|
||||||
* test equality when there are multiple instances of `MPPImageSegmenter`.
|
* test equality when there are multiple instances of `ImageSegmenter`.
|
||||||
* @param result The `MPPImageSegmenterResult` object that contains a list of category or confidence
|
* @param result The `ImageSegmenterResult` object that contains a list of category or confidence
|
||||||
* masks and optional quality scores.
|
* masks and optional quality scores.
|
||||||
* @param timestampInMilliseconds The timestamp (in milliseconds) which indicates when the input
|
* @param timestampInMilliseconds The timestamp (in milliseconds) which indicates when the input
|
||||||
* image was sent to the image segmenter.
|
* image was sent to the image segmenter.
|
||||||
|
@ -58,26 +58,26 @@ NS_SWIFT_NAME(ObjectDetectorLiveStreamDelegate)
|
||||||
NS_SWIFT_NAME(imageSegmenter(_:didFinishSegmentation:timestampInMilliseconds:error:));
|
NS_SWIFT_NAME(imageSegmenter(_:didFinishSegmentation:timestampInMilliseconds:error:));
|
||||||
@end
|
@end
|
||||||
|
|
||||||
/** Options for setting up a `MPPImageSegmenter`. */
|
/** Options for setting up a `ImageSegmenter`. */
|
||||||
NS_SWIFT_NAME(ImageSegmenterOptions)
|
NS_SWIFT_NAME(ImageSegmenterOptions)
|
||||||
@interface MPPImageSegmenterOptions : MPPTaskOptions <NSCopying>
|
@interface MPPImageSegmenterOptions : MPPTaskOptions <NSCopying>
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Running mode of the image segmenter task. Defaults to `MPPRunningModeImage`.
|
* Running mode of the image segmenter task. Defaults to `image`.
|
||||||
* `MPPImageSegmenter` can be created with one of the following running modes:
|
* `ImageSegmenter` can be created with one of the following running modes:
|
||||||
* 1. `MPPRunningModeImage`: The mode for performing segmentation on single image inputs.
|
* 1. `image`: The mode for performing segmentation on single image inputs.
|
||||||
* 2. `MPPRunningModeVideo`: The mode for performing segmentation on the decoded frames of a
|
* 2. `video`: The mode for performing segmentation on the decoded frames of a
|
||||||
* video.
|
* video.
|
||||||
* 3. `MPPRunningModeLiveStream`: The mode for performing segmentation on a live stream of
|
* 3. `liveStream`: The mode for performing segmentation on a live stream of
|
||||||
* input data, such as from the camera.
|
* input data, such as from the camera.
|
||||||
*/
|
*/
|
||||||
@property(nonatomic) MPPRunningMode runningMode;
|
@property(nonatomic) MPPRunningMode runningMode;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* An object that confirms to `MPPImageSegmenterLiveStreamDelegate` protocol. This object must
|
* An object that confirms to `ImageSegmenterLiveStreamDelegate` protocol. This object must
|
||||||
* implement `imageSegmenter:didFinishSegmentationWithResult:timestampInMilliseconds:error:` to
|
* implement `imageSegmenter(_:didFinishSegmentationWithResult:timestampInMilliseconds:error:)` to
|
||||||
* receive the results of performing asynchronous segmentation on images (i.e, when `runningMode` =
|
* receive the results of performing asynchronous segmentation on images (i.e, when `runningMode` =
|
||||||
* `MPPRunningModeLiveStream`).
|
* `liveStream`).
|
||||||
*/
|
*/
|
||||||
@property(nonatomic, weak, nullable) id<MPPImageSegmenterLiveStreamDelegate>
|
@property(nonatomic, weak, nullable) id<MPPImageSegmenterLiveStreamDelegate>
|
||||||
imageSegmenterLiveStreamDelegate;
|
imageSegmenterLiveStreamDelegate;
|
||||||
|
|
|
@ -18,22 +18,22 @@
|
||||||
|
|
||||||
NS_ASSUME_NONNULL_BEGIN
|
NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
||||||
/** Represents the segmentation results generated by `MPPImageSegmenter`. */
|
/** Represents the segmentation results generated by `ImageSegmenter`. */
|
||||||
NS_SWIFT_NAME(ImageSegmenterResult)
|
NS_SWIFT_NAME(ImageSegmenterResult)
|
||||||
@interface MPPImageSegmenterResult : MPPTaskResult
|
@interface MPPImageSegmenterResult : MPPTaskResult
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* An optional array of `MPPMask` objects. Each `MPPMask` in the array holds a 32 bit float array of
|
* An optional array of `Mask` objects. Each `Mask` in the array holds a 32 bit float array of size
|
||||||
* size `image width` * `image height` which represents the confidence mask for each category. Each
|
* `image width` * `image height` which represents the confidence mask for each category. Each
|
||||||
* element of the float array represents the confidence with which the model predicted that the
|
* element of the float array represents the confidence with which the model predicted that the
|
||||||
* corresponding pixel belongs to the category that the mask represents, usually in the range [0,1].
|
* corresponding pixel belongs to the category that the mask represents, usually in the range [0,1].
|
||||||
*/
|
*/
|
||||||
@property(nonatomic, readonly, nullable) NSArray<MPPMask *> *confidenceMasks;
|
@property(nonatomic, readonly, nullable) NSArray<MPPMask *> *confidenceMasks;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* An optional `MPPMask` that holds a`UInt8` array of size `image width` * `image height`. Each
|
* An optional `Mask` that holds a`UInt8` array of size `image width` * `image height`. Each element
|
||||||
* element of this array represents the class to which the pixel in the original image was predicted
|
* of this array represents the class to which the pixel in the original image was predicted to
|
||||||
* to belong to.
|
* belong to.
|
||||||
*/
|
*/
|
||||||
@property(nonatomic, readonly, nullable) MPPMask *categoryMask;
|
@property(nonatomic, readonly, nullable) MPPMask *categoryMask;
|
||||||
|
|
||||||
|
@ -45,17 +45,17 @@ NS_SWIFT_NAME(ImageSegmenterResult)
|
||||||
@property(nonatomic, readonly, nullable) NSArray<NSNumber *> *qualityScores;
|
@property(nonatomic, readonly, nullable) NSArray<NSNumber *> *qualityScores;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initializes a new `MPPImageSegmenterResult` with the given array of confidence masks, category
|
* Initializes a new `ImageSegmenterResult` with the given array of confidence masks, category mask,
|
||||||
* mask, quality scores and timestamp (in milliseconds).
|
* quality scores and timestamp (in milliseconds).
|
||||||
*
|
*
|
||||||
* @param confidenceMasks An optional array of `MPPMask` objects. Each `MPPMask` in the array must
|
* @param confidenceMasks An optional array of `Mask` objects. Each `Mask` in the array must
|
||||||
* be of type `MPPMaskDataTypeFloat32`.
|
* be of type `float32`.
|
||||||
* @param categoryMask An optional `MPMask` object of type `MPPMaskDataTypeUInt8`.
|
* @param categoryMask An optional `Mask` object of type `uInt8`.
|
||||||
* @param qualityScores The quality scores of the result masks of type NSArray<NSNumber *> *. Each
|
* @param qualityScores The quality scores of the result masks of type NSArray<NSNumber *> *. Each
|
||||||
* `NSNumber` in the array holds a `float`.
|
* `NSNumber` in the array holds a `float`.
|
||||||
* @param timestampInMilliseconds The timestamp (in milliseconds) for this result.
|
* @param timestampInMilliseconds The timestamp (in milliseconds) for this result.
|
||||||
*
|
*
|
||||||
* @return An instance of `MPPImageSegmenterResult` initialized with the given array of confidence
|
* @return An instance of `ImageSegmenterResult` initialized with the given array of confidence
|
||||||
* masks, category mask, quality scores and timestamp (in milliseconds).
|
* masks, category mask, quality scores and timestamp (in milliseconds).
|
||||||
*/
|
*/
|
||||||
- (instancetype)initWithConfidenceMasks:(nullable NSArray<MPPMask *> *)confidenceMasks
|
- (instancetype)initWithConfidenceMasks:(nullable NSArray<MPPMask *> *)confidenceMasks
|
||||||
|
|
Loading…
Reference in New Issue
Block a user