void extractBinaryLayerParams(const caffe::LayerParameter& layer, LayerParams& layerParams) { const std::string &name = layer.name(); int li; for (li = 0; li != netBinary.layer_size(); li++) { const caffe::LayerParameter& binLayer = netBinary.layer(li); // Break if the layer name is the same and the blobs are not cleared if (binLayer.name() == name && binLayer.blobs_size() != 0) break; } if (li == netBinary.layer_size()) return; caffe::LayerParameter* binLayer = netBinary.mutable_layer(li); const int numBlobs = binLayer->blobs_size(); layerParams.blobs.resize(numBlobs); for (int bi = 0; bi < numBlobs; bi++) { blobFromProto(binLayer->blobs(bi), layerParams.blobs[bi]); } binLayer->clear_blobs(); CV_Assert(numBlobs == binLayer->blobs().ClearedCount()); for (int bi = 0; bi < numBlobs; bi++) { delete binLayer->mutable_blobs()->ReleaseCleared(); } }
void extractBinaryLayerParms(const caffe::LayerParameter& layer, LayerParams& layerParams) { const std::string &name = layer.name(); int li; for (li = 0; li != netBinary.layer_size(); li++) { if (netBinary.layer(li).name() == name) break; } if (li == netBinary.layer_size() || netBinary.layer(li).blobs_size() == 0) return; const caffe::LayerParameter &binLayer = netBinary.layer(li); layerParams.blobs.resize(binLayer.blobs_size()); for (int bi = 0; bi < binLayer.blobs_size(); bi++) { blobFromProto(binLayer.blobs(bi), layerParams.blobs[bi]); } }