Artefato de retoque - realização ultra-simples da super-resolução de imagem do Huawei HMS ML Kit

Prefácio

Não sei se você já encontrou tal situação, a nitidez da imagem após a compressão é recebida e baixada, a qualidade da imagem está borrada, muito menos a visualização ampliada. Eu o encontrei recentemente. Recebi um pacote de fotos de viagem compactado de um amigo. Depois de abri-lo, meu Deus, a cena escura, o retrato preto e a imagem borrada, como posso postá-lo no círculo de amigos para mostrar. Não tive escolha a não ser ficar on-line para pedir ajuda. Realmente me fez descobrir uma super resolução de imagem do Huawei HMS ML Kit super fácil de usar e fácil de operar. A questão é que este SDK é totalmente gratuito e aplicável a vários modelos Android.

Introdução ao fundo

A super-resolução de imagem do Huawei HMS ML Kit é baseada em uma rede neural profunda e oferece recursos de super-resolução 1x e 3x aplicáveis ​​a terminais móveis. A superdivisão 1x remove o ruído de compressão, a superdivisão 3x fornece capacidade de amplificação 3 vezes maior, enquanto suprime o ruído de compressão. Para simplificar, a super-resolução de imagem da Huawei fornece serviços 1x e 3x. A super-resolução 1x não altera o tamanho da imagem, mas melhora a clareza da imagem e oferece uma experiência visual mais realista e natural. A super-resolução 3x é a borda da imagem. A ampliação longa é de 3 vezes, a ampliação de pixels é de 9 vezes, a resolução é maior e a textura é mais clara.

Cenas relacionadas

A super-resolução de imagem é amplamente usada em várias cenas da vida real (fotos de plantas verdes, alimentos, retratos, paisagens, etc.), não apenas para otimizar rostos humanos e cenas de texto. Por exemplo, aplicativos de compras integram este serviço. Quando os usuários aumentam o zoom nas imagens do produto, eles podem obter detalhes mais claros do produto por meio da função 3x das imagens do kit de ML. Os aplicativos de leitura de notícias integram este serviço e os usuários podem obter imagens mais nítidas por meio da função de super-resolução 1x sem alterar a resolução da imagem. O APP da câmera integra este serviço e, ao tirar fotos, o usuário pode obter imagens mais realistas e naturais através da função de superdivisão de imagens.

Combate de desenvolvimento

1. Preparação de Desenvolvimento

Antes de iniciar o trabalho de desenvolvimento da API, você precisa concluir os preparativos de desenvolvimento necessários. Ao mesmo tempo, certifique-se de que o endereço do armazém Maven do HMS Core SDK foi configurado em seu projeto e a integração do SDK deste serviço foi concluída.

Para as etapas relacionadas, consulte a Huawei Developer Alliance :

https://developer.huawei.com/consumer/cn/doc/development/HMS-Guides/ml-process-4

1.1 Configurar o endereço do armazém Maven no gradle de nível de projeto

buildscript {
    repositories {
             ...
        maven {url 'https://developer.huawei.com/repo/'}
    }
}
 dependencies {
                 ...
        classpath 'com.huawei.agconnect:agcp:1.3.1.300'
    }
allprojects {
    repositories {
             ...
        maven {url 'https://developer.huawei.com/repo/'}
    }
}

1.2 Configurar dependências do SDK no gradle de nível de aplicativo

dependencies{       
        // 引入集合包。
        implementation 'com.huawei.hms:ml-computer-vision-imageSuperResolution:2.0.2.300'
        implementation 'com.huawei.hms:ml-computer-vision-imageSuperResolution-model:2.0.2.300'     
 }

Nota:

Para usar o serviço de super-resolução de imagem, você precisa definir targetSdkVersion para ser menor que 29 no arquivo de configuração build.gradle do aplicativo.

1.3 Adicionar configuração ao cabeçalho do arquivo

apply plugin: 'com.android.application'
apply plugin: 'com.huawei.agconnect'

1.4 Adicione a seguinte instrução ao arquivo AndroidManifest.xml para atualizar automaticamente o modelo de aprendizado de máquina para o dispositivo

