修圖神器—超簡單實現華為HMS ML Kit圖像超分辨率


前言

不知道大家有沒有遇到這樣的情況,圖片壓縮接收下載后清晰度驟降,畫質模糊,更不用說放大瀏覽了。最近小編就遇到了啊,收到朋友發送的旅游合照壓縮包,打開后,OMG,這昏暗的場景、黑黑的人像、模糊的畫面,怎么讓我發朋友圈炫耀。無奈只能上網求助,還真讓我發現了一款超好用、操作簡單的華為HMS ML Kit圖像超分辨率,重點是這個SDK完全免費、適用於各種Android機型。

背景介紹

華為HMS ML Kit圖像超分辨率基於深度神經網絡,提供了可適用於移動端的1x和3x超分能力。1x超分去除壓縮噪聲,3x超分在抑制壓縮噪聲的同時,提供3倍放大能力。簡單通俗的說,華為圖像超分辨率提供1x和3x兩種服務,1x超分不改變圖片尺寸,但提高圖片的清晰度,提供更加逼真、自然的視覺體驗,3x超分是將圖像的邊長放大3倍,像素放大9倍,分辨率更高,得到更清晰的細節紋理。

相關場景

圖像超分辨率廣泛應用於實際生活中各種場景(綠植、美食、人像、風景等圖片),不僅僅只是優化人臉和文字場景。例如,購物類APP集成該服務,用戶放大商品圖片時,經過ML Kit 圖像超分3x功能,可獲得更清晰的商品細節。新聞閱讀類APP集成該服務,用戶可以在圖片分辨率不變的情況下,通過1x超分功能得到更清晰的圖片。拍照類APP集成該服務,用戶拍攝圖片時,經過圖像超分功能獲得更逼真、更自然的圖片。

開發實戰

1. 開發准備

在開始API開發工作之前,您需要完成必要的開發准備工作,同時請確保您的工程中已經 配置HMS Core SDK的Maven倉地址,並且完成了本服務的SDK集成。

相關步驟可以參考華為開發者聯盟

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

1.1 項目級gradle里配置Maven倉地址

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 應用級gradle里配置SDK依賴

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'     
 }

注意:

使用圖像超分辨率服務,您需要在應用的build.gradle配置文件中設置targetSdkVersion小於29。

1.3 在文件頭添加配置

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

1.4 添加如下語句到AndroidManifest.xml文件中,自動更新機器學習模型到設備

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

1.5 讀取本地文件權限

<!--讀權限-->
<uses-permission 
android:name="android.permission.READ_EXTERNAL_STORAGE" />

2.開發步驟

2.1 創建圖像超分辨率分析器。

可以通過自定義參數類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 通過android.graphics.Bitmap構造MLFrame(注意此處的bitmap類型必須為ARGB8888,請注意做必要的轉換)。

// 通過bitmap創建MLFrame,bitmap為輸入的圖片數據。
MLFrame frame = new MLFrame.Creator().setBitmap(bitmap).create();

2.3 對圖片進行超分辨率處理
錯誤碼信息可參見:機器學習服務錯誤碼

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 識別完成,停止分析器,釋放檢測資源。

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

Demo

關於圖像超分小編就介紹這么多內容,下面是效果對比圖,展示下此功能的強大吧。

原圖
在這里插入圖片描述
1x效果圖
在這里插入圖片描述
原圖
在這里插入圖片描述
3x效果圖
在這里插入圖片描述

相關鏈接

華為HMS ML Kit機器學習集成文本識別、卡證識別、文本翻譯、人臉識別、語音識別、語音合成、圖片分類、圖像分割、拍照購物等功能和服務。

大家感興趣的話,可以戳下方鏈接學習:

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

Github源碼

更詳細的開發指南參考華為開發者聯盟官網


原文鏈接:
https://developer.huawei.com/consumer/cn/forum/topicview?tid=0202348901052600500&fid=18

作者:留下落葉


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM