如何构建用于物体和标志检测的自定义模型

news2025/1/25 4:30:11

让我们快速了解一下AWS的机器学习技术栈,它几乎提供了解决我们业务问题所需的所有机器学习方面的支持。
在这里插入图片描述

物体检测是什么?

物体检测是从图像或视频帧中检测特定类别实例的任务。我们的目标是在图像/视频帧中找出哪里有什么物体。它是其他依赖物体的任务(如分割、图像描述、物体追踪等)的核心。

理解图像识别与图像检测之间的区别非常重要。前者只关心检测物体,而后者旨在检测所需物体的位置。

物体检测是如何工作的?

基于深度学习的物体检测模型有两个部分。编码器接收一张图像作为输入,并通过一系列模块(通常是卷积、BN和最大池化的组合)和层来运行,这些模块和层学会提取用于定位和标记物体的统计特征。编码器的输出随后传递给解码器,解码器预测每个物体的边界框和标签。

物体检测器输出每个物体的位置和标签,但我们如何知道模型的表现如何?对于物体的位置,最常用的度量标准是交并比(IOU)。给定两个边界框,我们计算交集的面积,并除以并集的面积。这个值的范围从0(无交集)到1(完全重叠)。对于标签,可以使用简单的“正确百分比”。这里有一个例子展示了这一点。
在这里插入图片描述

流行的物体检测模型

模型使用二阶段或一阶段物体检测,通常看到一阶段的物体检测更快。二阶段检测器具有高度的定位和物体识别准确性,而一阶段检测器则实现了高速推理。
在这里插入图片描述

我在这里展示了如何从同一输入图像中,我们可以使用深度学习模型进行分类、检测(一阶段/二阶段)或语义分割。
在这里插入图片描述
这里是一些最受欢迎的模型框架

为什么选择Rekognition

物体检测需要相当深入的深度学习和网络设计知识。AWS Rekognition 正是承担了这一繁重的工作,让开发者能够在AWS服务管理深度学习方面的同时,构建无服务器应用。

亚马逊Rekognition图像提供了API来检测物体和场景、检测和分析面部、识别名人、检测不当内容,以及在一系列面部中搜索相似面部,还包括用于管理资源的API。

自定义模型训练

我们可以使用亚马逊Rekognition自定义标签控制台或亚马逊Rekognition自定义标签API来训练模型。您需要为成功训练模型所需的时间付费。通常,训练需要30分钟到24小时才能完成。

自定义标签和为什么选择Rekognition

客户常常提出“亚马逊Rekognition标签对于我的业务需求来说不够具体”的要求,现在让我们理解AWS是如何为这类场景承担繁重工作的。

为了处理上述自定义标签需求,我们有两种方法:

自己动手(DIY)

自定义化需要专业知识和资源来管理
• 深度学习模型训练和微调
• 收集并手动标记成千上万的图像
▪ 易出错且主观,可能导致不一致性
• 完成标记和模型训练可能需要数周时间

亚马逊Rekognition自定义标签

Rekognition自定义标签基于Rekognition现有能力,后者已在许多类别的成千上万图像上进行了训练。我们只需上传一小部分训练图像(通常几百张图像或更少),这些图像特定于我们的用例,通过易于使用的控制台即可。

Rekognition自定义标签自动加载并检查训练数据,选择合适的机器学习算法,训练模型,并提供模型性能指标。

它是定制化的图像分析,可以轻松检测您定义的与我们领域最相关的物体和场景。主要优势是:
• 指导体验创建标记图像
• 无需编码和无需机器学习经验即可训练和评估
• 易于使用的完全托管API

亚马逊Rekognition自定义标签提供了一个简单的端到端体验,您可以从标记数据集开始,亚马逊Rekognition自定义标签会通过检查数据并选择合适的机器学习算法为您构建一个自定义ML模型。在您的模型训练完成后,您可以立即开始用它进行图像分析。如果您想批量处理图像(比如每天或每周一次,或者每天的预定时间),您可以在预定时间启用您的自定义模型。

