image.resize(height_, width_);
int size = image.channels() * image.cols() * image.rows();
std::vector<float> in_data(size);
unsigned char *ptr = image.ptr();
float *data_ptr = in_data.data();
for (int i = 0; i < size; i +=3) {
*(data_ptr++) = static_cast<float>(ptr[i]) - mean_r_;
}
for (int i = 1; i < size; i +=3) {
*(data_ptr++) = static_cast<float>(ptr[i]) - mean_g_;
}
for (int i = 2; i < size; i +=3) {
*(data_ptr++) = static_cast<float>(ptr[i]) - mean_b_;
}
- feature_extract.cpp
- WaitAll is need when we copy data between GPU and the main memory
map<string, NDArray> paramters;
NDArray::Load("./model/Inception-BN-0126.params", 0, ¶mters);
.....
NDArray::WaitAll();
mean_img.SyncCopyFromCPU(
NDArray::LoadToMap("./model/mean_224.nd")["mean_img"].GetData(),1 * 3 * 224 * 224);
NDArray::WaitAll();
auto array = executor->outputs[0].Copy(Context(kCPU, 0));
NDArray::WaitAll();