1. 26 May, 2020 1 commit
    • pkulzc's avatar
      Release MobileDet code and model, and require tf_slim installation for OD API. (#8562) · 451906e4
      pkulzc authored
      * Merged commit includes the following changes:
      311933687  by Sergio Guadarrama:
      
          Removes spurios use of tf.compat.v2, which results in spurious tf.compat.v1.compat.v2. Adds basic test to nasnet_utils.
          Replaces all remaining import tensorflow as tf with import tensorflow.compat.v1 as tf
      
      --
      311766063  by Sergio Guadarrama:
      
          Removes explicit tf.compat.v1 in all call sites (we already import tf.compat.v1, so this code was  doing tf.compat.v1.compat.v1). The existing code worked in latest version of tensorflow, 2.2, (and 1.15) but not in 1.14 or in 2.0.0a, this CL fixes it.
      
      --
      311624958  by Sergio Guadarrama:
      
          Updates README that doesn't render properly in github documentation
      
      --
      310980959  by Sergio Guadarrama:
      
          Moves research_models/slim off tf.contrib.slim/layers/framework to tf_slim
      
      --
      310263156  by Sergio Guadarrama:
      
          Adds model breakdown for MobilenetV3
      
      --
      308640...
      451906e4
  2. 12 May, 2020 1 commit
    • pkulzc's avatar
      Open source MnasFPN and minor fixes to OD API (#8484) · 8518d053
      pkulzc authored
      310447280  by lzc:
      
          Internal change
      
      310420845  by Zhichao Lu:
      
          Open source the internal Context RCNN code.
      
      --
      310362339  by Zhichao Lu:
      
          Internal change
      
      310259448  by lzc:
      
          Update required TF version for OD API.
      
      --
      310252159  by Zhichao Lu:
      
          Port patch_ops_test to TF1/TF2 as TPUs.
      
      --
      310247180  by Zhichao Lu:
      
          Ignore keypoint heatmap loss in the regions/bounding boxes with target keypoint
          class but no valid keypoint annotations.
      
      --
      310178294  by Zhichao Lu:
      
          Opensource MnasFPN
          https://arxiv.org/abs/1912.01106
      
      --
      310094222  by lzc:
      
          Internal changes.
      
      --
      310085250  by lzc:
      
          Internal Change.
      
      --
      310016447  by huizhongc:
      
          Remove unrecognized classes from labeled_classes.
      
      --
      310009470  by rathodv:
      
          Mark batcher.py as TF1 only.
      
      --
      310001984  by rathodv:
      
          Update core/preprocessor.py to be compatible with TF1/TF2..
      
      --
      309455035  by Zhichao Lu:
      
          Makes the freezable_batch_norm_test run w/ v2 behavior.
      
          The main change is in v2 updates will happen right away when running batchnorm in training mode. So, we need to restore the weights between batchnorm calls to make sure the numerical checks all start from the same place.
      
      --
      309425881  by Zhichao Lu:
      
          Make TF1/TF2 optimizer builder tests explicit.
      
      --
      309408646  by Zhichao Lu:
      
          Make dataset builder tests TF1 and TF2 compatible.
      
      --
      309246305  by Zhichao Lu:
      
          Added the functionality of combining the person keypoints and object detection
          annotations in the binary that converts the COCO raw data to TfRecord.
      
      --
      309125076  by Zhichao Lu:
      
          Convert target_assigner_utils to TF1/TF2.
      
      --
      308966359  by huizhongc:
      
          Support SSD training with partially labeled groundtruth.
      
      --
      308937159  by rathodv:
      
          Update core/target_assigner.py to be compatible with TF1/TF2.
      
      --
      308774302  by Zhichao Lu:
      
          Internal
      
      --
      308732860  by rathodv:
      
          Make core/prefetcher.py  compatible with TF1 only.
      
      --
      308726984  by rathodv:
      
          Update core/multiclass_nms_test.py to be TF1/TF2 compatible.
      
      --
      308714718  by rathodv:
      
          Update core/region_similarity_calculator_test.py to be TF1/TF2 compatible.
      
      --
      308707960  by rathodv:
      
          Update core/minibatch_sampler_test.py to be TF1/TF2 compatible.
      
      --
      308700595  by rathodv:
      
          Update core/losses_test.py to be TF1/TF2 compatible and remove losses_test_v2.py
      
      --
      308361472  by rathodv:
      
          Update core/matcher_test.py to be TF1/TF2 compatible.
      
      --
      308335846  by Zhichao Lu:
      
          Updated the COCO evaluation logics and populated the groundturth area
          information through. This change matches the groundtruth format expected by the
          COCO keypoint evaluation.
      
      --
      308256924  by rathodv:
      
          Update core/keypoints_ops_test.py to be TF1/TF2 compatible.
      
      --
      308256826  by rathodv:
      
          Update class_agnostic_nms_test.py to be TF1/TF2 compatible.
      
      --
      308256112  by rathodv:
      
          Update box_list_ops_test.py to be TF1/TF2 compatible.
      
      --
      308159360  by Zhichao Lu:
      
          Internal change
      
      308145008  by Zhichao Lu:
      
          Added 'image/class/confidence' field in the TFExample decoder.
      
      --
      307651875  by rathodv:
      
          Refactor core/box_list.py to support TF1/TF2.
      
      --
      307651798  by rathodv:
      
          Modify box_coder.py base class to work with with TF1/TF2
      
      --
      307651652  by rathodv:
      
          Refactor core/balanced_positive_negative_sampler.py to support TF1/TF2.
      
      --
      307651571  by rathodv:
      
          Modify BoxCoders tests to use test_case:execute method to allow testing with TF1.X and TF2.X
      
      --
      307651480  by rathodv:
      
          Modify Matcher tests to use test_case:execute method to allow testing with TF1.X and TF2.X
      
      --
      307651409  by rathodv:
      
          Modify AnchorGenerator tests to use test_case:execute method to allow testing with TF1.X and TF2.X
      
      --
      307651314  by rathodv:
      
          Refactor model_builder to support TF1 or TF2 models based on TensorFlow version.
      
      --
      307092053  by Zhichao Lu:
      
          Use manager to save checkpoint.
      
      --
      307071352  by ronnyvotel:
      
          Fixing keypoint visibilities. Now by default, the visibility is marked True if the keypoint is labeled (regardless of whether it is visible or not).
          Also, if visibilities are not present in the dataset, they will be created based on whether the keypoint coordinates are finite (vis = True) or NaN (vis = False).
      
      --
      307069557  by Zhichao Lu:
      
          Internal change to add few fields related to postprocessing parameters in
          center_net.proto and populate those parameters to the keypoint postprocessing
          functions.
      
      --
      307012091  by Zhichao Lu:
      
          Make Adam Optimizer's epsilon proto configurable.
      
          Potential issue: tf.compat.v1's AdamOptimizer has a default epsilon on 1e-08 ([doc-link](https://www.tensorflow.org/api_docs/python/tf/compat/v1/train/AdamOptimizer))  whereas tf.keras's AdamOptimizer has default epsilon 1e-07 ([doc-link](https://www.tensorflow.org/api_docs/python/tf/keras/optimizers/Adam))
      
      --
      306858598  by Zhichao Lu:
      
          Internal changes to update the CenterNet model:
          1) Modified eval job loss computation to avoid averaging over batches with zero loss.
          2) Updated CenterNet keypoint heatmap target assigner to apply box size to heatmap Guassian standard deviation.
          3) Updated the CenterNet meta arch keypoint losses computation to apply weights outside of loss function.
      
      --
      306731223  by jonathanhuang:
      
          Internal change.
      
      --
      306549183  by rathodv:
      
          Internal Update.
      
      --
      306542930  by rathodv:
      
          Internal Update
      
      --
      306322697  by rathodv:
      
          Internal.
      
      --
      305345036  by Zhichao Lu:
      
          Adding COCO Camera Traps Json to tf.Example beam code
      
      --
      304104869  by lzc:
      
          Internal changes.
      
      --
      304068971  by jonathanhuang:
      
          Internal change.
      
      --
      304050469  by Zhichao Lu:
      
          Internal change.
      
      --
      303880642  by huizhongc:
      
          Support parsing partially labeled groundtruth.
      
      --
      303841743  by Zhichao Lu:
      
          Deprecate nms_on_host in SSDMetaArch.
      
      --
      303803204  by rathodv:
      
          Internal change.
      
      --
      303793895  by jonathanhuang:
      
          Internal change.
      
      --
      303467631  by rathodv:
      
          Py3 update for detection inference test.
      
      --
      303444542  by rathodv:
      
          Py3 update to metrics module
      
      --
      303421960  by rathodv:
      
          Update json_utils to python3.
      
      --
      302787583  by ronnyvotel:
      
          Coco results generator for submission to the coco test server.
      
      --
      302719091  by Zhichao Lu:
      
          Internal change to add the ResNet50 image feature extractor for CenterNet model.
      
      --
      302116230  by Zhichao Lu:
      
          Added the functions to overlay the heatmaps with images in visualization util
          library.
      
      --
      301888316  by Zhichao Lu:
      
          Fix checkpoint_filepath not defined error.
      
      --
      301840312  by ronnyvotel:
      
          Adding keypoint_scores to visualizations.
      
      --
      301683475  by ronnyvotel:
      
          Introducing the ability to preprocess `keypoint_visibilities`.
      
          Some data augmentation ops such as random crop can filter instances and keypoints. It's important to also filter keypoint visibilities, so that the groundtruth tensors are always in alignment.
      
      --
      301532344  by Zhichao Lu:
      
          Don't use tf.divide since "Quantization not yet supported for op: DIV"
      
      --
      301480348  by ronnyvotel:
      
          Introducing keypoint evaluation into model lib v2.
          Also, making some fixes to coco keypoint evaluation.
      
      --
      301454018  by Zhichao Lu:
      
          Added the image summary to visualize the train/eval input images and eval's
          prediction/groundtruth side-by-side image.
      
      --
      301317527  by Zhichao Lu:
      
          Updated the random_absolute_pad_image function in the preprocessor library to
          support the keypoints argument.
      
      --
      301300324  by Zhichao Lu:
      
          Apply name change(experimental_run_v2 -> run) for all callers in Tensorflow.
      
      --
      301297115  by ronnyvotel:
      
          Utility function for setting keypoint visibilities based on keypoint coordinates.
      
      --
      301248885  by Zhichao Lu:
      
          Allow MultiworkerMirroredStrategy(MWMS) use by adding checkpoint handling with temporary directories in model_lib_v2. Added missing WeakKeyDictionary cfer_fn_cache field in CollectiveAllReduceStrategyExtended.
      
      --
      301224559  by Zhichao Lu:
      
          ...1) Fixes model_lib to also use keypoints while preparing model groundtruth.
          ...2) Tests model_lib with newly added keypoint metrics config.
      
      --
      300836556  by Zhichao Lu:
      
          Internal changes to add keypoint estimation parameters in CenterNet proto.
      
      --
      300795208  by Zhichao Lu:
      
          Updated the eval_util library to populate the keypoint groundtruth to
          eval_dict.
      
      --
      299474766  by Zhichao Lu:
      
          ...Modifies eval_util to create Keypoint Evaluator objects when configured in eval config.
      
      --
      299453920  by Zhichao Lu:
      
          Add swish activation as a hyperperams option.
      
      --
      299240093  by ronnyvotel:
      
          Keypoint postprocessing for CenterNetMetaArch.
      
      --
      299176395  by Zhichao Lu:
      
          Internal change.
      
      --
      299135608  by Zhichao Lu:
      
          Internal changes to refactor the CenterNet model in preparation for keypoint estimation tasks.
      
      --
      298915482  by Zhichao Lu:
      
          Make dataset_builder aware of input_context for distributed training.
      
      --
      298713595  by Zhichao Lu:
      
          Handling data with negative size boxes.
      
      --
      298695964  by Zhichao Lu:
      
          Expose change_coordinate_frame as a config parameter; fix multiclass_scores optional field.
      
      --
      298492150  by Zhichao Lu:
      
          Rename optimizer_builder_test_v2.py -> optimizer_builder_v2_test.py
      
      --
      298476471  by Zhichao Lu:
      
          Internal changes to support CenterNet keypoint estimation.
      
      --
      298365851  by ronnyvotel:
      
          Fixing a bug where groundtruth_keypoint_weights were being padded with a dynamic dimension.
      
      --
      297843700  by Zhichao Lu:
      
          Internal change.
      
      --
      297706988  by lzc:
      
          Internal change.
      
      --
      297705287  by ronnyvotel:
      
          Creating the "snapping" behavior in CenterNet, where regressed keypoints are refined with updated candidate keypoints from a heatmap.
      
      --
      297700447  by Zhichao Lu:
      
          Improve checkpoint checking logic with TF2 loop.
      
      --
      297686094  by Zhichao Lu:
      
          Convert "import tensorflow as tf" to "import tensorflow.compat.v1".
      
      --
      297670468  by lzc:
      
          Internal change.
      
      --
      297241327  by Zhichao Lu:
      
          Convert "import tensorflow as tf" to "import tensorflow.compat.v1".
      
      --
      297205959  by Zhichao Lu:
      
          Internal changes to support refactored the centernet object detection target assigner into a separate library.
      
      --
      297143806  by Zhichao Lu:
      
          Convert "import tensorflow as tf" to "import tensorflow.compat.v1".
      
      --
      297129625  by Zhichao Lu:
      
          Explicitly replace "import tensorflow" with "tensorflow.compat.v1" for TF2.x migration
      
      --
      297117070  by Zhichao Lu:
      
          Explicitly replace "import tensorflow" with "tensorflow.compat.v1" for TF2.x migration
      
      --
      297030190  by Zhichao Lu:
      
          Add configuration options for visualizing keypoint edges
      
      --
      296359649  by Zhichao Lu:
      
          Support DepthwiseConv2dNative (of separable conv) in weight equalization loss.
      
      --
      296290582  by Zhichao Lu:
      
          Internal change.
      
      --
      296093857  by Zhichao Lu:
      
          Internal changes to add general target assigner utilities.
      
      --
      295975116  by Zhichao Lu:
      
          Fix visualize_boxes_and_labels_on_image_array to show max_boxes_to_draw correctly.
      
      --
      295819711  by Zhichao Lu:
      
          Adds a flag to visualize_boxes_and_labels_on_image_array to skip the drawing of axis aligned bounding boxes.
      
      --
      295811929  by Zhichao Lu:
      
          Keypoint support in random_square_crop_by_scale.
      
      --
      295788458  by rathodv:
      
          Remove unused checkpoint to reduce repo size on github
      
      --
      295787184  by Zhichao Lu:
      
          Enable visualization of edges between keypoints
      
      --
      295763508  by Zhichao Lu:
      
          [Context RCNN] Add an option to enable / disable cropping feature in the post
          process step in the meta archtecture.
      
      --
      295605344  by Zhichao Lu:
      
          internal change.
      
      --
      294926050  by ronnyvotel:
      
          Adding per-keypoint groundtruth weights. These weights are intended to be used as multipliers in a keypoint loss function.
      
          Groundtruth keypoint weights are constructed as follows:
          - Initialize the weight for each keypoint type based on user-specified weights in the input_reader proto
          - Mask out (i.e. make zero) all keypoint weights that are not visible.
      
      --
      294829061  by lzc:
      
          Internal change.
      
      --
      294566503  by Zhichao Lu:
      
          Changed internal CenterNet Model configuration.
      
      --
      294346662  by ronnyvotel:
      
          Using NaN values in keypoint coordinates that are not visible.
      
      --
      294333339  by Zhichao Lu:
      
          Change experimetna_distribute_dataset -> experimental_distribute_dataset_from_function
      
      --
      293928752  by Zhichao Lu:
      
          Internal change
      
      --
      293909384  by Zhichao Lu:
      
          Add capabilities to train 1024x1024 CenterNet models.
      
      --
      293637554  by ronnyvotel:
      
          Adding keypoint visibilities to TfExampleDecoder.
      
      --
      293501558  by lzc:
      
          Internal change.
      
      --
      293252851  by Zhichao Lu:
      
          Change tf.gfile.GFile to tf.io.gfile.GFile.
      
      --
      292730217  by Zhichao Lu:
      
          Internal change.
      
      --
      292456563  by lzc:
      
          Internal changes.
      
      --
      292355612  by Zhichao Lu:
      
          Use tf.gather and tf.scatter_nd instead of matrix ops.
      
      --
      292245265  by rathodv:
      
          Internal
      
      --
      291989323  by richardmunoz:
      
          Refactor out building a DataDecoder from building a tf.data.Dataset.
      
      --
      291950147  by Zhichao Lu:
      
          Flip bounding boxes in arbitrary shaped tensors.
      
      --
      291401052  by huizhongc:
      
          Fix multiscale grid anchor generator to allow fully convolutional inference. When exporting model with identity_resizer as image_resizer, there is an incorrect box offset on the detection results. We add the anchor offset to address this problem.
      
      --
      291298871  by Zhichao Lu:
      
          Py3 compatibility changes.
      
      --
      290957957  by Zhichao Lu:
      
          Hourglass feature extractor for CenterNet.
      
      --
      290564372  by Zhichao Lu:
      
          Internal change.
      
      --
      290155278  by rathodv:
      
          Remove Dataset Explorer.
      
      --
      290155153  by Zhichao Lu:
      
          Internal change
      
      --
      290122054  by Zhichao Lu:
      
          Unify the format in the faster_rcnn.proto
      
      --
      290116084  by Zhichao Lu:
      
          Deprecate tensorflow.contrib.
      
      --
      290100672  by Zhichao Lu:
      
          Update MobilenetV3 SSD candidates
      
      --
      289926392  by Zhichao Lu:
      
          Internal change
      
      --
      289553440  by Zhichao Lu:
      
          [Object Detection API] Fix the comments about the dimension of the rpn_box_encodings from 4-D to 3-D.
      
      --
      288994128  by lzc:
      
          Internal changes.
      
      --
      288942194  by lzc:
      
          Internal change.
      
      --
      288746124  by Zhichao Lu:
      
          Configurable channel mean/std. dev in CenterNet feature extractors.
      
      --
      288552509  by rathodv:
      
          Internal.
      
      --
      288541285  by rathodv:
      
          Internal update.
      
      --
      288396396  by Zhichao Lu:
      
          Make object detection import contrib explicitly
      
      --
      288255791  by rathodv:
      
          Internal
      
      --
      288078600  by Zhichao Lu:
      
          Fix model_lib_v2 test
      
      --
      287952244  by rathodv:
      
          Internal
      
      --
      287921774  by Zhichao Lu:
      
          internal change
      
      --
      287906173  by Zhichao Lu:
      
          internal change
      
      --
      287889407  by jonathanhuang:
      
          PY3 compatibility
      
      --
      287889042  by rathodv:
      
          Internal
      
      --
      287876178  by Zhichao Lu:
      
          Internal change.
      
      --
      287770490  by Zhichao Lu:
      
          Add CenterNet proto and builder
      
      --
      287694213  by Zhichao Lu:
      
          Support for running multiple steps per tf.function call.
      
      --
      287377183  by jonathanhuang:
      
          PY3 compatibility
      
      --
      287371344  by rathodv:
      
          Support loading keypoint labels and ids.
      
      --
      287368213  by rathodv:
      
          Add protos supporting keypoint evaluation.
      
      --
      286673200  by rathodv:
      
          dataset_tools PY3 migration
      
      --
      286635106  by Zhichao Lu:
      
          Update code for upcoming tf.contrib removal
      
      --
      286479439  by Zhichao Lu:
      
          Internal change
      
      --
      286311711  by Zhichao Lu:
      
          Skeleton of context model within TFODAPI
      
      --
      286005546  by Zhichao Lu:
      
          Fix Faster-RCNN training when using keep_aspect_ratio_resizer with pad_to_max_dimension
      
      --
      285906400  by derekjchow:
      
          Internal change
      
      --
      285822795  by Zhichao Lu:
      
          Add CenterNet meta arch target assigners.
      
      --
      285447238  by Zhichao Lu:
      
          Internal changes.
      
      --
      285016927  by Zhichao Lu:
      
          Make _dummy_computation a tf.function. This fixes breakage caused by
          cl/284256438
      
      --
      284827274  by Zhichao Lu:
      
          Convert to python 3.
      
      --
      284645593  by rathodv:
      
          Internal change
      
      --
      284639893  by rathodv:
      
          Add missing documentation for keypoints in eval_util.py.
      
      --
      284323712  by Zhichao Lu:
      
          Internal changes.
      
      --
      284295290  by Zhichao Lu:
      
          Updating input config proto and dataset builder to include context fields
      
          Updating standard_fields and tf_example_decoder to include context features
      
      --
      284226821  by derekjchow:
      
          Update exporter.
      
      --
      284211030  by Zhichao Lu:
      
          API changes in CenterNet informed by the experiments with hourlgass network.
      
      --
      284190451  by Zhichao Lu:
      
          Add support for CenterNet losses in protos and builders.
      
      --
      284093961  by lzc:
      
          Internal changes.
      
      --
      284028174  by Zhichao Lu:
      
          Internal change
      
      --
      284014719  by derekjchow:
      
          Do not pad top_down feature maps unnecessarily.
      
      --
      284005765  by Zhichao Lu:
      
          Add new pad_to_multiple_resizer
      
      --
      283858233  by Zhichao Lu:
      
          Make target assigner work when under tf.function.
      
      --
      283836611  by Zhichao Lu:
      
          Make config getters more general.
      
      --
      283808990  by Zhichao Lu:
      
          Internal change
      
      --
      283754588  by Zhichao Lu:
      
          Internal changes.
      
      --
      282460301  by Zhichao Lu:
      
          Add ability to restore v2 style checkpoints.
      
      --
      281605842  by lzc:
      
          Add option to disable loss computation in OD API eval job.
      
      --
      280298212  by Zhichao Lu:
      
          Add backwards compatible change
      
      --
      280237857  by Zhichao Lu:
      
          internal change
      
      --
      
      PiperOrigin-RevId: 310447280
      8518d053
  3. 02 Nov, 2018 1 commit
    • pkulzc's avatar
      Minor fixes for object detection (#5613) · 31ae57eb
      pkulzc authored
      * Internal change.
      
      PiperOrigin-RevId: 213914693
      
      * Add original_image_spatial_shape tensor in input dictionary to store shape of the original input image
      
      PiperOrigin-RevId: 214018767
      
      * Remove "groundtruth_confidences" from decoders use "groundtruth_weights" to indicate label confidence.
      
      This also solves a bug that only surfaced now - random crop routines in core/preprocessor.py did not correctly handle "groundtruth_weight" tensors returned by the decoders.
      
      PiperOrigin-RevId: 214091843
      
      * Update CocoMaskEvaluator to allow for a batch of image info, rather than a single image.
      
      PiperOrigin-RevId: 214295305
      
      * Adding the option to be able to summarize gradients.
      
      PiperOrigin-RevId: 214310875
      
      * Adds FasterRCNN inference on CPU
      
      1. Adds a flag use_static_shapes_for_eval to restrict to the ops that guarantees static shape.
      2. No filtering of overlapping anchors while clipping the anchors when use_static_shapes_for_eval is set to True.
      3. Adds test for faster_rcnn_meta_arch for predict and postprocess in inference mode for first and second stages.
      
      PiperOrigin-RevId: 214329565
      
      * Fix model_lib eval_spec_names assignment (integer->string).
      
      PiperOrigin-RevId: 214335461
      
      * Refactor Mask HEAD to optionally upsample after applying convolutions on ROI crops.
      
      PiperOrigin-RevId: 214338440
      
      * Uses final_exporter_name as exporter_name for the first eval spec for backward compatibility.
      
      PiperOrigin-RevId: 214522032
      
      * Add reshaped `mask_predictions` tensor to the prediction dictionary in `_predict_third_stage` method to allow computing mask loss in eval job.
      
      PiperOrigin-RevId: 214620716
      
      * Add support for fully conv training to fpn.
      
      PiperOrigin-RevId: 214626274
      
      * Fix the proprocess() function in Resnet v1 to make it work for any number of input channels.
      
      Note: If the #channels != 3, this will simply skip the mean subtraction in preprocess() function.
      PiperOrigin-RevId: 214635428
      
      * Wrap result_dict_for_single_example in eval_util to run for batched examples.
      
      PiperOrigin-RevId: 214678514
      
      * Adds PNASNet-based (ImageNet model) feature extractor for SSD.
      
      PiperOrigin-RevId: 214988331
      
      * Update documentation
      
      PiperOrigin-RevId: 215243502
      
      * Correct index used to compute number of groundtruth/detection boxes in COCOMaskEvaluator.
      
      Due to an incorrect indexing in cl/214295305 only the first detection mask and first groundtruth mask for a given image are fed to the COCO Mask evaluation library. Since groundtruth masks are arranged in no particular order, the first and highest scoring detection mask (detection masks are ordered by score) won't match the the first and only groundtruth retained in all cases. This is I think why mask evaluation metrics do not get better than ~11 mAP. Note that this code path is only active when using model_main.py binary for evaluation.
      
      This change fixes the indices and modifies an existing test case to cover it.
      
      PiperOrigin-RevId: 215275936
      
      * Fixing grayscale_image_resizer to accept mask as input.
      
      PiperOrigin-RevId: 215345836
      
      * Add an option not to clip groundtruth boxes during preprocessing. Clipping boxes adversely affects training for partially occluded or large objects, especially for fully conv models. Clipping already occurs during postprocessing, and should not occur during training.
      
      PiperOrigin-RevId: 215613379
      
      * Always return recalls and precisions with length equal to the number of classes.
      
      The previous behavior of ObjectDetectionEvaluation was somewhat dangerous: when no groundtruth boxes were present, the lists of per-class precisions and recalls were simply truncated. Unless you were aware of this phenomenon (and consulted the `num_gt_instances_per_class` vector) it was difficult to associate each metric with each class.
      
      PiperOrigin-RevId: 215633711
      
      * Expose the box feature node in SSD.
      
      PiperOrigin-RevId: 215653316
      
      * Fix ssd mobilenet v2 _CONV_DEFS overwriting issue.
      
      PiperOrigin-RevId: 215654160
      
      * More documentation updates
      
      PiperOrigin-RevId: 215656580
      
      * Add pooling + residual option in multi_resolution_feature_maps. It adds an average pooling and a residual layer between feature maps with matching depth. Designed to be used with WeightSharedBoxPredictor.
      
      PiperOrigin-RevId: 215665619
      
      * Only call create_modificed_mobilenet_config on init if use_depthwise is true.
      
      PiperOrigin-RevId: 215784290
      
      * Only call create_modificed_mobilenet_config on init if use_depthwise is true.
      
      PiperOrigin-RevId: 215837524
      
      * Don't prune keypoints if clip_boxes is false.
      
      PiperOrigin-RevId: 216187642
      
      * Makes sure "key" field exists in the result dictionary.
      
      PiperOrigin-RevId: 216456543
      
      * Add add_background_class parameter to allow disabling the inclusion of a background class.
      
      PiperOrigin-RevId: 216567612
      
      * Update expected_classification_loss_under_sampling to better account for expected sampling.
      
      PiperOrigin-RevId: 216712287
      
      * Let the evaluation receive a evaluation class in its constructor.
      
      PiperOrigin-RevId: 216769374
      
      * This CL adds model building & training support for end-to-end Keras-based SSD models. If a Keras feature extractor's name is specified in the model config (e.g. 'ssd_mobilenet_v2_keras'), the model will use that feature extractor and a corresponding Keras-based box predictor.
      
      This CL makes sure regularization losses & batch norm updates work correctly when training models that have Keras-based components. It also updates the default hyperparameter settings of the keras-based mobilenetV2 (when not overriding hyperparams) to more closely match the legacy Slim training scope.
      
      PiperOrigin-RevId: 216938707
      
      * Adding the ability in the coco evaluator to indicate whether an image has been annotated. For a non-annotated image, detections and groundtruth are not supplied.
      
      PiperOrigin-RevId: 217316342
      
      * Release the 8k minival dataset ids for MSCOCO, used in Huang et al. "Speed/accuracy trade-offs for modern convolutional object detectors" (https://arxiv.org/abs/1611.10012)
      
      PiperOrigin-RevId: 217549353
      
      * Exposes weighted_sigmoid_focal loss for faster rcnn classifier
      
      PiperOrigin-RevId: 217601740
      
      * Add detection_features to output nodes. The shape of the feature is [batch_size, max_detections, depth].
      
      PiperOrigin-RevId: 217629905
      
      * FPN uses a custom NN resize op for TPU-compatibility. Replace this op with the Tensorflow version at export time for TFLite-compatibility.
      
      PiperOrigin-RevId: 217721184
      
      * Compute `num_groundtruth_boxes` in inputs.tranform_input_data_fn after data augmentation instead of decoders.
      
      PiperOrigin-RevId: 217733432
      
      * 1. Stop gradients from flowing into groundtruth masks with zero paddings.
      2. Normalize pixelwise cross entropy loss across the whole batch.
      
      PiperOrigin-RevId: 217735114
      
      * Optimize Input pipeline for Mask R-CNN on TPU with blfoat16: improve the step time from:
      1663.6 ms -> 1184.2 ms, about 28.8% improvement.
      
      PiperOrigin-RevId: 217748833
      
      * Fixes to export a TPU compatible model
      
      Adds nodes to each of the output tensor. Also increments the value of class labels by 1.
      
      PiperOrigin-RevId: 217856760
      
      * API changes:
       - change the interface of target assigner to return per-class weights.
       - change the interface of classification loss to take per-class weights.
      
      PiperOrigin-RevId: 217968393
      
      * Add an option to override pipeline config in export_saved_model using command line arg
      
      PiperOrigin-RevId: 218429292
      
      * Include Quantized trained MobileNet V2 SSD and FaceSsd in model zoo.
      
      PiperOrigin-RevId: 218530947
      
      * Write final config to disk in `train` mode only.
      
      PiperOrigin-RevId: 218735512
      31ae57eb
  4. 21 Sep, 2018 1 commit
    • pkulzc's avatar
      Release iNaturalist Species-trained models, refactor of evaluation, box... · 99256cf4
      pkulzc authored
      Release iNaturalist Species-trained models, refactor of evaluation, box predictor for object detection. (#5289)
      
      * Merged commit includes the following changes:
      212389173  by Zhichao Lu:
      
          1. Replace tf.boolean_mask with tf.where
      
      --
      212282646  by Zhichao Lu:
      
          1. Fix a typo in model_builder.py and add a test to cover it.
      
      --
      212142989  by Zhichao Lu:
      
          Only resize masks in meta architecture if it has not already been resized in the input pipeline.
      
      --
      212136935  by Zhichao Lu:
      
          Choose matmul or native crop_and_resize in the model builder instead of faster r-cnn meta architecture.
      
      --
      211907984  by Zhichao Lu:
      
          Make eval input reader repeated field and update config util to handle this field.
      
      --
      211858098  by Zhichao Lu:
      
          Change the implementation of merge_boxes_with_multiple_labels.
      
      --
      211843915  by Zhichao Lu:
      
          Add Mobilenet v2 + FPN support.
      
      --
      211655076  by Zhichao Lu:
      
          Bug fix for generic keys in config overrides
      
          In generic configuration overrides, we had a duplicate entry for train_input_config and we were missing the eval_input_config and eval_config.
      
          This change also introduces testing for all config overrides.
      
      --
      211157501  by Zhichao Lu:
      
          Make the locally-modified conv defs a copy.
      
          So that it doesn't modify MobileNet conv defs globally for other code that
          transitively imports this package.
      
      --
      211112813  by Zhichao Lu:
      
          Refactoring visualization tools for Estimator's eval_metric_ops. This will make it easier for future models to take advantage of a single interface and mechanics.
      
      --
      211109571  by Zhichao Lu:
      
          A test decorator.
      
      --
      210747685  by Zhichao Lu:
      
          For FPN, when use_depthwise is set to true, use slightly modified mobilenet v1 config.
      
      --
      210723882  by Zhichao Lu:
      
          Integrating the losses mask into the meta architectures. When providing groundtruth, one can optionally specify annotation information (i.e. which images are labeled vs. unlabeled). For any image that is unlabeled, there is no loss accumulation.
      
      --
      210673675  by Zhichao Lu:
      
          Internal change.
      
      --
      210546590  by Zhichao Lu:
      
          Internal change.
      
      --
      210529752  by Zhichao Lu:
      
          Support batched inputs with ops.matmul_crop_and_resize.
      
          With this change the new inputs are images of shape [batch, heigh, width, depth] and boxes of shape [batch, num_boxes, 4]. The output tensor is of the shape [batch, num_boxes, crop_height, crop_width, depth].
      
      --
      210485912  by Zhichao Lu:
      
          Fix TensorFlow version check in object_detection_tutorial.ipynb
      
      --
      210484076  by Zhichao Lu:
      
          Reduce TPU memory required for single image matmul_crop_and_resize.
      
          Using tf.einsum eliminates intermediate tensors, tiling and expansion. for an image of size [40, 40, 1024] and boxes of shape [300, 4] HBM memory usage goes down from 3.52G to 1.67G.
      
      --
      210468361  by Zhichao Lu:
      
          Remove PositiveAnchorLossCDF/NegativeAnchorLossCDF to resolve "Main thread is not in main loop error" issue in local training.
      
      --
      210100253  by Zhichao Lu:
      
          Pooling pyramid feature maps: add option to replace max pool with convolution layers.
      
      --
      209995842  by Zhichao Lu:
      
          Fix a bug which prevents variable sharing in Faster RCNN.
      
      --
      209965526  by Zhichao Lu:
      
          Add support for enabling export_to_tpu through the estimator.
      
      --
      209946440  by Zhichao Lu:
      
          Replace deprecated tf.train.Supervisor with tf.train.MonitoredSession. MonitoredSession also takes away the hassle of starting queue runners.
      
      --
      209888003  by Zhichao Lu:
      
          Implement function to handle data where source_id is not set.
      
          If the field source_id is found to be the empty string for any image during runtime, it will be replaced with a random string. This avoids hash-collisions on dataset where many examples do not have source_id set. Those hash-collisions have unintended site effects and may lead to bugs in the detection pipeline.
      
      --
      209842134  by Zhichao Lu:
      
          Converting loss mask into multiplier, rather than using it as a boolean mask (which changes tensor shape). This is necessary, since other utilities (e.g. hard example miner) require a loss matrix with the same dimensions as the original prediction tensor.
      
      --
      209768066  by Zhichao Lu:
      
          Adding ability to remove loss computation from specific images in a batch, via an optional boolean mask.
      
      --
      209722556  by Zhichao Lu:
      
          Remove dead code.
      
          (_USE_C_API was flipped to True by default in TensorFlow 1.8)
      
      --
      209701861  by Zhichao Lu:
      
          This CL cleans-up some tf.Example creation snippets, by reusing the convenient tf.train.Feature building functions in dataset_util.
      
      --
      209697893  by Zhichao Lu:
      
          Do not overwrite num_epoch for eval input. This leads to errors in some cases.
      
      --
      209694652  by Zhichao Lu:
      
          Sample boxes by jittering around the currently given boxes.
      
      --
      209550300  by Zhichao Lu:
      
          `create_category_index_from_labelmap()` function now accepts `use_display_name` parameter.
          Also added create_categories_from_labelmap function for convenience
      
      --
      209490273  by Zhichao Lu:
      
          Check result_dict type before accessing image_id via key.
      
      --
      209442529  by Zhichao Lu:
      
          Introducing the capability to sample examples for evaluation. This makes it easy to specify one full epoch of evaluation, or a subset (e.g. sample 1 of every N examples).
      
      --
      208941150  by Zhichao Lu:
      
          Adding the capability of exporting the results in json format.
      
      --
      208888798  by Zhichao Lu:
      
          Fixes wrong dictionary key for num_det_boxes_per_image.
      
      --
      208873549  by Zhichao Lu:
      
          Reduce the number of HLO ops created by matmul_crop_and_resize.
      
          Do not unroll along the channels dimension. Instead, transpose the input image dimensions, apply tf.matmul and transpose back.
      
          The number of HLO instructions for 1024 channels reduce from 12368 to 110.
      
      --
      208844315  by Zhichao Lu:
      
          Add an option to use tf.non_maximal_supression_padded in SSD post-process
      
      --
      208731380  by Zhichao Lu:
      
          Add field in box_predictor config to enable mask prediction and update builders accordingly.
      
      --
      208699405  by Zhichao Lu:
      
          This CL creates a keras-based multi-resolution feature map extractor.
      
      --
      208557208  by Zhichao Lu:
      
          Add TPU tests for Faster R-CNN Meta arch.
      
          * Tests that two_stage_predict and total_loss tests run successfully on TPU.
          * Small mods to multiclass_non_max_suppression to preserve static shapes.
      
      --
      208499278  by Zhichao Lu:
      
          This CL makes sure the Keras convolutional box predictor & head layers apply activation layers *after* normalization (as opposed to before).
      
      --
      208391694  by Zhichao Lu:
      
          Updating visualization tool to produce multiple evaluation images.
      
      --
      208275961  by Zhichao Lu:
      
          This CL adds a Keras version of the Convolutional Box Predictor, as well as more general infrastructure for making Keras Prediction heads & Keras box predictors.
      
      --
      208275585  by Zhichao Lu:
      
          This CL enables the Keras layer hyperparameter object to build a dedicated activation layer, and to disable activation by default in the op layer construction kwargs.
      
          This is necessary because in most cases the normalization layer must be applied before the activation layer. So, in Keras models we must set the convolution activation in a dedicated layer after normalization is applied, rather than setting it in the convolution layer construction args.
      
      --
      208263792  by Zhichao Lu:
      
          Add a new SSD mask meta arch that can predict masks for SSD models.
          Changes including:
           - overwrite loss function to add mask loss computation.
           - update ssd_meta_arch to handle masks if predicted in predict and postprocessing.
      
      --
      208000218  by Zhichao Lu:
      
          Make FasterRCNN choose static shape operations only in training mode.
      
      --
      207997797  by Zhichao Lu:
      
          Add static boolean_mask op to box_list_ops.py and use that in faster_rcnn_meta_arch.py to support use_static_shapes option.
      
      --
      207993460  by Zhichao Lu:
      
          Include FGVC detection models in model zoo.
      
      --
      207971213  by Zhichao Lu:
      
          remove the restriction to run tf.nn.top_k op on CPU
      
      --
      207961187  by Zhichao Lu:
      
          Build the first stage NMS function in the model builder and pass it to FasterRCNN meta arch.
      
      --
      207960608  by Zhichao Lu:
      
          Internal Change.
      
      --
      207927015  by Zhichao Lu:
      
          Have an option to use the TPU compatible NMS op cl/206673787, in the batch_multiclass_non_max_suppression function. On setting pad_to_max_output_size to true, the output nmsed boxes are padded to be of length max_size_per_class.
      
          This can be used in first stage Region Proposal Network in FasterRCNN model by setting the first_stage_nms_pad_to_max_proposals field to true in config proto.
      
      --
      207809668  by Zhichao Lu:
      
          Add option to use depthwise separable conv instead of conv2d in FPN and WeightSharedBoxPredictor. More specifically, there are two related configs:
          - SsdFeatureExtractor.use_depthwise
          - WeightSharedConvolutionalBoxPredictor.use_depthwise
      
      --
      207808651  by Zhichao Lu:
      
          Fix the static balanced positive negative sampler's TPU tests
      
      --
      207798658  by Zhichao Lu:
      
          Fixes a post-refactoring bug where the pre-prediction convolution layers in the convolutional box predictor are ignored.
      
      --
      207796470  by Zhichao Lu:
      
          Make slim endpoints visible in FasterRCNNMetaArch.
      
      --
      207787053  by Zhichao Lu:
      
          Refactor ssd_meta_arch so that the target assigner instance is passed into the SSDMetaArch constructor rather than constructed inside.
      
      --
      
      PiperOrigin-RevId: 212389173
      
      * Fix detection model zoo typo.
      
      * Modify tf example decoder to handle label maps with either `display_name` or `name` fields seamlessly.
      
      Currently, tf example decoder uses only `name` field to look up ids for class text field present in the data. This change uses both `display_name` and `name` fields in the label map to fetch ids for class text.
      
      PiperOrigin-RevId: 212672223
      
      * Modify create_coco_tf_record tool to write out class text instead of class labels.
      
      PiperOrigin-RevId: 212679112
      
      * Fix detection model zoo typo.
      
      PiperOrigin-RevId: 212715692
      
      * Adding the following two optional flags to WeightSharedConvolutionalBoxHead:
      1) In the box head, apply clipping to box encodings in the box head.
      2) In the class head, apply sigmoid to class predictions at inference time.
      
      PiperOrigin-RevId: 212723242
      
      * Support class confidences in merge boxes with multiple labels.
      
      PiperOrigin-RevId: 212884998
      
      * Creates multiple eval specs for object detection.
      
      PiperOrigin-RevId: 212894556
      
      * Set batch_norm on last layer in Mask Head to None.
      
      PiperOrigin-RevId: 213030087
      
      * Enable bfloat16 training for object detection models.
      
      PiperOrigin-RevId: 213053547
      
      * Skip padding op when unnecessary.
      
      PiperOrigin-RevId: 213065869
      
      * Modify `Matchers` to use groundtruth weights before performing matching.
      
      Groundtruth weights tensor is used to indicate padding in groundtruth box tensor. It is handled in `TargetAssigner` by creating appropriate classification and regression target weights based on the groundtruth box each anchor matches to. However, options such as `force_match_all_rows` in `ArgmaxMatcher` force certain anchors to match to groundtruth boxes that are just paddings thereby reducing the number of anchors that could otherwise match to real groundtruth boxes.
      
      For single stage models like SSD the effect of this is negligible as there are two orders of magnitude more anchors than the number of padded groundtruth boxes. But for Faster R-CNN and Mask R-CNN where there are only 300 anchors in the second stage, a significant number of these match to groundtruth paddings reducing the number of anchors regressing to real groundtruth boxes degrading the performance severely.
      
      Therefore, this change introduces an additional boolean argument `valid_rows` to `Matcher.match` methods and the implementations now ignore such padded groudtruth boxes during matching.
      
      PiperOrigin-RevId: 213345395
      
      * Add release note for iNaturalist Species trained models.
      
      PiperOrigin-RevId: 213347179
      
      * Fix the bug of uninitialized gt_is_crowd_list variable.
      
      PiperOrigin-RevId: 213364858
      
      * ...text exposed to open source public git repo...
      
      PiperOrigin-RevId: 213554260
      99256cf4
  5. 08 Aug, 2018 1 commit
    • pkulzc's avatar
      Update object detection post processing and fixes boxes padding/clipping issue. (#5026) · 59f7e80a
      pkulzc authored
      * Merged commit includes the following changes:
      207771702  by Zhichao Lu:
      
          Refactoring evaluation utilities so that it is easier to introduce new DetectionEvaluators with eval_metric_ops.
      
      --
      207758641  by Zhichao Lu:
      
          Require tensorflow version 1.9+ for running object detection API.
      
      --
      207641470  by Zhichao Lu:
      
          Clip `num_groundtruth_boxes` in pad_input_data_to_static_shapes() to `max_num_boxes`. This prevents a scenario where tensors are sliced to an invalid range in model_lib.unstack_batch().
      
      --
      207621728  by Zhichao Lu:
      
          This CL adds a FreezableBatchNorm that inherits from the Keras BatchNormalization layer, but supports freezing the `training` parameter at construction time instead of having to do it in the `call` method.
      
          It also adds a method to the `KerasLayerHyperparams` class that will build an appropriate FreezableBatchNorm layer according to the hyperparameter configuration. If batch_norm is disabled, this method returns and Identity layer.
      
          These will be used to simplify the conversion to Keras APIs.
      
      --
      207610524  by Zhichao Lu:
      
          Update anchor generators and box predictors for python3 compatibility.
      
      --
      207585122  by Zhichao Lu:
      
          Refactoring convolutional box predictor into separate prediction heads.
      
      --
      207549305  by Zhichao Lu:
      
          Pass all 1s for batch weights if nothing is specified in GT.
      
      --
      207336575  by Zhichao Lu:
      
          Move the new argument 'target_assigner_instance' to the end of the list of arguments to the ssd_meta_arch constructor for backwards compatibility.
      
      --
      207327862  by Zhichao Lu:
      
          Enable support for float output in quantized custom op for postprocessing in SSD Mobilenet model.
      
      --
      207323154  by Zhichao Lu:
      
          Bug fix: change dict.iteritems() to dict.items()
      
      --
      207301109  by Zhichao Lu:
      
          Integrating expected_classification_loss_under_sampling op as an option in the ssd_meta_arch
      
      --
      207286221  by Zhichao Lu:
      
          Adding an option to weight regression loss with foreground scores from the ground truth labels.
      
      --
      207231739  by Zhichao Lu:
      
          Explicitly mentioning the argument names when calling the batch target assigner.
      
      --
      207206356  by Zhichao Lu:
      
          Add include_trainable_variables field to train config to better handle trainable variables.
      
      --
      207135930  by Zhichao Lu:
      
          Internal change.
      
      --
      206862541  by Zhichao Lu:
      
          Do not unpad the outputs from batch_non_max_suppression before sampling.
      
          Since BalancedPositiveNegativeSampler takes an indicator for valid positions to sample from we can pass the output from NMS directly into Sampler.
      
      --
      
      PiperOrigin-RevId: 207771702
      
      * Remove unused doc.
      59f7e80a
  6. 02 Jul, 2018 1 commit
    • pkulzc's avatar
      Open Images Challenge 2018 tools, minor fixes and refactors. (#4661) · 32e7d660
      pkulzc authored
      * Merged commit includes the following changes:
      202804536  by Zhichao Lu:
      
          Return tf.data.Dataset from input_fn that goes into the estimator and use PER_HOST_V2 option for tpu input pipeline config.
      
          This change shaves off 100ms per step resulting in 25 minutes of total reduced training time for ssd mobilenet v1 (15k steps to convergence).
      
      --
      202769340  by Zhichao Lu:
      
          Adding as_matrix() transformation for image-level labels.
      
      --
      202768721  by Zhichao Lu:
      
          Challenge evaluation protocol modification: adding labelmaps creation.
      
      --
      202750966  by Zhichao Lu:
      
          Add the explicit names to two output nodes.
      
      --
      202732783  by Zhichao Lu:
      
          Enforcing that batch size is 1 for evaluation, and no original images are retained during evaluation when use_tpu=False (to avoid dynamic shapes).
      
      --
      202425430  by Zhichao Lu:
      
          Refactor input pipeline to improve performance.
      
      --
      202406389  by Zhichao Lu:
      
          Only check the validity of `warmup_learning_rate` if it will be used.
      
      --
      202330450  by Zhichao Lu:
      
          Adding the description of the flag input_image_label_annotations_csv to add
            image-level labels to tf.Example.
      
      --
      202029012  by Zhichao Lu:
      
          Enabling displaying relationship name in the final metrics output.
      
      --
      202024010  by Zhichao Lu:
      
          Update to the public README.
      
      --
      201999677  by Zhichao Lu:
      
          Fixing the way negative labels are handled in VRD evaluation.
      
      --
      201962313  by Zhichao Lu:
      
          Fix a bug in resize_to_range.
      
      --
      201808488  by Zhichao Lu:
      
          Update ssd_inception_v2_pets.config to use right filename of pets dataset tf records.
      
      --
      201779225  by Zhichao Lu:
      
          Update object detection API installation doc
      
      --
      201766518  by Zhichao Lu:
      
          Add shell script to create pycocotools package for CMLE.
      
      --
      201722377  by Zhichao Lu:
      
          Removes verified_labels field and uses groundtruth_image_classes field instead.
      
      --
      201616819  by Zhichao Lu:
      
          Disable eval_on_tpu since eval_metrics is not setup to execute on TPU.
          Do not use run_config.task_type to switch tpu mode for EVAL,
          since that won't work in unit test.
          Expand unit test to verify that the same instantiation of the Estimator can independently disable eval on TPU whereas training is enabled on TPU.
      
      --
      201524716  by Zhichao Lu:
      
          Disable export model to TPU, inference is not compatible with TPU.
          Add GOOGLE_INTERNAL support in object detection copy.bara.sky
      
      --
      201453347  by Zhichao Lu:
      
          Fixing bug when evaluating the quantized model.
      
      --
      200795826  by Zhichao Lu:
      
          Fixing parsing bug: image-level labels are parsed as tuples instead of numpy
          array.
      
      --
      200746134  by Zhichao Lu:
      
          Adding image_class_text and image_class_label fields into tf_example_decoder.py
      
      --
      200743003  by Zhichao Lu:
      
          Changes to model_main.py and model_tpu_main to enable training and continuous eval.
      
      --
      200736324  by Zhichao Lu:
      
          Replace deprecated squeeze_dims argument.
      
      --
      200730072  by Zhichao Lu:
      
          Make detections only during predict and eval mode while creating model function
      
      --
      200729699  by Zhichao Lu:
      
          Minor correction to internal documentation (definition of Huber loss)
      
      --
      200727142  by Zhichao Lu:
      
          Add command line parsing as a set of flags using argparse and add header to the
          resulting file.
      
      --
      200726169  by Zhichao Lu:
      
          A tutorial on running evaluation for the Open Images Challenge 2018.
      
      --
      200665093  by Zhichao Lu:
      
          Cleanup on variables_helper_test.py.
      
      --
      200652145  by Zhichao Lu:
      
          Add an option to write (non-frozen) graph when exporting inference graph.
      
      --
      200573810  by Zhichao Lu:
      
          Update ssd_mobilenet_v1_coco and ssd_inception_v2_coco download links to point to a newer version.
      
      --
      200498014  by Zhichao Lu:
      
          Add test for groundtruth mask resizing.
      
      --
      200453245  by Zhichao Lu:
      
          Cleaning up exporting_models.md along with exporting scripts
      
      --
      200311747  by Zhichao Lu:
      
          Resize groundtruth mask to match the size of the original image.
      
      --
      200287269  by Zhichao Lu:
      
          Having a option to use custom MatMul based crop_and_resize op as an alternate to the TF op in Faster-RCNN
      
      --
      200127859  by Zhichao Lu:
      
          Updating the instructions to run locally with new binary. Also updating pets configs since file path naming has changed.
      
      --
      200127044  by Zhichao Lu:
      
          A simpler evaluation util to compute Open Images Challenge
          2018 metric (object detection track).
      
      --
      200124019  by Zhichao Lu:
      
          Freshening up configuring_jobs.md
      
      --
      200086825  by Zhichao Lu:
      
          Make merge_multiple_label_boxes work for ssd model.
      
      --
      199843258  by Zhichao Lu:
      
          Allows inconsistent feature channels to be compatible with WeightSharedConvolutionalBoxPredictor.
      
      --
      199676082  by Zhichao Lu:
      
          Enable an override for `InputReader.shuffle` for object detection pipelines.
      
      --
      199599212  by Zhichao Lu:
      
          Markdown fixes.
      
      --
      199535432  by Zhichao Lu:
      
          Pass num_additional_channels to tf.example decoder in predict_input_fn.
      
      --
      199399439  by Zhichao Lu:
      
          Adding `num_additional_channels` field to specify how many additional channels to use in the model.
      
      --
      
      PiperOrigin-RevId: 202804536
      
      * Add original model builder and docs back.
      32e7d660
  7. 11 May, 2018 1 commit
    • Zhichao Lu's avatar
      Merged commit includes the following changes: · 324d6dc3
      Zhichao Lu authored
      196161788  by Zhichao Lu:
      
          Add eval_on_train_steps parameter.
      
          Since the number of samples in train dataset is usually different to the number of samples in the eval dataset.
      
      --
      196151742  by Zhichao Lu:
      
          Add an optional random sampling process for SSD meta arch and update mean stddev coder to use default std dev when corresponding tensor is not added to boxlist field.
      
      --
      196148940  by Zhichao Lu:
      
          Release ssdlite mobilenet v2 coco trained model.
      
      --
      196058528  by Zhichao Lu:
      
          Apply FPN feature map generation before we add additional layers on top of resnet feature extractor.
      
      --
      195818367  by Zhichao Lu:
      
          Add support for exporting detection keypoints.
      
      --
      195745420  by Zhichao Lu:
      
          Introduce include_metrics_per_category option to Object Detection eval_config.
      
      --
      195734733  by Zhichao Lu:
      
          Rename SSDLite config to be more explicit.
      
      --
      195717383  by Zhichao Lu:
      
          Add quantized training to object_detection.
      
      --
      195683542  by Zhichao Lu:
      
          Fix documentation for the interaction of fine_tune_checkpoint_type and load_all_detection_checkpoint_vars interaction.
      
      --
      195668233  by Zhichao Lu:
      
          Using batch size from params dictionary if present.
      
      --
      195570173  by Zhichao Lu:
      
          A few fixes to get new estimator API eval to match legacy detection eval binary by (1) plumbing `is_crowd` annotations through to COCO evaluator, (2) setting the `sloppy` flag in tf.contrib.data.parallel_interleave based on whether shuffling is enabled, and (3) saving the original image instead of the resized original image, which allows for small/medium/large mAP metrics to be properly computed.
      
      --
      195316756  by Zhichao Lu:
      
          Internal change
      
      --
      
      PiperOrigin-RevId: 196161788
      324d6dc3
  8. 13 Apr, 2018 2 commits
  9. 03 Apr, 2018 1 commit
  10. 10 Feb, 2018 1 commit
    • Zhichao Lu's avatar
      Merged commit includes the following changes: · 1efe98bb
      Zhichao Lu authored
      185215255  by Zhichao Lu:
      
          Stop populating image/object/class/text field when generating COCO tf record.
      
      --
      185213306  by Zhichao Lu:
      
          Use the params batch size and not the one from train_config in input_fn
      
      --
      185209081  by Zhichao Lu:
      
          Handle the case when there are no ground-truth masks for an image.
      
      --
      185195531  by Zhichao Lu:
      
          Remove unstack and stack operations on features from third_party/object_detection/model.py.
      
      --
      185195017  by Zhichao Lu:
      
          Matrix multiplication based gather op implementation.
      
      --
      185187744  by Zhichao Lu:
      
          Fix eval_util minor issue.
      
      --
      185098733  by Zhichao Lu:
      
          Internal change
      
      185076656  by Zhichao Lu:
      
          Increment the amount of boxes for coco17.
      
      --
      185074199  by Zhichao Lu:
      
          Add config for SSD Resnet50 v1 with FPN.
      
      --
      185060199  by Zhichao Lu:
      
          Fix a bug in clear_detections.
          This method set detection_keys to an empty dictionary instead of an empty set. I've refactored so that this method and the constructor use the same code path.
      
      --
      185031359  by Zhichao Lu:
      
          Eval TPU trained models continuously.
      
      --
      185016591  by Zhichao Lu:
      
          Use TPUEstimatorSpec for TPU
      
      --
      185013651  by Zhichao Lu:
      
          Add PreprocessorCache to record and duplicate augmentations.
      
      --
      184921763  by Zhichao Lu:
      
          Minor fixes for object detection.
      
      --
      184920610  by Zhichao Lu:
      
          Adds a model builder test for "embedded_ssd_mobilenet_v1" feature extractor.
      
      --
      184919284  by Zhichao Lu:
      
          Added unit tests for TPU, with optional training / eval.
      
      --
      184915910  by Zhichao Lu:
      
          Update third_party g3 doc with Mask RCNN detection models.
      
      --
      184914085  by Zhichao Lu:
      
          Slight change to WeightSharedConvolutionalBoxPredictor implementation to make things match more closely with RetinaNet.  Specifically we now construct the box encoding and class predictor towers separately rather than having them share weights until penultimate layer.
      
      --
      184913786  by Zhichao Lu:
      
          Plumbs SSD Resnet V1 with FPN models into model builder.
      
      --
      184910030  by Zhichao Lu:
      
          Add coco metrics to evaluator.
      
      --
      184897758  by Zhichao Lu:
      
          Merge changes from github.
      
      --
      184888736  by Zhichao Lu:
      
          Ensure groundtruth_weights are always 1-D.
      
      --
      184887256  by Zhichao Lu:
      
          Introduce an option to add summaries in the model so it can be turned off when necessary.
      
      --
      184865559  by Zhichao Lu:
      
          Updating inputs so that a dictionary of tensors is returned from input_fn. Moving unbatch/unpad to model.py.
          Also removing source_id key from features dictionary, and replacing with an integer hash.
      
      --
      184859205  by Zhichao Lu:
      
          This CL is trying to hide those differences by making the default settings work with the public code.
      
      --
      184769779  by Zhichao Lu:
      
          Pass groundtruth weights into ssd meta architecture all the way to target assigner.
      
          This will allow training ssd models with padded groundtruth tensors.
      
      --
      184767117  by Zhichao Lu:
      
          * Add `params` arg to make all input fns work with TPUEstimator
          * Add --master
          * Output eval results
      
      --
      184766244  by Zhichao Lu:
      
          Update create_coco_tf_record to include category indices
      
      --
      184752937  by Zhichao Lu:
      
          Create a third_party version of TPU compatible mobilenet_v2_focal_loss coco config.
      
      --
      184750174  by Zhichao Lu:
      
          A few small fixes for multiscale anchor generator and a test.
      
      --
      184746581  by Zhichao Lu:
      
          Update jupyter notebook to show mask if provided by model.
      
      --
      184728646  by Zhichao Lu:
      
          Adding a few more tests to make sure decoding with/without label maps performs as expected.
      
      --
      184624154  by Zhichao Lu:
      
          Add an object detection binary for TPU.
      
      --
      184622118  by Zhichao Lu:
      
          Batch, transform, and unbatch in the tflearn interface.
      
      --
      184595064  by Zhichao Lu:
      
          Add support for training grayscale models.
      
      --
      184532026  by Zhichao Lu:
      
          Change dataset_builder.build to perform optional batching using tf.data.Dataset API
      
      --
      184330239  by Zhichao Lu:
      
          Add augment_input_data and transform_input_data helper functions to third_party/tensorflow_models/object_detection/inputs.py
      
      --
      184328681  by Zhichao Lu:
      
          Use an internal rgb to gray method that can be quantized.
      
      --
      184327909  by Zhichao Lu:
      
          Helper function to return padding shapes to use with Dataset.padded_batch.
      
      --
      184326291  by Zhichao Lu:
      
          Added decode_func for specialized decoding.
      
      --
      184314676  by Zhichao Lu:
      
          Add unstack_batch method to inputs.py.
      
          This will enable us to convert batched tensors to lists of tensors. This is compatible with OD API that consumes groundtruth batch as a list of tensors.
      
      --
      184281269  by Zhichao Lu:
      
          Internal test target changes.
      
      --
      184192851  by Zhichao Lu:
      
          Adding `Estimator` interface for object detection.
      
      --
      184187885  by Zhichao Lu:
      
          Add config_util functions to help with input pipeline.
      
          1. function to return expected shapes from the resizer config
          2. function to extract image_resizer_config from model_config.
      
      --
      184139892  by Zhichao Lu:
      
          Adding support for depthwise SSD (ssd-lite) and depthwise box predictions.
      
      --
      184089891  by Zhichao Lu:
      
          Fix third_party faster rcnn resnet101 coco config.
      
      --
      184083378  by Zhichao Lu:
      
          In the case when there is no object/weights field in tf.Example proto, return a default weight of 1.0 for all boxes.
      
      --
      
      PiperOrigin-RevId: 185215255
      1efe98bb