1、前言
本篇介绍2个预训练模型,使用测试程序object_detection_tutorial.ipynb进行实体检测。
上一篇:1.安装跑测试程序 https://blog.csdn.net/bjjoy2009/article/details/94911597
2、模型下载
(1)预训练模型列表(需要vpn连接google下载)https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/detection_model_zoo.md
(2)下载压缩包
ssd_mobilenet_v1_coco,90类日常物体,100多M,具体类目标签https://github.com/tensorflow/models/blob/master/research/object_detection/data/mscoco_label_map.pbtxt
faster_rcnn_resnet101_fgvc,2800多个动物种类,近1G,具体类目标签https://github.com/tensorflow/models/blob/master/research/object_detection/data/fgvc_2854_classes_label_map.pbtxt
(3)上述模型压缩包放到本地,上一章 git clone的项目路径models/research/object_detection
3、运行测试程序
3.1 ssd_mobilenet_v1_coco
该模型就是测试程序的默认模型,测试程序如下https://github.com/tensorflow/models/blob/master/research/object_detection/object_detection_tutorial.ipynb
(1)修改模型加载路径,根据下载压缩包名修改
# 此行改为下载的模型名称
MODEL_NAME = 'ssd_mobilenet_v1_coco_2017_11_17'
(2)注释掉下面2行,已经下载无需再执行下载程序
# opener = urllib.request.URLopener()
# opener.retrieve(DOWNLOAD_BASE + MODEL_FILE, MODEL_FILE)
(3)直接运行可以看到的结果
3.2 faster_rcnn_resnet101_fgvc
详细动物种类识别,这部分需要自行下载动物图片
(1)修改文件名和注释掉那两行代码
# 此行改为下载的模型名称
MODEL_NAME = 'faster_rcnn_resnet101_fgvc_2018_07_19'
(2)下载2个动物图片放到object_detection/test_images
动物image5.jpg:Rynchops niger
动物image6.jpg:Lynx rufus
(3)修改测试图片代码
将range(1, 3)改为range(5, 7)
TEST_IMAGE_PATHS = [ os.path.join(PATH_TO_TEST_IMAGES_DIR, 'image{}.jpg'.format(i)) for i in range(5, 7) ]
4、测试结果
模型较大需要多运行一会
(1)图片结果
(2)类别标签id(图片内名字看不太清楚)
在代码中加入一行输出(print)
# Actual detection.
output_dict = run_inference_for_single_image(image_np_expanded, detection_graph)
print(output_dict['detection_classes'])
输出:
[1534 1676 1588 1828 1831]
[ 323 1207 1296 221 729]
打印出概率前5的类别标签id,排在第一位的是文件fgvc_2854_classes_label_map.pbtxt
item {
name: “4496”
id: 1534
display_name: “Rynchops niger”
}
item {
name: “41976”
id: 323
display_name: “Lynx rufus”
}
5、总结
object_detection/g3doc:各种说明和目录文档
object_detection/data:现有物体标签
框框上的文字不清楚,需要找找程序看看如何能大点字体。
下一篇将介绍利用coco作为pre-trained,训练自定义模型