forked from tensorflow/models
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add Tensorflow Object Detection API. (tensorflow#1561)
For details see our paper: "Speed/accuracy trade-offs for modern convolutional object detectors." Huang J, Rathod V, Sun C, Zhu M, Korattikara A, Fathi A, Fischer I, Wojna Z, Song Y, Guadarrama S, Murphy K, CVPR 2017 https://arxiv.org/abs/1611.10012
- Loading branch information
1 parent
60c3ed2
commit a4944a5
Showing
224 changed files
with
40,616 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,178 @@ | ||
# Tensorflow Object Detection API: main runnables. | ||
|
||
package( | ||
default_visibility = ["//visibility:public"], | ||
) | ||
|
||
licenses(["notice"]) | ||
|
||
# Apache 2.0 | ||
|
||
py_binary( | ||
name = "train", | ||
srcs = [ | ||
"train.py", | ||
], | ||
deps = [ | ||
":trainer", | ||
"//tensorflow", | ||
"//tensorflow_models/object_detection/builders:input_reader_builder", | ||
"//tensorflow_models/object_detection/builders:model_builder", | ||
"//tensorflow_models/object_detection/protos:input_reader_py_pb2", | ||
"//tensorflow_models/object_detection/protos:model_py_pb2", | ||
"//tensorflow_models/object_detection/protos:pipeline_py_pb2", | ||
"//tensorflow_models/object_detection/protos:train_py_pb2", | ||
], | ||
) | ||
|
||
py_library( | ||
name = "trainer", | ||
srcs = ["trainer.py"], | ||
deps = [ | ||
"//tensorflow", | ||
"//tensorflow_models/object_detection/builders:optimizer_builder", | ||
"//tensorflow_models/object_detection/builders:preprocessor_builder", | ||
"//tensorflow_models/object_detection/core:batcher", | ||
"//tensorflow_models/object_detection/core:standard_fields", | ||
"//tensorflow_models/object_detection/utils:ops", | ||
"//tensorflow_models/object_detection/utils:variables_helper", | ||
"//tensorflow_models/slim:model_deploy", | ||
], | ||
) | ||
|
||
py_test( | ||
name = "trainer_test", | ||
srcs = ["trainer_test.py"], | ||
deps = [ | ||
":trainer", | ||
"//tensorflow", | ||
"//tensorflow_models/object_detection/core:losses", | ||
"//tensorflow_models/object_detection/core:model", | ||
"//tensorflow_models/object_detection/core:standard_fields", | ||
"//tensorflow_models/object_detection/protos:train_py_pb2", | ||
], | ||
) | ||
|
||
py_library( | ||
name = "eval_util", | ||
srcs = [ | ||
"eval_util.py", | ||
], | ||
deps = [ | ||
"//tensorflow", | ||
"//tensorflow_models/object_detection/utils:label_map_util", | ||
"//tensorflow_models/object_detection/utils:object_detection_evaluation", | ||
"//tensorflow_models/object_detection/utils:visualization_utils", | ||
], | ||
) | ||
|
||
py_library( | ||
name = "evaluator", | ||
srcs = ["evaluator.py"], | ||
deps = [ | ||
"//tensorflow", | ||
"//tensorflow_models/object_detection:eval_util", | ||
"//tensorflow_models/object_detection/core:box_list", | ||
"//tensorflow_models/object_detection/core:box_list_ops", | ||
"//tensorflow_models/object_detection/core:prefetcher", | ||
"//tensorflow_models/object_detection/core:standard_fields", | ||
"//tensorflow_models/object_detection/protos:eval_py_pb2", | ||
], | ||
) | ||
|
||
py_binary( | ||
name = "eval", | ||
srcs = [ | ||
"eval.py", | ||
], | ||
deps = [ | ||
":evaluator", | ||
"//tensorflow", | ||
"//tensorflow_models/object_detection/builders:input_reader_builder", | ||
"//tensorflow_models/object_detection/builders:model_builder", | ||
"//tensorflow_models/object_detection/protos:eval_py_pb2", | ||
"//tensorflow_models/object_detection/protos:input_reader_py_pb2", | ||
"//tensorflow_models/object_detection/protos:model_py_pb2", | ||
"//tensorflow_models/object_detection/protos:pipeline_py_pb2", | ||
"//tensorflow_models/object_detection/utils:label_map_util", | ||
], | ||
) | ||
|
||
py_library( | ||
name = "exporter", | ||
srcs = [ | ||
"exporter.py", | ||
], | ||
deps = [ | ||
"//tensorflow", | ||
"//tensorflow/python/tools:freeze_graph_lib", | ||
"//tensorflow_models/object_detection/builders:model_builder", | ||
"//tensorflow_models/object_detection/core:standard_fields", | ||
"//tensorflow_models/object_detection/data_decoders:tf_example_decoder", | ||
], | ||
) | ||
|
||
py_test( | ||
name = "exporter_test", | ||
srcs = [ | ||
"exporter_test.py", | ||
], | ||
deps = [ | ||
":exporter", | ||
"//tensorflow", | ||
"//tensorflow_models/object_detection/builders:model_builder", | ||
"//tensorflow_models/object_detection/core:model", | ||
"//tensorflow_models/object_detection/protos:pipeline_py_pb2", | ||
], | ||
) | ||
|
||
py_binary( | ||
name = "export_inference_graph", | ||
srcs = [ | ||
"export_inference_graph.py", | ||
], | ||
deps = [ | ||
":exporter", | ||
"//tensorflow", | ||
"//tensorflow_models/object_detection/protos:pipeline_py_pb2", | ||
], | ||
) | ||
|
||
py_binary( | ||
name = "create_pascal_tf_record", | ||
srcs = [ | ||
"create_pascal_tf_record.py", | ||
], | ||
deps = [ | ||
"//third_party/py/PIL:pil", | ||
"//third_party/py/lxml", | ||
"//tensorflow", | ||
"//tensorflow_models/object_detection/utils:dataset_util", | ||
"//tensorflow_models/object_detection/utils:label_map_util", | ||
], | ||
) | ||
|
||
py_test( | ||
name = "create_pascal_tf_record_test", | ||
srcs = [ | ||
"create_pascal_tf_record_test.py", | ||
], | ||
deps = [ | ||
":create_pascal_tf_record", | ||
"//tensorflow", | ||
], | ||
) | ||
|
||
py_binary( | ||
name = "create_pet_tf_record", | ||
srcs = [ | ||
"create_pet_tf_record.py", | ||
], | ||
deps = [ | ||
"//third_party/py/PIL:pil", | ||
"//third_party/py/lxml", | ||
"//tensorflow", | ||
"//tensorflow_models/object_detection/utils:dataset_util", | ||
"//tensorflow_models/object_detection/utils:label_map_util", | ||
], | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
# Contributing to the Tensorflow Object Detection API | ||
|
||
Patches to Tensorflow Object Detection API are welcome! | ||
|
||
We require contributors to fill out either the individual or corporate | ||
Contributor License Agreement (CLA). | ||
|
||
* If you are an individual writing original source code and you're sure you own the intellectual property, then you'll need to sign an [individual CLA](http://code.google.com/legal/individual-cla-v1.0.html). | ||
* If you work for a company that wants to allow you to contribute your work, then you'll need to sign a [corporate CLA](http://code.google.com/legal/corporate-cla-v1.0.html). | ||
|
||
Please follow the | ||
[Tensorflow contributing guidelines](https://github.com/tensorflow/tensorflow/blob/master/CONTRIBUTING.md) | ||
when submitting pull requests. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,81 @@ | ||
# Tensorflow Object Detection API | ||
Creating accurate machine learning models capable of localizing and identifying | ||
multiple objects in a single image remains a core challenge in computer vision. | ||
The TensorFlow Object Detection API is an open source framework built on top of | ||
TensorFlow that makes it easy to construct, train and deploy object detection | ||
models. At Google we’ve certainly found this codebase to be useful for our | ||
computer vision needs, and we hope that you will as well. | ||
<p align="center"> | ||
<img src="g3doc/img/kites_detections_output.jpg" width=676 height=450> | ||
</p> | ||
Contributions to the codebase are welcome and we would love to hear back from | ||
you if you find this API useful. Finally if you use the Tensorflow Object | ||
Detection API for a research publication, please consider citing: | ||
|
||
``` | ||
"Speed/accuracy trade-offs for modern convolutional object detectors." | ||
Huang J, Rathod V, Sun C, Zhu M, Korattikara A, Fathi A, Fischer I, Wojna Z, | ||
Song Y, Guadarrama S, Murphy K, CVPR 2017 | ||
``` | ||
\[[link](https://arxiv.org/abs/1611.10012)\]\[[bibtex]( | ||
https://scholar.googleusercontent.com/scholar.bib?q=info:l291WsrB-hQJ:scholar.google.com/&output=citation&scisig=AAGBfm0AAAAAWUIIlnPZ_L9jxvPwcC49kDlELtaeIyU-&scisf=4&ct=citation&cd=-1&hl=en&scfhb=1)\] | ||
|
||
## Maintainers | ||
|
||
* Jonathan Huang, github: [jch1](https://github.com/jch1) | ||
* Vivek Rathod, github: [tombstone](https://github.com/tombstone) | ||
* Derek Chow, github: [derekjchow](https://github.com/derekjchow) | ||
* Chen Sun, github: [jesu9](https://github.com/jesu9) | ||
* Menglong Zhu, github: [dreamdragon](https://github.com/dreamdragon) | ||
|
||
|
||
## Table of contents | ||
|
||
Quick Start: | ||
* <a href='object_detection_tutorial.ipynb'> | ||
Quick Start: Jupyter notebook for off-the-shelf inference</a><br> | ||
* <a href="g3doc/running_pets.md">Quick Start: Training on a pet detector</a><br> | ||
|
||
Setup: | ||
* <a href='g3doc/installation.md'>Installation</a><br> | ||
* <a href='g3doc/configuring_jobs.md'> | ||
Configuring an object detection pipeline</a><br> | ||
* <a href='g3doc/preparing_inputs.md'>Preparing inputs</a><br> | ||
|
||
Running: | ||
* <a href='g3doc/running_locally.md'>Running locally</a><br> | ||
* <a href='g3doc/running_on_cloud.md'>Running on the cloud</a><br> | ||
|
||
Extras: | ||
* <a href='g3doc/detection_model_zoo.md'>Tensorflow detection model zoo</a><br> | ||
* <a href='g3doc/exporting_models.md'> | ||
Exporting a trained model for inference</a><br> | ||
* <a href='g3doc/defining_your_own_model.md'> | ||
Defining your own model architecture</a><br> | ||
|
||
## Release information | ||
|
||
### June 15, 2017 | ||
|
||
In addition to our base Tensorflow detection model definitions, this | ||
release includes: | ||
|
||
* A selection of trainable detection models, including: | ||
* Single Shot Multibox Detector (SSD) with MobileNet, | ||
* SSD with Inception V2, | ||
* Region-Based Fully Convolutional Networks (R-FCN) with Resnet 101, | ||
* Faster RCNN with Resnet 101, | ||
* Faster RCNN with Inception Resnet v2 | ||
* Mask R-CNN with Resnet 101. | ||
* Frozen weights (trained on the COCO dataset) for each of the above models to | ||
be used for out-of-the-box inference purposes. | ||
* A [Jupyter notebook](object_detection_tutorial.ipynb) for performing | ||
out-of-the-box inference with one of our released models | ||
* Convenient [local training](g3doc/running_locally.md) scripts as well as | ||
distributed training and evaluation pipelines via | ||
[Google Cloud](g3doc/running_on_cloud.md). | ||
|
||
|
||
<b>Thanks to contributors</b>: Jonathan Huang, Vivek Rathod, Derek Chow, | ||
Chen Sun, Menglong Zhu, Matthew Tang, Anoop Korattikara, Alireza Fathi, Ian Fischer, Zbigniew Wojna, Yang Song, Sergio Guadarrama, Jasper Uijlings, | ||
Viacheslav Kovalevskyi, Kevin Murphy |
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
# Tensorflow Object Detection API: Anchor Generator implementations. | ||
|
||
package( | ||
default_visibility = ["//visibility:public"], | ||
) | ||
|
||
licenses(["notice"]) | ||
|
||
# Apache 2.0 | ||
py_library( | ||
name = "grid_anchor_generator", | ||
srcs = [ | ||
"grid_anchor_generator.py", | ||
], | ||
deps = [ | ||
"//tensorflow", | ||
"//tensorflow_models/object_detection/core:anchor_generator", | ||
"//tensorflow_models/object_detection/core:box_list", | ||
"//tensorflow_models/object_detection/utils:ops", | ||
], | ||
) | ||
|
||
py_test( | ||
name = "grid_anchor_generator_test", | ||
srcs = [ | ||
"grid_anchor_generator_test.py", | ||
], | ||
deps = [ | ||
":grid_anchor_generator", | ||
"//tensorflow", | ||
], | ||
) | ||
|
||
py_library( | ||
name = "multiple_grid_anchor_generator", | ||
srcs = [ | ||
"multiple_grid_anchor_generator.py", | ||
], | ||
deps = [ | ||
":grid_anchor_generator", | ||
"//tensorflow", | ||
"//tensorflow_models/object_detection/core:anchor_generator", | ||
"//tensorflow_models/object_detection/core:box_list_ops", | ||
], | ||
) | ||
|
||
py_test( | ||
name = "multiple_grid_anchor_generator_test", | ||
srcs = [ | ||
"multiple_grid_anchor_generator_test.py", | ||
], | ||
deps = [ | ||
":multiple_grid_anchor_generator", | ||
"//third_party/py/numpy", | ||
], | ||
) |
Empty file.
Oops, something went wrong.