The following APIs will enable you identify real world objects (chairs, desks, etc) in images. These objects are referred to as "labels" from images.
## Set up your backend
Run `amplify add predictions`, then use the following answers:
```console
? Please select from one of the categories below (Use arrow keys)
`Identify`
? What would you like to identify? (Use arrow keys)
`Identify Labels`
? Provide a friendly name for your resource
`labelObjects`
? Would you like use the default configuration? (Use arrow keys)
`Default Configuration`
? Who should have access? (Use arrow keys)
`Auth and Guest users`
```
The Advanced Configuration will allow you to select moderation for unsafe content or all of the identified labels. Default uses both.
Run `amplify push` to create the resources in the cloud.
## Working with the API
### Label objects in an image
You can identify real world objects such as chairs, desks, etc. which are referred to as “labels” by passing in `LabelType.LABELS` as the identify action. For example:
```java
public void detectLabels(Bitmap image) {
Amplify.Predictions.identify(
LabelType.LABELS,
image,
result -> {
IdentifyLabelsResult identifyResult = (IdentifyLabelsResult) result;
Label label = identifyResult.getLabels().get(0);
Log.i("MyAmplifyApp", label.getName());
},
error -> Log.e("MyAmplifyApp", "Label detection failed", error)
);
}
```
```kotlin
fun detectLabels(image: Bitmap) {
Amplify.Predictions.identify(LabelType.LABELS, image,
{ result ->
val identifyResult = result as IdentifyLabelsResult
val label = identifyResult.labels.firstOrNull()
Log.i("MyAmplifyApp", "${label?.name}")
},
{ Log.e("MyAmplifyApp", "Label detection failed", it) }
)
}
```
```kotlin
suspend fun detectLabels(image: Bitmap) {
try {
val result = Amplify.Predictions.identify(LABELS, image)
val identifyResult = result as IdentifyLabelsResult
Log.i("MyAmplifyApp", "${identifyResult.labels[0].name}")
} catch (error: PredictionsException) {
Log.e("MyAmplifyApp", "Label detection failed", error)
}
}
```
```java
public void detectLabels(Bitmap image) {
RxAmplify.Predictions.identify(LabelType.LABELS, image)
.subscribe(
result -> {
IdentifyLabelsResult identifyResult = (IdentifyLabelsResult) result;
Label label = identifyResult.getLabels().get(0);
Log.i("MyAmplifyApp", label.getName());
},
error -> Log.e("MyAmplifyApp", "Label detection failed", error)
);
}
```
### Label moderation tag in an image
You can also detect whether identified content inside the image is safe by enabling moderation by passing in `LabelType.MODERATION_LABELS`.
```java
public void detectLabels(Bitmap image) {
Amplify.Predictions.identify(
LabelType.MODERATION_LABELS,
image,
result -> {
IdentifyLabelsResult identifyResult = (IdentifyLabelsResult) result;
Log.i("MyAmplifyApp", Boolean.toString(identifyResult.isUnsafeContent()));
},
error -> Log.e("MyAmplifyApp", "Identify failed", error)
);
}
```
```kotlin
fun detectLabels(image: Bitmap) {
Amplify.Predictions.identify(LabelType.MODERATION_LABELS, image,
{ result ->
val identifyResult = result as IdentifyLabelsResult
Log.i("MyAmplifyApp", "${identifyResult.isUnsafeContent}")
},
{ Log.e("MyAmplifyApp", "Identify failed", it) }
)
}
```
```kotlin
suspend fun detectLabels(image: Bitmap) {
try {
val result = Amplify.Predictions.identify(MODERATION_LABELS, image)
val identifyResult = result as IdentifyLabelsResult
Log.i("MyAmplifyApp", identifyResult.isUnsafeContent)
} catch (error: PredictionsException) {
Log.e("MyAmplifyApp", "Identify failed", error)
}
}
```