能否在TensorFlow Object Detection API中使用Inception v3模型及配置方法
替换为Inception v3模型的可行性及配置修改指南
当然可行!不过得先澄清一个关键点:你之前用的ssd_mobilenet_v1_coco_11_06_2017是专门的目标检测模型,但原生Inception v3本身是图像分类模型——直接拿来做目标检测肯定不行,得用基于Inception v3的目标检测变体,比如faster_rcnn_inception_v3_coco这类预训练模型,这些是官方已经适配好目标检测任务的。
下面是具体的操作步骤:
一、找到适配的预训练模型
- 去TensorFlow官方的Model Zoo里找基于Inception v3的目标检测预训练模型,比如
faster_rcnn_inception_v3_coco_2018_01_28这类(这类模型是把Inception v3作为特征提取器,搭配Faster R-CNN检测头实现目标检测) - 下载对应的模型压缩包,解压后会得到三个核心部分:
frozen_inference_graph.pb(直接推理用)、model.ckpt系列文件(用于微调训练),以及配套的配置文件模板。
二、修改配置文件
1. 获取配置模板
在TensorFlow Object Detection API的models/research/object_detection/samples/configs目录下,能找到对应模型的配置文件模板,比如faster_rcnn_inception_v3_coco.config,把它复制到你的工作目录里进行修改。
2. 关键参数修改
- 预训练模型路径:找到
fine_tune_checkpoint字段,把它改成你解压后的model.ckpt的完整路径,比如:fine_tune_checkpoint: "/home/your_user/models/faster_rcnn_inception_v3_coco_2018_01_28/model.ckpt" - 数据路径配置:更新
train_input_reader和eval_input_reader里的input_path和label_map_path,指向你自己的TFRecord训练/测试文件和标签映射文件,示例如下:train_input_reader: { tf_record_input_reader { input_path: "/home/your_user/dataset/train.record" } label_map_path: "/home/your_user/dataset/label_map.pbtxt" } - 类别数量:找到
num_classes字段,改成你自己数据集的类别总数,比如你要检测5类物体,就设置num_classes: 5 - 训练步数:根据你的数据集大小和需求调整
num_steps,比如从默认的200000改成50000(小数据集不用训那么久)
3. 推理场景的简化操作
如果只是想用预训练模型做推理,不需要微调训练,那直接把之前脚本里的模型路径换成Inception v3变体的frozen_inference_graph.pb即可,不用修改训练配置文件。
三、验证运行
- 要是做微调训练,用修改后的配置文件启动训练脚本,比如(TF2版本的命令):
python model_main_tf2.py --model_dir=./my_training_dir --pipeline_config_path=./faster_rcnn_inception_v3_coco.config - 要是做推理,替换脚本里的模型路径后运行,检查检测结果是否正常即可。
内容的提问来源于stack exchange,提问作者Chamod Pathirana
相关产品推荐
相关产品推荐

