程序员遇到不认识的花是这样识别的

如何实施

可以使用图像分类华为ML套件服务。它将图像中的元素分类为直观的类别,以定义图像主题和使用场景。该服务既支持设备上的识别模式,也支持云上的识别模式,前者识别400多个类别的项目,后者识别12000多个类别。它还允许创建自定义图像分类模型。

制剂

1.创建一个应用程序的应用程序连接和配置签名证书指纹。

2.配置华为Maven存储库地址,并添加对图像分类服务的构建依赖项。

  • <pstyle="line-height: 1.5em;">dependencies{
  • // Import the basic SDK.
  • implementation'com.huawei.hms:ml-computer-vision-classification:2.0.1.300'
  • // Import the image classification model package.
  • implementation'com.huawei.hms:ml-computer-vision-image-classification-model:2.0.1.300'
  • }</p>

3.自动更新机器学习模型。

将下列语句添加到AndroidManifest.xml档案。当用户从华为应用程序库安装应用程序后,机器学习模型将自动更新到用户的设备上。

  • <pstyle="line-height: 1.5em;"><manifest
  •     ...
  • <meta-data
  • android:name="com.huawei.hms.ml.DEPENDENCY"
  • android:value="label"/>
  •     ...
  • </manifest></p>

4.配置混淆脚本。

有关详细信息,请参阅ML工具包。发展指南华为的开发者。

5.在AndroidManifest.xml档案。

要通过照相机或相册获取图像,您需要在文件中申请相关权限。

XML

  • <pstyle="line-height: 1.5em;"><uses-permissionandroid:name="android.permission.CAMERA"/>
  • <uses-permissionandroid:name="android.permission.INTERNET"/>
  • <uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE"/>
  • <uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
  • <uses-permissionandroid:name="android.permission.READ_EXTERNAL_STORAGE"/>
  • <uses-featureandroid:name="android.hardware.camera"/>
  • <uses-featureandroid:name="android.hardware.camera.autofocus"/></p>

发展过程

1.创建和配置云上图像分类分析器。

为图像分类分析器创建一个类。

<p style="line-height: 1.5em;">public class RemoteImageClassificationTransactor extends BaseTransactor<List<MLImageClassification>> </p>

在类中,使用自定义类(MLRemoteClassficationAnalyzerSet)若要创建分析器、设置相关参数并配置处理程序,请执行以下操作。

  • <pstyle="line-height: 1.5em;">privatefinalMLImageClassificationAnalyzerdetector;
  • privateHandlerhandler;MLRemoteClassificationAnalyzerSettingoptions=newMLRemoteClassificationAnalyzerSetting.Factory().setMinAcceptablePossibility(0f).create();
  • this.detector=MLAnalyzerFactory.getInstance().getRemoteImageClassificationAnalyzer(options);this.handler=handler;
  • </p>

2.呼叫异步分析框架处理图像。

异步分类输入MLFrame对象。

  • <pstyle="line-height: 1.5em;">@Override
  • protectedTask<List<MLImageClassification>>detectInImage(MLFrameimage) {
  • returnthis.detector.asyncAnalyseFrame(image);
  • }
  • </p>

3.获得成功的分类结果。

覆盖成功方法图像分类转换器若要在图像中显示可识别对象的名称,请执行以下操作。

  • <pstyle="line-height: 1.5em;">@Override
  • protectedvoidonSuccess(
  • BitmaporiginalCameraImage,
  • List<MLImageClassification>classifications,
  • FrameMetadataframeMetadata,
  • GraphicOverlaygraphicOverlay) {
  • graphicOverlay.clear();
  • this.handler.sendEmptyMessage(Constant.GET_DATA_SUCCESS);
  • List<String>classificationList=newArrayList<>();
  • for(inti=0;i<classifications.size();++i) {
  • MLImageClassificationclassification=classifications.get(i);
  • if(classification.getName()!=null) {
  • classificationList.add(classification.getName());
  •         }
  •     }
  • RemoteImageClassificationGraphicremoteImageClassificationGraphic=
  • newRemoteImageClassificationGraphic(graphicOverlay,this.mContext,classificationList);
  • graphicOverlay.addGraphic(remoteImageClassificationGraphic);
  • graphicOverlay.postInvalidate();
  • }
  • </p>

如果识别失败,处理错误并检查日志中的失败原因。

  • <pstyle="line-height: 1.5em;">@Override
  • protectedvoidonFailure(Exceptione) {
  • this.handler.sendEmptyMessage(Constant.GET_DATA_FAILED);
  • Log.e(RemoteImageClassificationTransactor.TAG,"Remote image classification detection failed: "+e.getMessage());
  • }
  • </p>

4.在认可结束时释放资源。

识别结束时,停止分析器,释放检测资源,并覆盖停()方法图像分类转换器.

  • <pstyle="line-height: 1.5em;">@Override
  • publicvoidstop() {
  • super.stop();
  • try{
  • this.detector.stop();
  • }catch(IOExceptione) {
  • Log.e(RemoteImageClassificationTransactor.TAG,
  • "Exception thrown while trying to close remote image classification transactor"+e.getMessage());
  •     }
  • }
  • </p>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值