mirror of
https://github.com/opencv/opencv.git
synced 2024-11-25 19:50:38 +08:00
Read raw floats data from Caffe models
This commit is contained in:
parent
5f57842575
commit
1606137df2
@ -260,14 +260,23 @@ public:
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Half precision floats.
|
CV_Assert(pbBlob.has_raw_data());
|
||||||
CV_Assert(pbBlob.raw_data_type() == caffe::FLOAT16);
|
const std::string& raw_data = pbBlob.raw_data();
|
||||||
std::string raw_data = pbBlob.raw_data();
|
if (pbBlob.raw_data_type() == caffe::FLOAT16)
|
||||||
|
{
|
||||||
|
// Half precision floats.
|
||||||
|
CV_Assert(raw_data.size() / 2 == (int)dstBlob.total());
|
||||||
|
|
||||||
CV_Assert(raw_data.size() / 2 == (int)dstBlob.total());
|
Mat halfs((int)shape.size(), &shape[0], CV_16SC1, (void*)raw_data.c_str());
|
||||||
|
convertFp16(halfs, dstBlob);
|
||||||
Mat halfs((int)shape.size(), &shape[0], CV_16SC1, (void*)raw_data.c_str());
|
}
|
||||||
convertFp16(halfs, dstBlob);
|
else if (pbBlob.raw_data_type() == caffe::FLOAT)
|
||||||
|
{
|
||||||
|
CV_Assert(raw_data.size() / 4 == (int)dstBlob.total());
|
||||||
|
Mat((int)shape.size(), &shape[0], CV_32FC1, (void*)raw_data.c_str()).copyTo(dstBlob);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
CV_Error(Error::StsNotImplemented, "Unexpected blob data type");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user