如今手機攝影越來越方便,隨手一拍就能記錄美好生活。但照片越多,整理越麻煩,有的時候我們想對照片進行二次加工、分享,需要不停翻找相冊。HMS Core機器學習服務(ML Kit)提供了圖片分類服務,方便用戶在多個場景下快速篩選圖片集、定義圖片題材並標註分類信息。比如,期末老師時常會要求家長和孩子一起制 ...
如今手機攝影越來越方便,隨手一拍就能記錄美好生活。但照片越多,整理越麻煩,有的時候我們想對照片進行二次加工、分享,需要不停翻找相冊。HMS Core機器學習服務(ML Kit)提供了圖片分類服務,方便用戶在多個場景下快速篩選圖片集、定義圖片題材並標註分類信息。比如,期末老師時常會要求家長和孩子一起製作親子成長手冊,教育服務類App集成圖片分類服務後可以把一個學期以來的所有照片分類彙總成相冊;出去玩了多個景點或途徑不同城市,旅游分享類App可以幫助用戶整理基於某個位置或某個實物進行圖片分類;在全場景下手機相冊需要把照片同步到大屏上輪播,文件分享類App可以設置分享規則,分類上傳。
接下來,請開發者們通過以下開發實戰進行體驗,同時期待大家將便捷的圖片分類服務進一步帶給用戶~
開發實戰
1 開發準備
在進行開發前需要配置HMS Core SDK的Maven倉地址:
repositories {
maven {
url'https://cmc.centralrepo.rnd.huawei.com/artifactory/product_maven/' }
}
並集成本SDK:
- dependencies {
- // 引入基礎SDK
implementation 'com.huawei.hms:ml-computer-vision-classification:3.3.0.300' - // 引入圖片分類模型包
- implementation 'com.huawei.hms:ml-computer-vision-image-classification-model:3.3.0.300'
}
然後請參見雲端鑒權信息使用須知,設置您應用的鑒權信息
2 編輯工程集成
2.1 設置應用的鑒權信息
可以通過api_key或者Access Token來設置應用鑒權信息。
通過setAccessToken方法設置Access Token,在應用啟動時初始化設置一次即可,無需多次設置。
MLApplication.getInstance().setAccessToken("your access token");
通過setApiKey方法設置api_key,在應用啟動時初始化設置一次即可,無需多次設置。
MLApplication.getInstance().setApiKey("your ApiKey");
2.2 創建靜態圖片檢測器
// 方式一:端側識別使用自定義參數配置。
MLLocalClassificationAnalyzerSetting setting =
new MLLocalClassificationAnalyzerSetting.Factory()
.setMinAcceptablePossibility(0.8f)
.create();
MLImageClassificationAnalyzer analyzer = MLAnalyzerFactory.getInstance().getLocalImageClassificationAnalyzer(setting);
// 方式二:端側識別使用預設參數配置。
MLImageClassificationAnalyzer analyzer = MLAnalyzerFactory.getInstance().getLocalImageClassificationAnalyzer();
2.3 創建MLFrame
// 通過bitmap創建MLFrame,bitmap為輸入的Bitmap格式圖片數據。支持的圖片格式包括:jpg/jpeg/png/bmp,建議圖片尺寸不小於112*112像素。
MLFrame frame = MLFrame.fromBitmap(bitmap);
2.4 調用asyncAnalyseFrame方法進行圖像分類
Task<List<MLImageClassification>> task = analyzer.asyncAnalyseFrame(frame);
task.addOnSuccessListener(new OnSuccessListener<List<MLImageClassification>>() {
@Override
public void onSuccess(List<MLImageClassification> classifications) {
// 識別成功。
// 遍歷返回的列表MLImageClassification,獲取分類名稱等信息。
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(Exception e) {
// 識別失敗。
// Recognition failure.
try {
MLException mlException = (MLException)e;
// 獲取錯誤碼,開發者可以對錯誤碼進行處理,根據錯誤碼進行差異化的頁面提示。
int errorCode = mlException.getErrCode();
// 獲取報錯信息,開發者可以結合錯誤碼,快速定位問題。
String errorMessage = mlException.getMessage();
} catch (Exception error) {
// 轉換錯誤處理。
}
}
});
2.5 識別完成後停止分析器
try {
if (analyzer != null) {
analyzer.stop();
}
} catch (IOException e) {
// 異常處理。
}
3 演示及說明
3.1說明
圖片分類功能包含靜態端側、靜態雲側、動態檢測,以上示例僅為靜態端側功能。
3.2 演示
瞭解更多詳情>>
訪問華為開發者聯盟官網
獲取開髮指導文檔
華為移動服務開源倉庫地址:GitHub、Gitee
關註我們,第一時間瞭解 HMS Core 最新技術資訊~