未验证 提交 80f8c262 编写于 作者: J Jack Zhou 提交者: GitHub

[cherry-pick] fix cpp precision (#1124)

上级 c2bf0803
# Linux平台编译指南 # Linux平台编译指南
## 说明 ## 说明
本文档在 `Linux`平台使用`GCC 4.8.5``GCC 4.9.4`测试过,如果需要使用更高G++版本编译使用,则需要重新编译Paddle预测库,请参考: [从源码编译Paddle预测库](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/advanced_guide/inference_deployment/inference/build_and_install_lib_cn.html) 本文档在 `Linux`平台使用`GCC 4.8.5``GCC 4.9.4`测试过,如果需要使用更高G++版本编译使用,则需要重新编译Paddle预测库,请参考: [从源码编译Paddle预测库](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/advanced_guide/inference_deployment/inference/build_and_install_lib_cn.html)本文档使用的预置的opencv库是在ubuntu 16.04上用gcc4.8编译的,如果需要在ubuntu 16.04以外的系统环境编译,那么需自行编译opencv库。
## 前置条件 ## 前置条件
* G++ 4.8.2 ~ 4.9.4 * G++ 4.8.2 ~ 4.9.4
......
...@@ -94,7 +94,7 @@ void PredictImage(const std::string& image_path, ...@@ -94,7 +94,7 @@ void PredictImage(const std::string& image_path,
std::vector<PaddleDetection::ObjectResult> result; std::vector<PaddleDetection::ObjectResult> result;
det->Predict(im, &result); det->Predict(im, &result);
for (const auto& item : result) { for (const auto& item : result) {
printf("class=%d confidence=%.2f rect=[%d %d %d %d]\n", printf("class=%d confidence=%.4f rect=[%d %d %d %d]\n",
item.class_id, item.class_id,
item.confidence, item.confidence,
item.rect[0], item.rect[0],
......
...@@ -11,8 +11,10 @@ ...@@ -11,8 +11,10 @@
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and // See the License for the specific language governing permissions and
// limitations under the License. // limitations under the License.
#include <sstream>
# include "include/object_detector.h" // for setprecision
#include <iomanip>
#include "include/object_detector.h"
namespace PaddleDetection { namespace PaddleDetection {
...@@ -48,7 +50,7 @@ void ObjectDetector::LoadModel(const std::string& model_dir, ...@@ -48,7 +50,7 @@ void ObjectDetector::LoadModel(const std::string& model_dir,
precision, precision,
false, false,
false); false);
} }
} else { } else {
config.DisableGpu(); config.DisableGpu();
} }
...@@ -71,13 +73,15 @@ cv::Mat VisualizeResult(const cv::Mat& img, ...@@ -71,13 +73,15 @@ cv::Mat VisualizeResult(const cv::Mat& img,
cv::Rect roi = cv::Rect(results[i].rect[0], results[i].rect[2], w, h); cv::Rect roi = cv::Rect(results[i].rect[0], results[i].rect[2], w, h);
// Configure color and text size // Configure color and text size
std::string text = lable_list[results[i].class_id]; std::ostringstream oss;
oss << std::setiosflags(std::ios::fixed) << std::setprecision(4);
oss << lable_list[results[i].class_id] << " ";
oss << results[i].confidence;
std::string text = oss.str();
int c1 = colormap[3 * results[i].class_id + 0]; int c1 = colormap[3 * results[i].class_id + 0];
int c2 = colormap[3 * results[i].class_id + 1]; int c2 = colormap[3 * results[i].class_id + 1];
int c3 = colormap[3 * results[i].class_id + 2]; int c3 = colormap[3 * results[i].class_id + 2];
cv::Scalar roi_color = cv::Scalar(c1, c2, c3); cv::Scalar roi_color = cv::Scalar(c1, c2, c3);
text += " ";
text += std::to_string(static_cast<int>(results[i].confidence * 100)) + "%";
int font_face = cv::FONT_HERSHEY_COMPLEX_SMALL; int font_face = cv::FONT_HERSHEY_COMPLEX_SMALL;
double font_scale = 0.5f; double font_scale = 0.5f;
float thickness = 0.5; float thickness = 0.5;
......
...@@ -456,7 +456,7 @@ class Detector(): ...@@ -456,7 +456,7 @@ class Detector():
expect_boxes = (np_boxes[:, 1] > threshold) & (np_boxes[:, 0] > -1) expect_boxes = (np_boxes[:, 1] > threshold) & (np_boxes[:, 0] > -1)
np_boxes = np_boxes[expect_boxes, :] np_boxes = np_boxes[expect_boxes, :]
for box in np_boxes: for box in np_boxes:
print('class_id:{:d}, confidence:{:.2f},' print('class_id:{:d}, confidence:{:.4f},'
'left_top:[{:.2f},{:.2f}],' 'left_top:[{:.2f},{:.2f}],'
' right_bottom:[{:.2f},{:.2f}]'.format( ' right_bottom:[{:.2f},{:.2f}]'.format(
int(box[0]), box[1], box[2], box[3], box[4], box[5])) int(box[0]), box[1], box[2], box[3], box[4], box[5]))
......
...@@ -180,7 +180,7 @@ def draw_box(im, np_boxes, labels): ...@@ -180,7 +180,7 @@ def draw_box(im, np_boxes, labels):
fill=color) fill=color)
# draw label # draw label
text = "{} {:.2f}".format(labels[clsid], score) text = "{} {:.4f}".format(labels[clsid], score)
tw, th = draw.textsize(text) tw, th = draw.textsize(text)
draw.rectangle( draw.rectangle(
[(xmin + 1, ymin - th), (xmin + tw + 1, ymin)], fill=color) [(xmin + 1, ymin - th), (xmin + tw + 1, ymin)], fill=color)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册