使用亚马逊Rekognition的示例无服务器解决方案

以下架构取自AWS github,其中解释了我们如何使用亚马逊Rekognition自定义标签构建成本最优的批量解决方案,该解决方案在预定时间启用自定义模型,处理我们的所有图像,然后取消部署我们的资源以避免产生额外成本。
在这里插入图片描述

该应用程序创建了一个基于预定义时间表运行的无服务器亚马逊Rekognition自定义标签检测工作流(请注意,默认情况下在部署时启用该时间表)。它展示了Step Functions用于编排Lambda函数和其他AWS资源形成复杂而健壮的工作流的能力,结合了使用Amazon EventBridge的事件驱动开发。

  1. 当图像存储在Amazon S3桶中时,它触发了一个信息,该信息被存储在Amazon SQS队列中。
  2. Amazon EventBridge被配置为以一定频率(默认为1小时)触发AWS Step Function工作流。
  3. 当工作流运行时,它检查Amazon SQS队列中的项目数量。如果队列中没有要处理的项目,工作流结束。如果队列中有要处理的项目,工作流启动亚马逊Rekognition自定义标签模型,并启用Amazon SQS与Lambda函数的集成来处理这些图像。
  4. 一旦启用了Amazon SQS队列与Lambda的集成,Lambda开始使用亚马逊Rekognition自定义标签处理图像。
  5. 一旦所有图像处理完成,工作流停止亚马逊Rekognition自定义标签模型并禁用Amazon SQS队列与Lambda函数之间的集成

Rekognition API的关键点

  • API操作不会保存任何生成的标签。我们可以通过将这些标签放置在数据库中来保存它们,以及相应图像的标识符。
  • Rekognition视频API包括以下功能:
    ▪ 流媒体视频的实时分析;
    ▪ 人员识别和路径追踪;
    ▪ 面部识别;
    ▪ 面部分析;
    ▪ 检测物体、场景和活动;
    ▪ 不当视频检测;以及
    ▪ 名人识别。
  • Rekognition图像API包括以下功能;
    ▪ 物体和场景检测;
    ▪ 面部识别;
    ▪ 面部分析;
    ▪ 面部比较;
    ▪ 不安全图像检测;
    ▪ 名人识别;以及
    ▪ 图像中的文字。

Rekognition代码示例

此示例显示检测到的面部的预估年龄范围和其他属性,并列出所有检测到的面部属性的JSON。更改photo的值为图像文件名。更改bucket的值为存储图像的Amazon S3桶。

import boto3
import json

# 定义检测面部的函数
def detect_faces(photo, bucket):

    # 创建Rekognition客户端
    client=boto3.client('rekognition')

    # 调用detect_faces方法
    response = client.detect_faces(Image={'S3Object':{'Bucket':bucket,'Name':photo}},Attributes=['ALL'])

    print('Detected faces for ' + photo)    
    for faceDetail in response['FaceDetails']:
        # 打印检测到的面部的年龄范围
        print('The detected face is between ' + str(faceDetail['AgeRange']['Low']) 
              + ' and ' + str(faceDetail['AgeRange']['High']) + ' years old')

        print('Here are the other attributes:')
        # 打印面部详细属性的JSON格式
        print(json.dumps(faceDetail, indent=4, sort_keys=True))

        # 访问个别面部细节的预测并打印它们
        print("Gender: " + str(faceDetail['Gender']))
        print("Smile: " + str(faceDetail['Smile']))
        print("Eyeglasses: " + str(faceDetail['Eyeglasses']))
        print("Emotions: " + str(faceDetail['Emotions'][0]))

    # 返回检测到的面部数量
    return len(response['FaceDetails'])

def main():
    # 图像文件名和存储桶名称
    photo='photo'
    bucket='bucket'

    # 调用detect_faces函数并打印检测到的面部数量
    face_count=detect_faces(photo, bucket)
    print("Faces detected: " + str(face_count))

if __name__ == "__main__":
    main()

参考

