| """Extracts trainable parameters from Caffe models and stores them in numpy arrays. |
| python caffe_data_extractor -m path_to_caffe_model_file -n path_to_caffe_netlist |
| Saves each variable to a {variable_name}.npy binary file. |
| Tested with Caffe 1.0 on Python 2.7 |
| if __name__ == "__main__": |
| parser = argparse.ArgumentParser('Extract Caffe net parameters') |
| parser.add_argument('-m', dest='modelFile', type=str, required=True, help='Path to Caffe model file') |
| parser.add_argument('-n', dest='netFile', type=str, required=True, help='Path to Caffe netlist') |
| args = parser.parse_args() |
| net = caffe.Net(args.netFile, 1, weights=args.modelFile) |
| for name, blobs in net.params.iteritems(): |
| print('Name: {0}, Blobs: {1}'.format(name, len(blobs))) |
| for i in range(len(blobs)): |
| if os.path.sep in varname: |
| varname = varname.replace(os.path.sep, '_') |
| print("Renaming variable {0} to {1}".format(outname, varname)) |
| print("Saving variable {0} with shape {1} ...".format(varname, blobs[i].data.shape)) |
| np.save(varname, blobs[i].data) |