|
|
|
@ -643,10 +643,14 @@ static bool CheckZero(const std::vector<size_t> &vs) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static bool CheckMeanAndStd(int channel, const std::vector<float> &mean, const std::vector<float> &std) {
|
|
|
|
|
static bool CheckMeanAndStd(const LiteMat &src, LiteMat &dst, int channel, const std::vector<float> &mean,
|
|
|
|
|
const std::vector<float> &std) {
|
|
|
|
|
if (mean.size() == 0 && std.size() == 0) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
if (src.data_type_ != LDataType::FLOAT32) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
if (mean.size() > 0) {
|
|
|
|
|
if (CheckZero(mean)) {
|
|
|
|
|
return false;
|
|
|
|
@ -663,16 +667,6 @@ static bool CheckMeanAndStd(int channel, const std::vector<float> &mean, const s
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
bool SubStractMeanNormalize(const LiteMat &src, LiteMat &dst, const std::vector<float> &mean,
|
|
|
|
|
const std::vector<float> &std) {
|
|
|
|
|
if (src.data_type_ != LDataType::FLOAT32) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
if (!CheckMeanAndStd(src.channel_, mean, std)) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
if (dst.IsEmpty()) {
|
|
|
|
|
dst.Init(src.width_, src.height_, src.channel_, LDataType::FLOAT32);
|
|
|
|
|
} else if (dst.height_ != src.height_ || dst.width_ != src.width_ || dst.channel_ != src.channel_) {
|
|
|
|
@ -680,6 +674,14 @@ bool SubStractMeanNormalize(const LiteMat &src, LiteMat &dst, const std::vector<
|
|
|
|
|
} else if (dst.data_type_ != LDataType::FLOAT32) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool SubStractMeanNormalize(const LiteMat &src, LiteMat &dst, const std::vector<float> &mean,
|
|
|
|
|
const std::vector<float> &std) {
|
|
|
|
|
if (!CheckMeanAndStd(src, dst, src.channel_, mean, std)) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const float *src_start_p = src;
|
|
|
|
|
float *dst_start_p = dst;
|
|
|
|
@ -760,7 +762,7 @@ static void PadWithConstant(const LiteMat &src, LiteMat &dst, const int top, con
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template <typename T>
|
|
|
|
|
void ExtractChannelImpl(T *src_ptr, T *dst_ptr, int height, int width, int channel, int col) {
|
|
|
|
|
void ExtractChannelImpl(const T *src_ptr, T *dst_ptr, int height, int width, int channel, int col) {
|
|
|
|
|
int total = height * width;
|
|
|
|
|
int i = 0;
|
|
|
|
|
int src_idx = col;
|
|
|
|
|