4.0 下载图像识别模型测试代码
代码在此处下载:
如果需要,编辑代码,修改其中protos路径为自己电脑上的路径:
# module level variables ##############################################################################################
PROTOS_DIR = "C:/TensorFlow/models/research/object_detection/protos"
MIN_NUM_PY_FILES_IN_PROTOS_DIR = 5
选择需要下载的模型名称和下载路径,选择MobileNet或Inception
# choose either MobileNet or Inception
# MobileNet is a smaller download and runs faster, but is less accurate
MODEL_NAME = 'ssdlite_mobilenet_v2_coco_2018_05_09'
# MODEL_NAME = 'ssdlite_mobilenet_v2_coco_2018_05_09'
MODEL_FILE_NAME = MODEL_NAME + '.tar.gz'
MODEL_SAVE_DIR_LOC = "C:/TensorFlow/models/research/object_detection"
FROZEN_INFERENCE_GRAPH_LOC = MODEL_SAVE_DIR_LOC + "/" + MODEL_NAME + "/" + "frozen_inference_graph.pb"
LABEL_MAP_LOC = "C:/TensorFlow/models/research/object_detection/data/mscoco_label_map.pbtxt"
TEST_IMAGES_DIR = "C:/TensorFlow/models/research/object_detection/test_images"
下图列出了所有可用的模型,速度表示推断的时间,mAP表示进精度,数值越大,结果越精确。

设置完后,运行程序就会显示以下两种图片的实例结果,表面下载的预训练的模型运行成功。


4.2 下载图像并进行标记
如需训练自己的模型,需要使用大量的图片,可使用搜索引擎批量下载图片,并初步筛选,去掉分辨率低的图片和不包括训练目标在内的图片,保存到本地目录,并重新命名为简单的文件名如1、2、3。
下面以如何识别厨房场景中的厨房龙头为例介绍一个该过程:
4.2.1 使用搜索引擎下载厨房相关图片

4.2.2 下载图片标记软件,可以在https://github.com/tzutalin/labelImg
下载最新版本
4.2.3 使用LabelImg软件对图片中所有厨房龙头进行标记

4.3.3 标记完后保存图片,软件会自动生成xml格式的文件如下图

打开xml文件,可以发现其中包含标签的名称和厨房龙头在图片中的位置

4.3 在项目目录下新建training_images和test_images文件夹
建完后将标记后的图片移到trainning_images文件夹(至少100张图片),并在test_images文件中放置一些图片供测试用(至少10张)。
4.4 运行代码将xml文件转为csv格式
Tensorflow使用csv格式作为训练素材的索引文件,所以需要将xml文件转换为csv格式,去下面地址下载转换代码:
运行代码后,系统自己在项目目录生成training_data文件夹,并生成eval_labels.csv和train_label.csv两个文件。
4.5 运行代码生成tfrecords
这一步也没什么好说的,都是生成Tensorflow所需的训练数据,代码在此下载:
运行代码后,系统会在training_data文件夹中生成train.tfrecord和eval.tfrecord两个文件。
4.6 运行代码训练模型
代码在此下载:
https://github.com/CDahmsTemp/TensorFlow_Tut_3_Object_Detection_Walk-through/blob/master/3_train.py
检查代码中的模型变量配置,确保项目目录中有所需要的文件或文件夹,在下面的示例中,需要有ssd_inception_v2_coc.config文件和ssd_inception_v2_coco_2018_01_28文件夹,文件夹中应有下载好的预训练过的模型。
# module-level variables ##############################################################################################
# this is the big (pipeline).config file that contains various directory locations and many tunable parameters
PIPELINE_CONFIG_PATH = os.getcwd() + "/" + "ssd_inception_v2_coco.config"
# verify this extracted directory exists,
# also verify it's the directory referred to by the 'fine_tune_checkpoint' parameter in your (pipeline).config file
MODEL_DIR = os.getcwd() + "/" + "ssd_inception_v2_coco_2018_01_28"
编辑config文件,查找“PATH_TO_BE_CONFIGURED”,改成相应的目录,num_steps为训练步数,步数越多时间越长,改为500或其他数字。
训练完后,PyCharm应显示以下信息:

4.7 运行代码生成推断模型
在此处下载代码:
或者此处:
https://github.com/tensorflow/models/blob/master/research/object_detection/export_inference_graph.py
运行代码后,系统会在下面文件夹下建立inference_graph目录并创建以下文件,其中的frozen_inference_graph.pb文件就可用于移植到树莓派上使用。

4.8 测试训练完后的模型
代码在此次下载:
https://github.com/CDahmsTemp/TensorFlow_Tut_3_Object_Detection_Walk-through/blob/master/5_test.py
训练完的模型应能检测出放置在test_images中的图片



也有误判的情况如下图将酒瓶当成了龙头:
