这次先看tenforflow_infer.py
1.打开anaconda navigator>打开spyder(记得装)
2.file>open>选择目录>打开.py文件
3.初步分块理解代码
import cv2
import time
import argparse
加载一些模块。其中cv2模块的用法参考:https://www.cnblogs.com/shizhengwen/p/8719062.html
import numpy as np
from PIL import Image
from keras.models import model_from_json
from utils.anchor_generator import generate_anchors
from utils.anchor_decode import decode_bbox
from utils.nms import single_class_non_max_suppression
from load_model.tensorflow_loader import load_tf_model, tf_inference
*1 NumPy函数库是Python开发环境的一个独立模块,是Python的一种开源的数值计算扩展工具。import numpy as np即导入函数库
*2 from……import含义是 把一个模块中所有函数都导入进来
所以是把PIL模块里的Image函数导进来
*3 模型的权重保存在HDF5中/模型的结构保存在JSON文件或者YAML文件中
model.to_json() 以 JSON 字符串的形式返回模型的表示(Keras提供了to_json()生成模型JSON描述,并将模型的JSON描述保存到文件中)。请注意,该表示不包括权重,仅包含结构。
反序列化时候,通过model_from_json()函数加载模型描述,编译生成模型
*4 generate_anchors函数的功能对应faster R-CNN中anchors 的生成
https://zhuanlan.zhihu.com/p/102978748?utm_source=wechat_session参考资料
因为SSD算法借鉴Faster R-CNN算法的Anchor机制,所以这里导入该函数
*5 待理解从名字上看应该是Default box的 计算
*6 后处理使用NMS,应该是非最大值抑制算的有关函数
*7涉及模块的加载与保存
具体函数的作用应该要去查看每个源代码才能得知,这个一步步来,所有要用到的代码都在子目录下
sess, graph = load_tf_model('models/face_mask_detection.pb')
# anchor configuration
feature_map_sizes = [[33, 33], [17, 17], [9