이미지 분류기 생성 솔루션

4900 단어 machinelearning
여러분도 마찬가지일지 모르겠지만 제 휴대폰 앨범을 정리할 때면 항상 답답해요. 내가 사용하고 싶은 이미지를 찾기까지 시간이 오래 걸리는 것 같습니다. 코더로서 이에 대한 해결책이 있는지 궁금하지 않을 수 없습니다. 전체 앨범을 구성하는 방법이 있습니까? 그럼 이미지 분류라는 서비스를 이용하여 이미지 분류기를 개발하는 방법에 대해 알아보도록 하겠습니다.

개발 준비



1. SDK를 사용할 Maven 저장소 주소를 설정합니다.

repositories {
    maven { 
url'https://cmc.centralrepo.rnd.huawei.com/artifactory/product_maven/' }
}


2. 이미지 분류 SDK를 통합합니다.

dependencies {
    // Import the base SDK.
    implementation 'com.huawei.hms:ml-computer-vision-classification:3.3.0.300'
    // Import the image classification model package.
    implementation 'com.huawei.hms:ml-computer-vision-image-classification-model:3.3.0.300'


프로젝트 구성



1.앱의 인증 정보를 설정합니다.
이 정보는 API 키 또는 액세스 토큰을 통해 설정할 수 있습니다.
setAccessToken 메서드를 사용하여 앱 초기화 중에 액세스 토큰을 설정합니다. 이것은 한 번만 설정하면 됩니다.

MLApplication.getInstance().setAccessToken("your access token");


또는 setApiKey를 사용하여 앱 초기화 중에 API 키를 설정합니다. 이것은 한 번만 설정하면 됩니다.

MLApplication.getInstance().setApiKey("your ApiKey");


2. 온디바이스 정적 이미지 감지 모드에서 이미지 분류 분석기를 생성합니다.

// Method 1: Use customized parameter settings for device-based recognition.
MLLocalClassificationAnalyzerSetting setting = 
    new MLLocalClassificationAnalyzerSetting.Factory()
        .setMinAcceptablePossibility(0.8f)
        .create(); 
MLImageClassificationAnalyzer analyzer = MLAnalyzerFactory.getInstance().getLocalImageClassificationAnalyzer(setting);
// Method 2: Use default parameter settings for on-device recognition.
MLImageClassificationAnalyzer analyzer = MLAnalyzerFactory.getInstance().getLocalImageClassificationAnalyzer();


3. MLFrame 개체를 만듭니다.

// Create an MLFrame object using the bitmap which is the image data in bitmap format. JPG, JPEG, PNG, and BMP images are supported. It is recommended that the image dimensions be greater than or equal to 112 x 112 px.
MLFrame frame = MLFrame.fromBitmap(bitmap);


4. asyncAnalyseFrame을 호출하여 이미지를 분류합니다.

Task<List<MLImageClassification>> task = analyzer.asyncAnalyseFrame(frame); 
task.addOnSuccessListener(new OnSuccessListener<List<MLImageClassification>>() {
    @Override
    public void onSuccess(List<MLImageClassification> classifications) {
        // Recognition success.
        // Callback when the MLImageClassification list is returned, to obtain information like image categories.
    }
}).addOnFailureListener(new OnFailureListener() {
    @Override
    public void onFailure(Exception e) {
        // Recognition failure.
        try {
            MLException mlException = (MLException)e;
            // Obtain the result code. You can process the result code and customize relevant messages displayed to users.
            int errorCode = mlException.getErrCode();
            // Obtain the error message. You can quickly locate the fault based on the result code.
            String errorMessage = mlException.getMessage();
        } catch (Exception error) {
            // Handle the conversion error.
        }
    }
});


5. 인식이 완료되면 분석기를 중지합니다.

try {
    if (analyzer != null) {
       analyzer.stop();
    }
} catch (IOException e) {
    // Exception handling.
}


데모





비고



이미지 분류 기능은 온디바이스 정적 이미지 감지 모드, 온클라우드 정적 이미지 감지 모드 및 카메라 스트림 감지 모드를 지원합니다. 여기의 데모는 첫 번째 모드만 보여줍니다.

예를 들어 교육용 앱과 같이 이미지 분류를 사용하는 다양한 애플리케이션 시나리오를 생각해 냈습니다. 이미지 분류의 도움으로 이러한 앱은 사용자가 특정 기간에 찍은 이미지를 다른 앨범으로 분류할 수 있게 합니다. 여행 앱. 이미지 분류를 통해 이러한 앱은 이미지를 찍은 위치 또는 이미지의 개체별로 이미지를 분류할 수 있습니다. 파일 공유 앱. 이미지 분류를 통해 이러한 앱의 사용자는 이미지 범주별로 이미지를 업로드하고 공유할 수 있습니다.

이미지 분류 Development Guide
Reddit 개발자 토론에 참여하려면
GitHub 샘플 코드를 다운로드하려면
Stack Overflow 통합 문제를 해결하기 위해

좋은 웹페이지 즐겨찾기