# 使用 TensorFlow Object Detection API 进行实时目标检测(基于 SSD 模型)
## 实验目的
使用 TensorFlow Object Detection API 进行实时目标检测(基于 SSD 模型)
任务列表:
- 行人识别
- 人脸识别
- 交通灯识别
- 实时检测(平均 FPS>15)
- 使用 tflite 将模型移植到嵌入式设备
## 目录结构
为了先对工程有个整体性的了解,故将此项目的目录结构列出如下:
```bash
Object-Detection-USTC
├── object_detection
│ ├── data # 存放数据
│ │ ├── mscoco_label_map.pbtxt # 预训练模型(coco数据集)的Label Maps
│ │ ├── pascal_label_map.pbtxt # 数据集2的Label Maps
│ │ ├── pascal_train.record # 数据集2生成的tfrecord格式的训练集
│ │ ├── pascal_val.record # 数据集2生成的tfrecord格式的验证集
│ │ ├── PennFudanPed # 数据集1(Penn-Fudan Database)
│ │ ├── PennFudanPed_label_map.pbtxt # 数据集1的Label Maps
│ │ ├── PennFudanPed_train.record # 数据集1生成的tfrecord格式的训练集
│ │ ├── PennFudanPed_val.record # 数据集1生成的tfrecord格式的验证集
│ │ └── VOC2007 # 数据集2
│ ├── dataset_tools # 数据集格式转换工具
│ │ ├── create_pascal_tf_record.py # 用于将本实验中的数据集2转换成tfrecord格式的脚本
│ │ └── ...# 用于将其他数据集转换成tfrecord格式的脚本文件
│ ├── legacy
│ │ ├── train.py # 用于训练我们自己的模型
│ │ └── ...
│ ├── ssd_mobilenet # 模型相关
│ │ ├── faster_rcnn_inception_v2_coco_2018_01_28 # 预训练模型1
│ │ ├── ssd_mobilenet_v1_coco_11_06_2017 # 预训练模型2
│ │ ├── ssd_mobilenet_v1_coco_2018_01_28 # 预训练模型3
│ │ ├── ssd_mobilenet_v2_coco_2018_03_29 # 预训练模型4(最终选用)
│ │ ├── output_inference_graph # 导出的我们自己训练的模型
│ │ ├── pipeline_ssd_mobilenet_v2_coco_2018_03_29.config # 管道配置文件
│ │ └── train_logs # 训练过程中产生的记录
│ │ ├── graph.pbtxt
│ │ ├── model.ckpt-1000.data-00000-of-00001
│ │ ├── model.ckpt-1000.index
│ │ ├── model.ckpt-1000.meta
│ │ └── ...
│ ├── export_inference_graph.py # 用于导出我们自己训练的模型的py脚本
│ ├── export_tflite_ssd_graph.py # 用于导出tflite压缩图的py脚本
│ └── ... # 其他文件略去
├── object_detection_video.py # 用于实时视频检测
├── utils # 实时视频检测时用到的两个库文件
│ ├── app_utils.py
│ └── test_app_utils.py
├── slim # 环境依赖
├── tflite # tflite产生的文件
│ ├── tflite_graph.pb
│ └── tflite_graph.pbtxt
├── create_pascal_tfrecord.sh # 用于将数据集2转换成tfrecord格式的shell脚本
├── train.sh # 用于执行训练命令的shell脚本
├── export_model.sh # 用于导出我们自己训练的模型的shell脚本
├── create_PennFudanPed_tfrecord.py # 将数据集1转换成tfrecord格式的py脚本
├── export_tflite_ssd_graph.sh # 用于导出tflite压缩图的shell脚本
└── video # 测试视频
└── 2.mp4
```
## 实验环境安装
### 下载 Tensorflow 对象检测 API
`Tensorflow/models` 的 GitHub 地址:[https://github.com/tensorflow/models](https://github.com/tensorflow/models)
对象检测 API 的目录:`tensorflow/models/research/object_detection`
通过以下命令将其克隆到本地工作目录
```
git clone https://github.com/tensorflow/models.git
```
### 安装依赖库
本次实验使用的是 TensorFlow Object Detection API,根据官方文档介绍,需要安装以下库:
- Protobuf 3.0.0
- Python-tk
- Pillow 1.0
- lxml
- tf Slim (which is included in the “tensorflow/models/research/“ checkout)
- Jupyter notebook
- Matplotlib
- Tensorflow (>=1.9.0)
- Cython
- contextlib2
- cocoapi
其中,关于 Tensorflow 的详细安装步骤,可以按照 [Tensorflow 官方安装说明](https://www.tensorflow.org/install/)进行操作。一般安装好 python 之后可以使用以下命令之一安装 Tensorflow:
```
# CPU版本
pip install tensorflow
# GPU版本
pip install tensorflow-gpu
```
> 安装 GPU 版本的 tensorflow 可以参考[这篇文章](http://cjh.zone/2018/11/28/ubuntu16-04%E5%AE%89%E8%A3%85TensorFlow-GPU/)
其余的库可以通过 `apt-get` 安装在 `Ubuntu 16.04` 上:
```
sudo apt-get install protobuf-compiler python-pil python-lxml python-tk
pip install --user Cython
pip install --user contextlib2
pip install --user jupyter
pip install --user matplotlib
```
> pip 默认将 Python 包安装到系统目录(例如 `/usr/local/lib/python3.6`),这需要 root 访问权限。
>
> `--user` 选项的意思是:在你的主目录中创建 pip 安装包,而不需要任何特殊权限。
或者,你也可以使用 pip 安装依赖项:
```
pip install --user Cython
pip install --user contextlib2
pip install --user pillow
pip install --user lxml
pip install --user jupyter
pip install --user matplotlib
```
### Protobuf 编译
Tensorflow 对象检测 API 使用 Protobufs 配置模型和训练参数。在使用框架之前,必须编译 Protobuf 库,可以通过在目录 `tensorflow/models/research/` 运行以下命令来完成:
```
# From tensorflow/models/research/
protoc object_detection/protos/*.proto --python_out=.
```
> 如果在编译时遇到错误,则可能使用的是不兼容的 Protobuf 编译器。如果是这种情况,可以使用手动安装来解决。
### 手动 Protobuf 编译器安装和使用
**如果你使用的是 Linux:**
下载并安装 protoc 的 3.0 版本,然后解压缩该文件。在目录 `tensorflow/models/research/` 运行以下命令:
```
# From tensorflow/models/research/
wget -O protobuf.zip https://github.com/google/protobuf/releases/download/v3.0.0/protoc-3.0.0-linux-x86_64.zip
unzip protobuf.zip
```
再次运行编译过程,但使用刚才我们自己下载的 protoc 版本,在目录 `tensorflow/models/research/` 运行以下命令:
```
# From tensorflow/models/research/
./bin/protoc object_detection/protos/*.proto --python_out=.
```
> MacOS 可以参考[这个链接](https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/installation.md#manual-protobuf-compiler-installation-and-usage)
### 将库添加到 PYTHONPATH
在本地运行时,`tensorflow/models/research/` 和 `tensorflow/models/research/slim` 目录需要添加到 PYTHONPATH,可以通过在目录 `tensorflow/models/research/` 运行以下命令来完成:
```
# From tensorflow/models/research/
export PYTHONPATH=$PYTHONPATH:`pwd`:`pwd`/slim
```
> 每次运行新终端时,都要重新输入此命令,如果希望避免繁琐的操作,可以将其作为新行追加到 `~/ .bashrc` 文件的末尾,将“pwd”替换此项目目录的绝对路径。
### 测试安装
到现在所有的环境配置就完成了,可以通过运行以下命令来测试是否已正确安装 Tensorflow Object Detection API:
```
python object_detection/builders/model_builder_test.py
```
如果出现下面的结果就表示安装成功:
![](https://www.writebug.com/myres/static/uploads/2022/1/9/71a34d30aaf99113c04f491db212d871.writebug)
### 建立自己的工作空间
因为 `tensorflow/models/*` 里面有太多其他的模块了,我们这次实验只需要用到其中的 `tensorflow/models/research/object_detection`,所以在环境搭建好之后我们建立一个自己的项目文件夹,让整个工程更简洁。
首先新建文件夹 `Object-Detection-USTC`,然后将刚才目录 `tensorflow/models/research/` 中的 `object_detection` 文件夹和 `slim` 文件夹分别复制一份到 `Object-Detection-USTC` 文件�
没有合适的资源?快使用搜索试试~ 我知道了~
使用 TensorFlow Object Detection API 进行实时目标检测
共712个文件
py:392个
pyc:171个
config:47个
需积分: 0 4 下载量 160 浏览量
2023-02-08
17:26:49
上传
评论 2
收藏 16.15MB RAR 举报
温馨提示
使用 TensorFlow Object Detection API 进行实时目标检测(基于 SSD 模型)
资源推荐
资源详情
资源评论
收起资源包目录
使用 TensorFlow Object Detection API 进行实时目标检测 (712个子文件)
BUILD 14KB
facessd_mobilenet_v2_quantized_320x320_open_image_v4.config 5KB
ssd_mobilenet_v2_quantized_300x300_coco.config 5KB
ssdlite_mobilenet_v2_coco.config 5KB
ssdlite_mobilenet_v1_coco.config 5KB
ssd_mobilenet_v2_coco.config 5KB
ssd_mobilenet_v1_coco.config 5KB
ssd_mobilenet_v1_pets.config 5KB
ssd_inception_v2_coco.config 5KB
ssd_inception_v2_pets.config 5KB
ssd_mobilenet_v1_0.75_depth_quantized_300x300_pets_sync.config 4KB
ssd_inception_v3_pets.config 4KB
ssd_mobilenet_v1_focal_loss_pets.config 4KB
ssd_mobilenet_v1_0.75_depth_300x300_coco14_sync.config 4KB
ssd_resnet50_v1_fpn_shared_box_predictor_640x640_coco14_sync.config 4KB
ssd_mobilenet_v1_0.75_depth_quantized_300x300_coco14_sync.config 4KB
ssd_mobilenet_v1_quantized_300x300_coco14_sync.config 4KB
ssd_mobilenet_v1_300x300_coco14_sync.config 4KB
ssd_mobilenet_v1_fpn_shared_box_predictor_640x640_coco14_sync.config 4KB
pipeline_ssd_mobilenet_v2_coco_2018_03_29.config 4KB
mask_rcnn_inception_resnet_v2_atrous_coco.config 4KB
mask_rcnn_resnet101_atrous_coco.config 4KB
mask_rcnn_resnet50_atrous_coco.config 4KB
mask_rcnn_inception_v2_coco.config 4KB
ssd_mobilenet_v1_ppn_shared_box_predictor_300x300_coco14_sync.config 4KB
embedded_ssd_mobilenet_v1_coco.config 4KB
mask_rcnn_resnet101_pets.config 4KB
faster_rcnn_nas_coco.config 4KB
faster_rcnn_inception_resnet_v2_atrous_oid.config 4KB
faster_rcnn_inception_resnet_v2_atrous_coco.config 4KB
faster_rcnn_inception_resnet_v2_atrous_pets.config 4KB
faster_rcnn_inception_v2_coco.config 4KB
faster_rcnn_resnet152_coco.config 4KB
faster_rcnn_resnet50_coco.config 4KB
faster_rcnn_resnet50_pets.config 4KB
faster_rcnn_resnet101_pets.config 4KB
faster_rcnn_inception_v2_pets.config 4KB
faster_rcnn_resnet152_pets.config 4KB
rfcn_resnet101_coco.config 4KB
rfcn_resnet101_pets.config 4KB
faster_rcnn_resnet101_kitti.config 3KB
faster_rcnn_resnet101_atrous_coco.config 3KB
faster_rcnn_inception_resnet_v2_atrous_cosine_lr_coco.config 3KB
faster_rcnn_resnet101_coco.config 3KB
faster_rcnn_resnet101_ava_v2.1.config 3KB
faster_rcnn_resnet101_fgvc.config 3KB
faster_rcnn_resnet50_fgvc.config 3KB
faster_rcnn_resnet101_voc07.config 3KB
Dockerfile 6KB
mobilenet_example.ipynb 168KB
slim_walkthrough.ipynb 45KB
kites_detections_output.jpg 377KB
dogs_detections_output.jpg 364KB
oid_monkey_3b4168c89cecbc5b.jpg 275KB
oid_bus_72e19c28aac34ed8.jpg 243KB
example_cat.jpg 238KB
LICENSE 1KB
README.md 52KB
README.md 26KB
running_pets.md 13KB
detection_model_zoo.md 12KB
README.md 12KB
oid_inference_and_evaluation.md 11KB
mobilenet_v1.md 9KB
running_on_mobile_tensorflowlite.md 8KB
challenge_evaluation.md 8KB
using_your_own_dataset.md 7KB
evaluation_protocols.md 7KB
defining_your_own_model.md 7KB
running_on_cloud.md 7KB
tpu_compatibility.md 7KB
configuring_jobs.md 6KB
README.md 5KB
instance_segmentation.md 5KB
installation.md 4KB
README.md 3KB
README.md 3KB
preparing_inputs.md 2KB
running_locally.md 2KB
exporting_models.md 1KB
faq.md 1KB
CONTRIBUTING.md 765B
running_notebook.md 561B
mscoco_label_map.pbtxt 5KB
pascal_label_map.pbtxt 248B
PennFudanPed_label_map.pbtxt 34B
PennFudanPed 55B
kites_with_segment_overlay.png 6.83MB
dataset_explorer.png 4.22MB
oxford_pet.png 270KB
nongroupof_case_eval.png 259KB
groupof_case_eval.png 237KB
tensorboard2.png 231KB
tf-od-api-logo.png 196KB
madds_top1_accuracy.png 100KB
mobilenet_v1.png 99KB
tensorboard.png 77KB
mnet_v1_vs_v2_pixel1_latency.png 62KB
preprocessor.proto 16KB
ssd.proto 9KB
共 712 条
- 1
- 2
- 3
- 4
- 5
- 6
- 8
资源评论
程序员奇奇
- 粉丝: 3w+
- 资源: 295
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功