Object detection and tracking
Stay organized with collections
Save and categorize content based on your preferences.

With ML Kit's on-device object detection and tracking API, you can detect
and track objects in an image or live camera feed.
Optionally, you can classify detected objects, either by using the coarse
classifier built into the API, or using your own custom image classification
model. See Using a custom TensorFlow Lite model for more
information.
Because object detection and tracking happens on the device, it works well as
the front end of the visual search pipeline. After you detect and filter
objects, you can pass them to a cloud backend, such as
Cloud Vision Product Search.
iOS
Android
Key capabilities
- Fast object detection and tracking
Detect objects and get their locations in the image. Track objects across
successive image frames.
- Optimized on-device model
The object detection and tracking model is optimized for mobile devices
and intended for use in real-time applications, even on lower-end
devices.
- Prominent object detection
Automatically determine the most prominent object in an image.
- Coarse classification
Classify objects into broad categories, which you can use to filter out
objects you're not interested in. The following categories are supported:
home goods, fashion goods, food, plants, and places.
- Classification with a custom model
Use your own custom image classification model to identify or filter specific
object categories. Make your custom model perform better by leaving out
background of the image.
Example results
Tracking the most prominent object across images
The example below shows the tracking data from three successive frames with the
default coarse classifier provided by ML Kit.
 |
Tracking ID |
0 |
Bounds |
(95, 45), (496, 45), (496, 240), (95, 240) |
Category |
PLACE |
Classification confidence |
0.9296875 |
|
 |
Tracking ID |
0 |
Bounds |
(84, 46), (478, 46), (478, 247), (84, 247) |
Category |
PLACE |
Classification confidence |
0.8710938 |
|
 |
Tracking ID |
0 |
Bounds |
(53, 45), (519, 45), (519, 240), (53, 240) |
Category |
PLACE |
Classification confidence |
0.8828125 |
|
Photo: Christian Ferrer [CC BY-SA 4.0]
Multiple objects in a static image
The example below shows the data for the four objects detected in the image with
the default coarse classifier provided by ML Kit.

