From 1524934754f03f7c7ecd5e7e4a0941e34caf5495 Mon Sep 17 00:00:00 2001 From: divenswu Date: Wed, 30 Nov 2022 11:08:46 +0800 Subject: [PATCH] =?UTF-8?q?update:=E4=BF=AE=E6=94=B9PCN=E7=9A=84=E7=BD=91?= =?UTF-8?q?=E7=BB=9C=E6=8E=A8=E7=90=86=E4=BB=A3=E7=A0=81=EF=BC=8C=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=E5=AD=98=E5=9C=A8=E7=9A=84=E5=8F=AF=E8=83=BD=E5=86=85?= =?UTF-8?q?=E5=AD=98=E6=B3=84=E9=9C=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/models/PcnNetworkFaceDetection.java | 25 ++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/face-search-core/src/main/java/com/visual/face/search/core/models/PcnNetworkFaceDetection.java b/face-search-core/src/main/java/com/visual/face/search/core/models/PcnNetworkFaceDetection.java index 44e3e9a..e00d536 100755 --- a/face-search-core/src/main/java/com/visual/face/search/core/models/PcnNetworkFaceDetection.java +++ b/face-search-core/src/main/java/com/visual/face/search/core/models/PcnNetworkFaceDetection.java @@ -27,6 +27,8 @@ import java.util.Map; */ public class PcnNetworkFaceDetection extends BaseOnnxInfer implements FaceDetection { + public final static int ValueOfPcnMaxSide = 512; + public final static String KeyOfPcnMaxSide = "pcn-max-side"; //常量参数 private final static float stride_ = 8; private final static float minFace_ = 28; @@ -65,8 +67,15 @@ public class PcnNetworkFaceDetection extends BaseOnnxInfer implements FaceDetect Mat resizeMat = null; ImageMat imageMat = image.clone(); try { + //防止分辨率过高,导致内存持续增加 + int maxSide = getMaxSide(params); mat = imageMat.toCvMat(); - float scale = (float) ((mat.size().height > mat.size().width) ? mat.size().width/512: mat.size().height/512); + Size size = mat.size(); + float scale = 1.0f; + if(size.height > maxSide && size.width > maxSide){ + scale = (float) ((size.height > size.width) ? size.width/maxSide: size.height/maxSide); + } + //推理 resizeMat = resize_img_release_mat(mat.clone(), scale); imgPad = pad_img_release_mat(resizeMat.clone()); float[] iouThs = iouTh <= 0 ? defIouThs : new float[]{iouTh, iouTh, 0.3f}; @@ -83,6 +92,20 @@ public class PcnNetworkFaceDetection extends BaseOnnxInfer implements FaceDetect /********************************分割线*************************************/ + private static int getMaxSide(Map params){ + try { + if(null != params && params.containsKey(KeyOfPcnMaxSide)){ + Object value = params.get(KeyOfPcnMaxSide); + if(null != value && !value.toString().trim().isEmpty()){ + return Integer.parseInt(value.toString()); + } + } + }catch (Exception e){ + e.printStackTrace(); + } + return ValueOfPcnMaxSide; + } + private static Mat pad_img_release_mat(Mat mat){ try { int row = Math.min((int)(mat.size().height * 0.2), 100);