TF model convert to caffe model
caffe 模型的定义文件
- 即.prototxt文件,该模型的结构与TF中的要保持一致;TF的模型定义通常是inference.py文件
确定两种框架下模型中变量名与层名之间的对应关系(映射关系)
- 可以分别写在两个txt文件中
生成caffemodel文件
- 根据TF的模型参数文件(checkpoint),caffe的模型定义文件以及TF和caffe变量之间的映射关系,来生成.caffemodel模型参数
验证模型转换的准确性
- 这一步非常有必要,TF和caffe的卷积和池化操作在针对某些特征图尺寸取整或者填充机制上有所不同;因此,会导致输出的特征值不同;
- TF和caffe的conv操作当遇到非整除情况下,均为向下取整,而对于pooling操作,TF是向下取整,滑窗过程中,摒弃不凑整时的边缘剩余像素,而caffe则是向上取整,即遇到不凑整的边缘剩余像素,直接取剩余像素区域的最大或均值,然后返回;
- TF和caffe在遇到非整除情况下,其进行卷积遍历的位置不一样,当计算需遍历一行一列满足尺寸要求时,TF优先遍历填充方向在右下角的一行一列,而忽略左上的填充,而caffe是优先遍历填充方向在左上角的一行一列,pytorch和caffe是一致