-
Notifications
You must be signed in to change notification settings - Fork 131
Expand file tree
/
Copy pathcaffeparser.py
More file actions
58 lines (43 loc) · 1.56 KB
/
caffeparser.py
File metadata and controls
58 lines (43 loc) · 1.56 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
__author__ = 'pittnuts'
import caffe
from google.protobuf import text_format
class CaffeProtoParser:
def readProtoSolverFile(self):
solver_config = caffe.proto.caffe_pb2.SolverParameter()
#TODO how to read proto file?
return self._readProtoTxtFile(self.filepath, solver_config)
#enddef
def readProtoNetFile(self):
net_config = caffe.proto.caffe_pb2.NetParameter()
#TODO how to read proto file?
return self._readProtoTxtFile(self.filepath, net_config)
#enddef
def readBlobProto(self):
blob = caffe.proto.caffe_pb2.BlobProto()
#TODO how to read proto file?
return self._readProtoBinFile(self.filepath, blob)
#enddef
def getLayerByName(self,net_msg,layername):
res = []
for cur_layer in net_msg.layer:
if layername==cur_layer.name:
res = cur_layer
break
return res
#enddef
def _readProtoTxtFile(self, filepath, parser_object):
file = open(filepath, "r")
if not file:
raise self.ProcessException("ERROR (" + filepath + ")!")
text_format.Merge(str(file.read()), parser_object)
file.close()
return parser_object
def _readProtoBinFile(self, filepath, parser_object):
file = open(filepath, "rb")
if not file:
raise self.ProcessException("ERROR (" + filepath + ")!")
parser_object.ParseFromString(file.read())
file.close()
return parser_object
def __init__(self,filepath):
self.filepath = filepath