<meta-data   
        android:name="com.huawei.hms.ml.DEPENDENCY"
        android:value= "livenessdetection"/>

1.5 Ler permissões de arquivo local

<!--读权限-->
<uses-permission 
android:name="android.permission.READ_EXTERNAL_STORAGE" />

2. Etapas de desenvolvimento

2.1 Crie um analisador de super-resolução de imagem.

O analisador pode ser criado pela classe de parâmetro personalizado MLImageSuperResolutionAnalyzerSetting.

// 方式1:使用默认的参数配置即1x超分。
MLImageSuperResolutionAnalyzer analyzer =  MLImageSuperResolutionAnalyzerFactory.getInstance() .getImageSuperResolutionAnalyzer();
// 方式2:使用自定义的参数配置,当前仅支持1x超分,后续可扩展。
MLImageSuperResolutionAnalyzerSetting settings = new  MLImageSuperResolutionAnalyzerSetting  .Factory()
// 设置图像超分辨率倍数1x
setScale(MLImageSuperResolutionAnalyzerSetting.ISR_SCALE_1X) .create();
MLImageSuperResolutionAnalyzer analyzer =  MLImageSuperResolutionAnalyzerFactory.getInstance()  .getImageSuperResolutionAnalyzer(setting)

2.2 Construir MLFrame por meio de android.graphics.Bitmap (observe que o tipo de bitmap aqui deve ser ARGB8888, preste atenção à conversão necessária).

// 通过bitmap创建MLFrame,bitmap为输入的图片数据。
MLFrame frame = new MLFrame.Creator().setBitmap(bitmap).create();

2.3 O processamento de super-resolução de imagens para
informações de código de erro pode ser encontrado em: Código de erro do serviço de aprendizado de máquina

Task<MLImageSuperResolutionResult> task = analyzer.asyncAnalyseFrame(frame); 
task.addOnSuccessListener(new OnSuccessListener<MLImageSuperResolutionResult>() {
        public void onSuccess(MLImageSuperResolutionResult result) {
                // 识别成功的处理逻辑。
        }
 }).addOnFailureListener(new OnFailureListener() {
        public void onFailure(Exception e) {
                // 识别失败的处理逻辑。
                // failure.
                if(e instanceof MLException) {
                         MLException mlException = (MLException)e;
                        // 获取错误码,开发者可以对错误码进行处理,根据错误码进行差异化的页面提示。
                        int errorCode = mlException.getErrCode();
                        // 获取报错信息,开发者可以结合错误码,快速定位问题。
                        String errorMessage = mlException.getMessage();
                } else {
                        // 其他异常。
                }
        }
});

2.4 Após a conclusão do reconhecimento, pare o analisador e libere os recursos de detecção.

if (analyzer != null) {
        analyzer.stop();
}

Demo

O editor para superdivisão de imagem apresenta muito conteúdo, o seguinte é o gráfico de comparação de efeitos para mostrar o poder desta função.

Imagens originais
Insira a descrição da imagem aqui
1x renderizações
Insira a descrição da imagem aqui
Imagem original
Insira a descrição da imagem aqui
3x renderings
Insira a descrição da imagem aqui

Links Relacionados

O aprendizado de máquina do Huawei HMS ML Kit integra funções e serviços como reconhecimento de texto, reconhecimento de cartão, tradução de texto, reconhecimento de rosto, reconhecimento de fala, síntese de fala, classificação de imagem, segmentação de imagem e compra de fotos.

Se você estiver interessado, pode clicar no link abaixo para saber:

https://developer.huawei.com/consumer/cn/doc/development/HMS-Guides/ml-introduction-4

Código fonte do Github

Para obter diretrizes de desenvolvimento mais detalhadas, consulte o site oficial da Huawei Developer Alliance


Link original: https://developer.huawei.com/consumer/cn/forum/topicview?tid=0202348901052600500&fid=18 Autor: deixar folhas

Acho que você gosta

Origin blog.51cto.com/14772288/2539216
Recomendado
Clasificación