From fc0185b0689ee2fdf592afbefe6001fab2851c1a Mon Sep 17 00:00:00 2001 From: JoeAllen <2494136784@qq.com> Date: Fri, 29 Jul 2022 09:19:34 +0800 Subject: [PATCH] =?UTF-8?q?=E8=8A=82=E7=9C=81=E5=86=85=E5=AD=98=E8=B5=84?= =?UTF-8?q?=E6=BA=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: JoeAllen <2494136784@qq.com> --- .../utils/AnimalsClassification.java | 34 ++------------- .../utils/ClassificationUtil.java | 43 +++++++++++++++++++ .../utils/LightAnimalsClassification.java | 30 +------------ 3 files changed, 47 insertions(+), 60 deletions(-) create mode 100644 src/main/java/cn/heavenlybook/utils/ClassificationUtil.java diff --git a/src/main/java/cn/heavenlybook/utils/AnimalsClassification.java b/src/main/java/cn/heavenlybook/utils/AnimalsClassification.java index 2428630..4370e99 100644 --- a/src/main/java/cn/heavenlybook/utils/AnimalsClassification.java +++ b/src/main/java/cn/heavenlybook/utils/AnimalsClassification.java @@ -11,7 +11,6 @@ import ai.djl.training.util.ProgressBar; import ai.djl.translate.TranslateException; import java.io.IOException; -import java.util.ArrayList; import java.util.List; // https://www.paddlepaddle.org.cn/hubdetail?name=resnet50_vd_animals&en_category=ImageClassification @@ -27,43 +26,16 @@ public final class AnimalsClassification { public static Classifications predict(Image img) throws IOException, ModelException, TranslateException { - Classifications classifications = AnimalsClassification.classfier(img); + Classifications classifications = AnimalsClassification.classifier(img); List items = classifications.items(); - double sum = 0; - double max = 0; - double[] probArr = new double[items.size()]; - - List names = new ArrayList<>(); - List probs = new ArrayList<>(); - - for (int i = 0; i < items.size(); i++) { - Classifications.Classification item = items.get(i); - double prob = item.getProbability(); - probArr[i] = prob; - if (prob > max) { - max = prob; - } - } - - for (int i = 0; i < items.size(); i++) { - probArr[i] = Math.exp(probArr[i] - max); - sum = sum + probArr[i]; - } - - for (int i = 0; i < items.size(); i++) { - Classifications.Classification item = items.get(i); - names.add(item.getClassName()); - probs.add(probArr[i]); - } - - return new Classifications(names, probs); + return ClassificationUtil.get(items); } static Criteria criteria; static ZooModel rotateModel; static Predictor classifier; - public static Classifications classfier(Image img) + public static Classifications classifier(Image img) throws IOException, ModelException, TranslateException { criteria = diff --git a/src/main/java/cn/heavenlybook/utils/ClassificationUtil.java b/src/main/java/cn/heavenlybook/utils/ClassificationUtil.java new file mode 100644 index 0000000..8a568fa --- /dev/null +++ b/src/main/java/cn/heavenlybook/utils/ClassificationUtil.java @@ -0,0 +1,43 @@ +package cn.heavenlybook.utils; + +import ai.djl.modality.Classifications; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author JoeAllen + * @date 2022/7/29 9:16 上午 + */ +public class ClassificationUtil { + public static Classifications get(List items) { + double sum = 0; + double max = 0; + double[] probArr = new double[items.size()]; + + List names = new ArrayList<>(); + List probs = new ArrayList<>(); + + for (int i = 0; i < items.size(); i++) { + Classifications.Classification item = items.get(i); + double prob = item.getProbability(); + probArr[i] = prob; + if (prob > max) { + max = prob; + } + } + + for (int i = 0; i < items.size(); i++) { + probArr[i] = Math.exp(probArr[i] - max); + sum = sum + probArr[i]; + } + + for (int i = 0; i < items.size(); i++) { + Classifications.Classification item = items.get(i); + names.add(item.getClassName()); + probs.add(probArr[i]); + } + + return new Classifications(names, probs); + } +} diff --git a/src/main/java/cn/heavenlybook/utils/LightAnimalsClassification.java b/src/main/java/cn/heavenlybook/utils/LightAnimalsClassification.java index 5171bb8..6396e7e 100644 --- a/src/main/java/cn/heavenlybook/utils/LightAnimalsClassification.java +++ b/src/main/java/cn/heavenlybook/utils/LightAnimalsClassification.java @@ -11,7 +11,6 @@ import ai.djl.training.util.ProgressBar; import ai.djl.translate.TranslateException; import java.io.IOException; -import java.util.ArrayList; import java.util.List; // https://www.paddlepaddle.org.cn/hubdetail?name=mobilenet_v2_animals&en_category=ImageClassification @@ -26,34 +25,7 @@ public final class LightAnimalsClassification { throws IOException, ModelException, TranslateException { Classifications classifications = LightAnimalsClassification.classfier(img); List items = classifications.items(); - double sum = 0; - double max = 0; - double[] probArr = new double[items.size()]; - - List names = new ArrayList<>(); - List probs = new ArrayList<>(); - - for (int i = 0; i < items.size(); i++) { - Classifications.Classification item = items.get(i); - double prob = item.getProbability(); - probArr[i] = prob; - if (prob > max) { - max = prob; - } - } - - for (int i = 0; i < items.size(); i++) { - probArr[i] = Math.exp(probArr[i] - max); - sum = sum + probArr[i]; - } - - for (int i = 0; i < items.size(); i++) { - Classifications.Classification item = items.get(i); - names.add(item.getClassName()); - probs.add(probArr[i]); - } - - return new Classifications(names, probs); + return ClassificationUtil.get(items); } public static Classifications classfier(Image img)