| 126 | } |
| 127 | |
| 128 | void EfficientDet::copy(const std::vector<cv::Mat>& imgsBatch) |
| 129 | { |
| 130 | cv::Mat img_fp32 = cv::Mat::zeros(imgsBatch[0].size(), CV_32FC3); // todo |
| 131 | cudaHostRegister(img_fp32.data, img_fp32.elemSize() * img_fp32.total(), cudaHostRegisterPortable); |
| 132 | |
| 133 | // copy to device |
| 134 | float* pi = m_input_src_device; |
| 135 | //for (size_t i = 0; i < m_param.batch_size; i++) |
| 136 | for (size_t i = 0; i < imgsBatch.size(); i++) |
| 137 | { |
| 138 | //std::vector<float> img_vec = std::vector<float>(imgsBatch[i].reshape(1, 1)); |
| 139 | imgsBatch[i].convertTo(img_fp32, CV_32FC3); |
| 140 | CHECK(cudaMemcpy(pi, img_fp32.data, sizeof(float) * 3 * m_param.src_h * m_param.src_w, cudaMemcpyHostToDevice)); |
| 141 | /*imgsBatch[i].convertTo(imgsBatch[i], CV_32FC3); |
| 142 | CHECK(cudaMemcpy(pi, imgsBatch[i].data, sizeof(float) * 3 * m_param.src_h * m_param.src_w, cudaMemcpyHostToDevice));*/ |
| 143 | pi += 3 * m_param.src_h * m_param.src_w; |
| 144 | } |
| 145 | |
| 146 | cudaHostUnregister(img_fp32.data); |
| 147 | } |
| 148 | |
| 149 | void EfficientDet::preprocess(const std::vector<cv::Mat>& imgsBatch) |
| 150 | { |