Object 0 |
Bounds |
(1, 97), (332, 97), (332, 332), (1, 332) |
Category |
FASHION_GOOD |
Classification confidence |
0.95703125 |
Object 1 |
Bounds |
(186, 80), (337, 80), (337, 226), (186, 226) |
Category |
FASHION_GOOD |
Classification confidence |
0.84375 |
Object 2 |
Bounds |
(296, 80), (472, 80), (472, 388), (296, 388) |
Category |
FASHION_GOOD |
Classification confidence |
0.94921875 |
Object 3 |
Bounds |
(439, 83), (615, 83), (615, 306), (439, 306) |
Category |
FASHION_GOOD |
Classification confidence |
0.9375 |
Using a custom TensorFlow Lite model
The default coarse classifier is built for five categories, providing limited
information about the detected objects. You might need a more specialized
classifier model that covers a narrower domain of concepts in more detail;
for example, a model to distinguish between species of flowers or types of
food.
This API lets you tailor to a particular use case by by supporting custom image
classification models from a wide range of sources. Please refer to
Custom models with ML Kit to learn more. Custom models
can be bundled with your app or dynamically downloaded from the cloud using
Firebase Machine Learning's Model deployment service.
iOS
Android
If needed, object detection and tracking uses bilinear image scaling and
stretching to adjust the input image size and aspect ratio so that they fit the
requirements of the underlying model.
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2025-08-14 UTC.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-14 UTC."],[[["\u003cp\u003eML Kit's on-device API enables detection and tracking of objects within images or live camera feeds, working efficiently even on lower-end mobile devices.\u003c/p\u003e\n"],["\u003cp\u003eIt offers optional object classification using a built-in coarse classifier or your own custom TensorFlow Lite model for more specialized categorization.\u003c/p\u003e\n"],["\u003cp\u003eThe API can identify the most prominent object in an image and track it across frames, making it suitable for visual search applications.\u003c/p\u003e\n"],["\u003cp\u003eCustom models can be integrated to classify objects into specific categories, enhancing the functionality for tailored use cases.\u003c/p\u003e\n"],["\u003cp\u003eInput images are automatically preprocessed to fit model requirements, using bilinear scaling and stretching if necessary.\u003c/p\u003e\n"]]],["ML Kit's API enables on-device object detection and tracking in images or live feeds, optionally classifying them. It features fast detection, an optimized model for mobile, and prominent object identification. Objects can be classified into broad categories or with custom models. The API supports custom image classification models, including ones dynamically downloaded. Detected objects are tracked across frames, and the system adjusts input image size and aspect ratio as needed.\n"],null,["With ML Kit's on-device object detection and tracking API, you can detect\nand track objects in an image or live camera feed.\n\nOptionally, you can classify detected objects, either by using the coarse\nclassifier built into the API, or using your own custom image classification\nmodel. See [Using a custom TensorFlow Lite model](#custom-tflite) for more\ninformation.\n\nBecause object detection and tracking happens on the device, it works well as\nthe front end of the visual search pipeline. After you detect and filter\nobjects, you can pass them to a cloud backend, such as\n[Cloud Vision Product Search](https://cloud.google.com/vision/product-search/docs/).\n\n[iOS](/ml-kit/vision/object-detection/ios)\n[Android](/ml-kit/vision/object-detection/android)\n\nKey capabilities\n\n- **Fast object detection and tracking** Detect objects and get their locations in the image. Track objects across successive image frames.\n- **Optimized on-device model** The object detection and tracking model is optimized for mobile devices and intended for use in real-time applications, even on lower-end devices.\n- **Prominent object detection** Automatically determine the most prominent object in an image.\n- **Coarse classification** Classify objects into broad categories, which you can use to filter out objects you're not interested in. The following categories are supported: home goods, fashion goods, food, plants, and places.\n- **Classification with a custom model** Use your own custom image classification model to identify or filter specific object categories. Make your custom model perform better by leaving out background of the image.\n\nExample results\n\nTracking the most prominent object across images\n\nThe example below shows the tracking data from three successive frames with the\ndefault coarse classifier provided by ML Kit.\n\n|---|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| | |---------------------------|--------------------------------------------| | Tracking ID | 0 | | Bounds | (95, 45), (496, 45), (496, 240), (95, 240) | | Category | PLACE | | Classification confidence | 0.9296875 | |\n| | |---------------------------|--------------------------------------------| | Tracking ID | 0 | | Bounds | (84, 46), (478, 46), (478, 247), (84, 247) | | Category | PLACE | | Classification confidence | 0.8710938 | |\n| | |---------------------------|--------------------------------------------| | Tracking ID | 0 | | Bounds | (53, 45), (519, 45), (519, 240), (53, 240) | | Category | PLACE | | Classification confidence | 0.8828125 | |\n\nPhoto: Christian Ferrer \\[CC BY-SA 4.0\\]\n\nMultiple objects in a static image\n\nThe example below shows the data for the four objects detected in the image with\nthe default coarse classifier provided by ML Kit.\n\n| Object 0 ||\n|---------------------------|----------------------------------------------|\n| Bounds | (1, 97), (332, 97), (332, 332), (1, 332) |\n| Category | FASHION_GOOD |\n| Classification confidence | 0.95703125 |\n| Bounds | (186, 80), (337, 80), (337, 226), (186, 226) |\n| Category | FASHION_GOOD |\n| Classification confidence | 0.84375 |\n| Bounds | (296, 80), (472, 80), (472, 388), (296, 388) |\n| Category | FASHION_GOOD |\n| Classification confidence | 0.94921875 |\n| Bounds | (439, 83), (615, 83), (615, 306), (439, 306) |\n| Category | FASHION_GOOD |\n| Classification confidence | 0.9375 |\n\nUsing a custom TensorFlow Lite model\n\nThe default coarse classifier is built for five categories, providing limited\ninformation about the detected objects. You might need a more specialized\nclassifier model that covers a narrower domain of concepts in more detail;\nfor example, a model to distinguish between species of flowers or types of\nfood.\n\nThis API lets you tailor to a particular use case by by supporting custom image\nclassification models from a wide range of sources. Please refer to\n[Custom models with ML Kit](/ml-kit/custom-models) to learn more. Custom models\ncan be bundled with your app or dynamically downloaded from the cloud using\nFirebase Machine Learning's Model deployment service.\n\n[iOS](/ml-kit/vision/object-detection/custom-models/ios)\n[Android](/ml-kit/vision/object-detection/custom-models/android)\n\nInput image preprocessing\n\nIf needed, object detection and tracking uses bilinear image scaling and\nstretching to adjust the input image size and aspect ratio so that they fit the\nrequirements of the underlying model."]]