TensorFlow models/object_detection使用说明

1、下载安装

  1. cd xxx/models/research/
  2. python setup.py intsall
  3. cd xxx/models/research/slim/
  4. python setup.py install
  5. pip install --user package # 代表仅该用户的安装,安装后仅该用户可用
  6. pip install package # 代表进行全局安装,安装后全局可用

修改xxx/models/research/object_detection/protos/路径下源文件时需要执行protoc才可产生效。

2、 配置object_detection训练pipeline

配置文件路径xxx/models/research/object_detection/samples/configs/

Step1: Preparing Inputs

Generating the dataset label map file.

如:xxx/models/research/object_detection/data/person_coco.pbtxtxxx/models/research/object_detection/data/person_voc.pbtxt

Generating the AI TFRecord files.
  1. ## voc style
  2. python models/research/object_detection/dataset_tools/create_ai_tf_record_voc.py
  3. --output_path /workspace/codes/models/research/object_detection/data/val_dataset_voc.record
  4. --annotations_file /workspace/datasets/ai_challenger/ai_challenger_keypoint_validation_20170911/keypoint_validation_annotations_20170911.json
  5. --image_dir /workspace/datasets/ai_challenger/ai_challenger_keypoint_validation_20170911/keypoint_validation_images_20170911/
  6. python models/research/object_detection/dataset_tools/create_ai_tf_record_voc.py
  7. --output_path /workspace/codes/models/research/object_detection/data/train_dataset_voc.record
  8. --annotations_file /workspace/datasets/ai_challenger/ai_challenger_keypoint_train_20170909/keypoint_train_annotations_20170909.json
  9. --image_dir /workspace/datasets/ai_challenger/ai_challenger_keypoint_train_20170909/keypoint_train_images_20170902/
  10. ## coco style
  11. python models/research/object_detection/dataset_tools/create_ai_tf_record_coco.py
  12. --output_path /workspace/codes/models/research/object_detection/data/val_dataset_coco.record
  13. --annotations_file /workspace/datasets/ai_challenger/ai_challenger_keypoint_validation_20170911/keypoint_validation_annotations_20170911.json
  14. --image_dir /workspace/datasets/ai_challenger/ai_challenger_keypoint_validation_20170911/keypoint_validation_images_20170911/
  15. python models/research/object_detection/dataset_tools/create_ai_tf_record_coco.py
  16. --output_path /workspace/codes/models/research/object_detection/data/train_dataset_coco.record
  17. --annotations_file /workspace/datasets/ai_challenger/ai_challenger_keypoint_train_20170909/keypoint_train_annotations_20170909.json
  18. --image_dir /workspace/datasets/ai_challenger/ai_challenger_keypoint_train_20170909/keypoint_train_images_20170902/

Step2: Runing Locally

https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/running_locally.md

Step3: 训练与量化训练

可能仅需要更改配置文件。

Step4: Exporting a trained model for inference

Step5: Running on mobile with TensorFlow Lite(量化的

Step6: Pb to tflite

  1. ## env: 1.12.3
  2. # 命令行
  3. Model: Frozen Graph(.pb)、SavedModel
  4. Model Format: FLOATQUANTIZED_UINT8
  5. Input Format: FLOATQUANTIZED_UINT8
  6. post_training_quantize:
  7. # api
  8. ## env: 1.15.2
  9. # 命令行
  10. Model: Frozen Graph(.pb)、SavedModel
  11. Model Format: FLOATQUANTIZED_UINT8
  12. Input Format: FLOATQUANTIZED_UINT8
  13. post_training_quantize: quantize_to_float16
  14. # api
  15. ## env: 2.1.0
  16. # 命令行
  17. Model: SavedModel
  18. # api
  19. Model: SavedModel
  20. Model Format: int8flot32flot16

3、Inference

  1. ## infer代码
  2. python inference/infer_detections.py
  3. --input_tfrecord_paths=../object_detection/data/val_dataset_coco.record
  4. --output_tfrecord_path=val_dataset_coco_detectionss.tfrecord
  5. --inference_graph=../object_detection/test_ckpt/ssd_mv1/frozen_inference_graph.pb
  6. or
  7. python inference/infer_pb.py # include pipeline

4、Eval

  1. ## ckpt模型eval流程(训练时候用的)
  2. python /legacy/eval.py
  3. --logtostderr
  4. --checkpoint_dir=../test_ckpt/ssd_mobilenet_v1_coco_2018_01_28/model.ckpt
  5. --eval_dir=./
  6. --pipeline_config_path=../test_ckpt/ssd_mobilenet_v1_coco_2018_01_28/pipeline.config
  7. ## pb模型eval流程
  8. python inference/infer_detections.py
  9. --input_tfrecord_paths=../object_detection/data/val_dataset_coco.record
  10. --output_tfrecord_path=val_dataset_coco_detectionss.tfrecord
  11. --inference_graph=../object_detection/test_ckpt/ssd_mv1/frozen_inference_graph.pb
  12. ## 修改validation_eval_metrics/validation_eval_config.pbtxt文件 (eval格式选择:coco or voc)
  13. metrics_set: 'coco_detection_metrics'
  14. ## 修改validation_eval_metrics/validation_input_config.pbtxt文件 (标签文件:xx.pbtxt; 输出的tfrecord文件)
  15. label_map_path: '/workspace/codes/models/research/object_detection/data/person_coco.pbtxt'
  16. tf_record_input_reader: { input_path: '/workspace/codes/models/research/ai/val_dataset_coco_detectionss_3464.tfrecord' }
  17. SPLIT=validation
  18. PYTHONPATH=$PYTHONPATH:$(readlink -f ..) \
  19. python ../object_detection/metrics/offline_eval_map_corloc.py
  20. --eval_dir=${SPLIT}_eval_metrics \
  21. --eval_config_path=${SPLIT}_eval_metrics/${SPLIT}_eval_config.pbtxt \
  22. --input_config_path=${SPLIT}_eval_metrics/${SPLIT}_input_config.pbtxt