| 166 | } |
| 167 | |
| 168 | void EfficientDet::postprocess(const std::vector<cv::Mat>& imgsBatch) |
| 169 | { |
| 170 | CHECK(cudaMemcpy(m_output_num_host, m_output_num_device, sizeof(int) * m_param.batch_size, cudaMemcpyDeviceToHost)); |
| 171 | CHECK(cudaMemcpy(m_output_boxes_host, m_output_boxes_device, sizeof(int) * m_param.batch_size * 1 * m_param.topK * 4, cudaMemcpyDeviceToHost)); |
| 172 | const auto boxes = reinterpret_cast<const float*>(m_output_boxes_host); |
| 173 | CHECK(cudaMemcpy(m_output_scores_host, m_output_scores_device, sizeof(int) * m_param.batch_size * 1 * m_param.topK, cudaMemcpyDeviceToHost)); |
| 174 | const auto scores = reinterpret_cast<const float*>(m_output_scores_host); |
| 175 | CHECK(cudaMemcpy(m_output_classes_host, m_output_classes_device, sizeof(int) * m_param.batch_size * 1 * m_param.topK, cudaMemcpyDeviceToHost)); |
| 176 | for (int bi = 0; bi < imgsBatch.size(); bi++) |
| 177 | { |
| 178 | for (int i = 0; i < m_output_num_host[bi]; i++) |
| 179 | { |
| 180 | float y1 = boxes[0 + i * 4 + bi * m_param.topK * 4]; |
| 181 | float x1 = boxes[1 + i * 4 + bi * m_param.topK * 4]; |
| 182 | float y2 = boxes[2 + i * 4 + bi * m_param.topK * 4]; |
| 183 | float x2 = boxes[3 + i * 4 + bi * m_param.topK * 4]; |
| 184 | |
| 185 | float y_lt = m_dst2src.v3 * x1 + m_dst2src.v4 * y1 + m_dst2src.v5; |
| 186 | float x_lt = m_dst2src.v0 * x1 + m_dst2src.v1 * y1 + m_dst2src.v2; |
| 187 | float y_rb = m_dst2src.v3 * x2 + m_dst2src.v4 * y2 + m_dst2src.v5; |
| 188 | float x_rb = m_dst2src.v0 * x2 + m_dst2src.v1 * y2 + m_dst2src.v2; |
| 189 | |
| 190 | float score = scores[i + bi * m_param.topK]; |
| 191 | if (score < m_param.conf_thresh) |
| 192 | { |
| 193 | continue; |
| 194 | } |
| 195 | int32_t class_id = m_output_classes_host[i + bi * m_param.topK]; |
| 196 | assert(class_id >= 0); |
| 197 | m_objectss[bi].emplace_back(x_lt, y_lt, x_rb, y_rb, score, class_id); |
| 198 | } |
| 199 | } |
| 200 | } |
| 201 | |
| 202 | std::vector<std::vector<utils::Box>> EfficientDet::getObjectss() const |
| 203 | { |