如何释放人脸比对服务的资源?

我用完了人脸比对服务,听说要释放资源?这个怎么操作?

阅读 825
avatarAI BotBETA

释放人脸比对服务的资源通常取决于你所使用的具体服务(如AWS Rekognition, Microsoft Azure Face API, Google Cloud Vision API等)和该服务的具体实现。不过,大多数云服务在资源管理上有一些共通的原则和步骤。以下是一些一般性的指导步骤,你可以根据你所使用的服务进行调整:

1. 停止或删除正在运行的任务

  • 对于API调用:确保不再向人脸比对服务发送新的请求。
  • 对于批处理任务:如果服务支持批处理操作,确保所有批处理任务都已完成或被取消。

2. 清理资源

  • 关闭会话/连接:如果服务要求建立会话或连接来持续使用(如某些SDK或客户端库),确保关闭这些会话或连接。
  • 删除临时文件:如果服务在处理过程中生成了临时文件或缓存,删除这些文件以释放磁盘空间。

3. 释放云服务资源

  • 关闭实例:如果你在人脸比对服务上运行了任何计算实例(如AWS EC2实例),请关闭或终止这些实例。
  • 删除资源:对于不再需要的云服务资源(如数据库、存储桶、容器等),根据服务提供商的指南删除它们。

4. 清理API密钥和认证信息

  • 撤销API密钥:如果可能,撤销或重置用于访问人脸比对服务的API密钥,以防止未经授权的访问。
  • 更新应用配置:从任何使用这些密钥的应用配置中移除旧的或不再使用的密钥。

5. 监控和确认

  • 监控资源使用情况:使用服务提供的监控工具检查资源使用情况,确保没有未预料到的资源仍在被使用。
  • 查看费用报告:如果服务收费,查看费用报告以确保没有意外的费用产生。

示例(以AWS Rekognition为例)

  • 停止API调用:确保不再向Rekognition发送新的请求。
  • 删除IAM角色和策略:如果为Rekognition服务创建了特定的IAM角色和策略,考虑删除它们,特别是如果这些角色和策略不再需要。
  • 关闭或删除Lambda函数:如果你使用了Lambda函数来处理Rekognition的响应,确保关闭或删除这些函数。

请注意,具体的步骤和选项将根据你使用的具体服务和你的具体需求而有所不同。务必参考你所使用的服务的官方文档以获取最准确的信息。

1 个回答
import { faceComparator } from '@kit.CoreVisionKit';
import { image } from '@kit.ImageKit';
import { hilog } from '@kit.PerformanceAnalysisKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { fileIo } from '@kit.CoreFileKit';
import { photoAccessHelper } from '@kit.MediaLibraryKit';

async function faceCompareTest() {
  let chooseImage: PixelMap | undefined = undefined;
  let chooseImage1: PixelMap | undefined = undefined;

  // 从图库中选择两张图片
  let PhotoSelectOptions = new photoAccessHelper.PhotoSelectOptions();
  PhotoSelectOptions.MIMEType = photoAccessHelper.PhotoViewMIMETypes.IMAGE_TYPE;
  PhotoSelectOptions.maxSelectNumber = 2;
  let photoPicker: photoAccessHelper.PhotoViewPicker = new photoAccessHelper.PhotoViewPicker();
  let PhotoSelectResult = await photoPicker.select(PhotoSelectOptions);
  let uris = PhotoSelectResult.photoUris;

  if (uris.length !== 2) {
    hilog.info(0x0000, 'testTag', "selected uris length is not 2");
    return;
  }

  // 将选择的图片转换为PixelMap
  let fileSource = await fileIo.open(uris[0], fileIo.OpenMode.READ_ONLY);
  let imageSource = image.createImageSource(fileSource.fd);
  chooseImage = await imageSource.createPixelMap();

  fileSource = await fileIo.open(uris[1], fileIo.OpenMode.READ_ONLY);
  imageSource = image.createImageSource(fileSource.fd);
  chooseImage1 = await imageSource.createPixelMap();

  hilog.info(0x0000, 'testTag', `chooseImage=${chooseImage.toString()}`);
  hilog.info(0x0000, 'testTag', `chooseImage1=${chooseImage1.toString()}`);

  if (!chooseImage || !chooseImage1) {
    hilog.info(0x0000, 'testTag', "chooseImage or chooseImage1 is undefined");
    return;
  }

  // 调用人脸比对接口
  let visionInfo: faceComparator.VisionInfo = {
    pixelMap: chooseImage
  };
  let visionInfo1: faceComparator.VisionInfo = {
    pixelMap: chooseImage1
  };

  let data: faceComparator.FaceCompareResult = await faceComparator.compareFaces(visionInfo, visionInfo1);
  let similarity = (data.similarity * 100).toFixed(2);
  let isSamePerson = data.isSamePerson ? "is" : "is not";
  let faceString = `Similarity: ${similarity}%. ${isSamePerson} the same person`;
  hilog.info(0x0000, 'testTag', "faceString data is " + faceString);

  // 释放资源
  if (chooseImage && chooseImage1) {
    chooseImage.release();
    chooseImage1.release();
  }
}

faceCompareTest().catch((err: BusinessError) => {
  hilog.error(0x0000, 'faceCompareSample', `Failed to compare faces. code:${err.code},message:${err.message}`);
});

image.png

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题