在网上看到了不少使用caffe python接口来编写生成prototxt文件的帖子,也找到了用protobuf的python接口读取caffemodel的方法,不过一直没看到用protobuf读prototxt的方法(我想要用caffe.proto解析,而不是用字符串直接读入)。由于我对protobuf不是很熟悉,想了半天,突然想起caffe提供了用prototxt绘制网络结构图的draw_net.py,既然根据prototxt绘制结构图,那么肯定要解析它,果然,实现步骤很简单,和读取caffemodel差不多。
from google.protobuf import text_format
import caffe.proto.caffe_pb2 as caffe_pb2 # 载入caffe.proto编译生成的caffe_pb2文件
caffeprototxt_path = "yourpath/deploy.prototxt"
net = caffe_pb2.NetParameter()
text_format.Merge(open(caffeprototxt_path).read(), net)
print(net)
print(net.layer[0])
print(net.layer[0].name)