AWS Rekognition Developer Guide

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1495097.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Locust中wait_time中匿名函数使用方法浅析

前言 翻出之前做个压测项,看到locust中对等待时间的实现方式感到好奇,于是总结下来。 源代码实现 def between(min_wait, max_wait):"""Returns a function that will return a random number between min_wait and max_wait.Example:…

数据库:2024/3/6

作业1&#xff1a;使用C语言完成数据库的增删改 代码&#xff1a; #include <myhead.h>//定义添加员工信息函数 int Add_worker(sqlite3 *ppDb) {//准备sql语句printf("请输入要添加的员工信息:\n");//从终端获取员工信息char rbuf[128]"";fgets(r…

centos7安装maven离线安装

1、从官方网站下载maven文件包 官方下载网站&#xff1a;https://maven.apache.org/download.cgi 2、创建文件夹解压文件 将下载好的安装包&#xff0c;放到创建的目录下&#xff0c;并解压 a、创建/app/maven文件 mkdir /app/mavenb、解压文件 tar -zxvf apache-maven-…

AIOps常见问题

AIOps的自动化通常指什么&#xff1f; AIOps 平台的自动化一般包括以下几个方面&#xff1a; 数据收集和整合&#xff1a;AIOps 平台可以从多个 IT 基础架构组件、应用需求与性能监视工具以及服务工单系统等数据源中收集并整合运维数据&#xff0c;形成一个全面的数据平台。数…

FC-AE-1553 协议

FC-AE-1553 协议 MIL-STD-1553B总线协议总线结构字格式消息传输方式 FC协议FC协议栈拓扑结构服务类型帧/序列/交换FC帧格式 FC-AE-1553网络构成帧类型命令帧状态帧数据帧 Information UnitsNC1NC2NC3-4NC5-7NT1-7 传输模式1. NC-NT2. NT-NC3. NT-NT4. 无数据字的模式命令5. 带数…

C++ spfa判断负环

给定一个 n 个点 m 条边的有向图&#xff0c;图中可能存在重边和自环&#xff0c; 边权可能为负数。 请你判断图中是否存在负权回路。 输入格式 第一行包含整数 n 和 m 。 接下来 m 行每行包含三个整数 x,y,z &#xff0c;表示存在一条从点 x 到点 y 的有向边&#xff0c;边…

GEE 依照范围裁剪 下载Sentinel-2数据

0. GEE介绍 Google Earth Engine&#xff08;GEE&#xff09; 是由Google开发的一种云端平台&#xff0c;旨在提供强大的地理空间数据处理和分析工具。GEE集成了大量的遥感影像数据和地理空间数据集&#xff0c;以及高性能的计算资源&#xff0c;使用户能够在云端高效地进行大规…

Java基础概念 7-计算机中的数据存储

目录 Java基础概念 7-计算机中的数据存储 计算机的存储规则 进制 十进制:0123456789 二进制:01 常见的进制 不同进制在代码中的表现形式 计算机为什么用二进制存储数据? 进制之间的转换 任意进制转十进制 公式: 系数*基数的权次幂 相加 二进制转十进制** 八进制转…

UEFI Secure Boot

一、前言 在计算机世界&#xff0c;安全是一个永恒的话题。微软的Windows的安全性一直深受诟病&#xff0c;但随着操作系统层面的漏洞逐渐减少&#xff0c;黑客们盯上了BIOS固件。那如何保证从开机到进入操作系统这个过程中的安全呢&#xff1f;下图是Intel CPU的整个UEFI安全启…

Python绘图-9饼图(下)

9.6饼图添加阴影 9.6.1图像呈现 9.6.2绘图代码 # 导入相关库 import numpy as np # 导入numpy库&#xff0c;用于处理数组和数值计算 import matplotlib.pyplot as plt # 导入matplotlib的绘图模块&#xff0c;用于可视化 import matplotlib.patheffects as path_effects …

小程序管理平台:助力企业数字化转型

微信小程序生态近年来发展迅猛&#xff0c;已成为中国互联网不可忽视的力量。截至2023年6月&#xff0c;微信小程序数量已超过300万&#xff0c;同比增长25%&#xff0c;涵盖了电商、生活服务、教育、金融等众多行业。微信小程序内容生态已经日趋完善&#xff0c;并满足各领域用…

脾胃,胃肠中医笔记

目录 脾胃的功能思伤脾&#xff0c;脑力工作者过度思考会伤脾胃焦虑会导致脾胃受伤按摩肚子顺时针还是逆时针&#xff0c;顺时针促消化/逆时针促排便脾胃生病症状舌苔腹胀、滞气的原因为什么大便稀&#xff1f;湿气重的原因及解决方案自测湿气重的方法 治疗脾胃药物总结补中益气…

Java开发中遇到最难的问题,多线程面试题高并发

开篇介绍 个人背景&#xff1a; 不说太多废话&#xff0c;但起码要让你先对我有一个基本的了解。本人毕业于浙江某二本院校&#xff0c;算是科班出身&#xff0c;毕业后就进了一家外包公司做开发&#xff0c;当然不是阿里的外包&#xff0c;具体什么公司就不透露了&#xff0…

Java项目:39 springboot008房屋租赁系统

作者主页&#xff1a;源码空间codegym 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 房屋租赁系统的设计基于现有的网络平台&#xff0c;主要有管理员、房东、用户三个角色 管理员可以在线查看系统已有的人中心、房屋类型管理、…

STM32FreeRTOS信号量(STM32cube高效开发)

一、信号量 &#xff08;一&#xff09;信号量概括 信号量是操作系统中重要的一部分&#xff0c;信号量是一种解决同步问题的机制&#xff0c;可以实现对共享资源的有序访问。 FreeRTOS 提供了多种信号量&#xff0c;按信号量的功能可分为二值信号量、计数型信号量、互斥信…

python文本分析与贝叶斯算法

一、python文本分析概念 文本分析中第一个概念是停用词&#xff0c;这种词有三个特点&#xff1a;&#xff08;1&#xff09;语料中大量出现&#xff1b;&#xff08;2&#xff09;没啥用&#xff1b;&#xff08;3&#xff09;留着没用。比如符号&#xff08;&#xff01;#&a…

2024年最全洗地机选购攻略盘点丨希亦、小米、云鲸、海尔洗地机哪款值得入手?

在现代家居清洁中&#xff0c;洗地机是不可或缺的得力助手&#xff0c;它融合了吸尘、拖地等多种功能。面对市场上琳琅满目的洗地机品牌和型号&#xff0c;选择一个可靠的品牌至关重要。优质的品牌能够提供高品质的产品&#xff0c;使您的清洁工作更加轻松高效。本文将向您推荐…

Android开发基础面试题,PDF超过6000页

前言 从毕业到现在面试也就那么几家公司&#xff0c;单前几次都比较顺利&#xff0c;在面到第三家时都给到了我offer&#xff01;前面两次找工作&#xff0c;没考虑到以后需要什么&#xff0c;自己的对未来的规划是什么&#xff0c;只要有份工作&#xff0c;工资符合自己的要求…

阿里云域名优惠口令2024年最新,com、cn和域名注册续费使用

2024年阿里云域名优惠口令&#xff0c;com域名续费优惠口令“com批量注册更享优惠”&#xff0c;cn域名续费优惠口令“cn注册多个价格更优”&#xff0c;cn域名注册优惠口令“互联网上的中国标识”&#xff0c;阿里云优惠口令是域名专属的优惠码&#xff0c;可用于域名注册、续…

领到了腾讯云服务器红包,可以用于购买服务器,开心!

在2024年腾讯云新春采购节优惠活动上&#xff0c;可以领取新年惊喜红包&#xff0c;打开活动链接 https://curl.qcloud.com/oRMoSucP 会自动弹出红包领取窗口&#xff0c;如下图&#xff1a; 腾讯云2024新春采购节红包领取 如上图所示&#xff0c;点击“领”红包&#xff0c;每…