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

让我们快速了解一下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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于单片机的室内空气质量监控系统设计

目 录 摘 要 I Abstract II 引 言 1 1 控制系统设计 3 1.1 方案选择 3 1.2 系统控制原理 4 2系统硬件设计 5 2.1 单片机的选择与设计 5 2.2 温湿度模块设计 6 2.3 甲醛采集模块设计 8 2.4 显示器模块设计 9 2.5 按键模块设计 10 2.6 报警模块设计 11 2.7 加湿及风扇模块设计 1…

【JavaEE】_Spring MVC项目之使用对象传参

目录 1. 使用对象传参 2. 后端参数重命名问题 2.1 关于RequestParam注解 本专栏关于Spring MVC项目的单个及多个参数传参一文中,已经介绍过了对于不同个数的参数传参问题,原文链接如下: 【JavaEE】_Spring MVC 项目单个及多个参数传参-CS…

部署LVS集群之DR模式

直接路由模式----DR模式 理念: 直接路由(是lvs的默认模式) DR模式和隧道模式唯一的区别:dr模式这四台服务器在同一网段,隧道模式 :这四台服务器不在同一网段 客户端 ------->代理服务器------->真实…

Linux命令之top命令

目录 语法 参数说明: 显示信息 top 命令的一些常用功能和显示信息: 第一行:系统负载信息 第二行:进程信息 进程列表 总体系统信息: 进程信息: 功能和交互操作: Linux top 是一个在 L…

JavaBoy假期如何学习项目?弯道块才是真的快!

至暗时刻 老话说的好,弯道快才是真的快,谁直线不会加油?每到假期都是在座的各位弯道超车的时候。转眼自己已经出来搬了快四年砖头了,偶尔访问下牛客发现行情真是一年不如一年。。。不由得回想起自己春招时候的经历。 回想起2020年…

Spring基础——方法注入(Method Injection)

目录 查找方法注入(Lookup Method)查找方法注入基于XML的方法注入基于注解的方法注入 Arbitrary Method Replacement(任意方法替换) 文章所用项目源码参考:java_spring_learn_repo 查找方法注入(Lookup Met…

高分辨率全球海洋温度和盐度再分析数据Global Ocean Physics Reanalysis(0.083°),并利用matlab读取绘图

1.引言 在研究全球海平面变化的问题中,卫星测高获得总的海平面变化,而海平面变化包含质量变化和比容变化。因此测高数据和海洋物理分析数据对于海平面研究至关重要。 测高数据下载网址: Global Ocean Gridded L 4 Sea Surface Heights And …

厉害了,有了这款AI智能代码助手,摸鱼新纪元来了!

大家好啊,欢迎来到web测评。本期给大家分享一款AI智能代码助手BaiduComate,让大家上班有更多的时间来摸鱼,俗话说的好,摸鱼一时爽,一直摸一直爽啊哈哈~~ 智能代码助手使用地址 前往BaiduComatehttps://comate.baidu.c…

3d模型怎么镜像?3d模型镜像的步骤---模大狮模型网

在3D建模软件中,对3D模型进行镜像操作通常是指沿着某个轴线(如X、Y、Z轴)进行镜像翻转,使模型在该轴线的一侧产生对称的镜像效果。以下是在常见的3D建模软件中对3D模型进行镜像的一般步骤: 3d模型镜像步骤: 选择模型:…

碳视野|全国首个ESG区域行动方案通过,上海政府推进ESG有八“要”

引领绿色转型,共筑低碳未来!AMT企源碳管理团队深入解读碳领域政策、概念及标准,分享实践经验,助力产业绿色发展。我们启动“碳视野、碳课堂、碳实践”三大专栏,紧跟碳行业政策动态,以“科普实践分享”为核心…

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

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

windows中使用nnUNet的nnUNet_convert_decathlon_task提示路径不对

找到问题并且解决解决办法 报错时候的指令 nnUNet_convert_decathlon_task -i D:\桌面\nnUNet\DATASET\nnUNet_raw\nnUNet_raw_data\Task05_Prostate 修改为 nnUNet_convert_decathlon_task -i D:/桌面/nnUNet/DATASET/nnUNet_raw/nnUNet_raw_data/Task05_Prostate 修改点&…

Day37 socket、TCP、UDP

socket类型 流式套接字(SOCK_STREAM) TCP 提供了一个面向连接、可靠的数据传输服务,数据无差错、无重复的发送且按发送顺序接收。内设置流量控制,避免数据流淹没慢的接收方。数据被看作是字节流,无长度限制。 数据报套接字(SOCK_DGRAM) UD…

寻找合适的分数线

解法&#xff1a; 统计个数用数组做桶即可 #include<iostream> #include<vector> #include<algorithm> using namespace std; #define endl \n int main() {vector<int> tong(301, 0);int n, m, a;cin >> n >> m;while (n--) {cin >&…

C++——using 关键字

C++——using 关键字 using 在C++中的用途有很多,是非常就经典的关键字复用,它的作用大致可以分为三类: using 指令using 声明using 别名1. using 指令 简单点说,using 指令只能作用于命名空间,引入命名空间中的名字。 2. using 声明 2.1 对命名空间成员的 using 声明 u…

Android基础面试常常死在这几个问题上,大厂Android高级多套面试专题整理集合

前言 本人毕业于非211、985一本&#xff0c;学的是计算机网络&#xff0c;大一在一位师哥的引导下接触了Android开发&#xff0c;随着近一步的接触&#xff0c;慢慢的喜欢上了Android开发。于是大二开始&#xff0c;我开始自学Android开发。 大四的时候开始找实习工作&#x…

【OJ】日期差值与日期累加

个人主页 &#xff1a; zxctscl 如有转载请先通知 文章目录 1. KY111 日期差值1.1 题目分析1.2 代码 2. KY258 日期累加2.1 题目分析2.2 代码 1. KY111 日期差值 1.1 题目分析 日期之间比较可能会出现给的两个年月日都不相同&#xff0c;这个就不好作差&#xff0c;每个月给的…

【论文精读】大语言模型融合知识图谱的问答系统研究

&#x1f497;&#x1f497;&#x1f497;欢迎来到我的博客&#xff0c;你将找到有关如何使用技术解决问题的文章&#xff0c;也会找到某个技术的学习路线。无论你是何种职业&#xff0c;我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章&#xff0c;也欢…

飞书云文档API操作详细介绍

1.场景分析 公司内部很多文档都是由多人进行维护的&#xff0c;随时发生变更&#xff0c;因此在利用这些数据的时候就需要直接读取云文档的数据&#xff0c;从而执行下一步动作。团队云文档api执行权限一般需要管理员审核才能使用。如果你就是管理员&#xff0c;那么恭喜你&am…

进程的奥德赛:并发世界中的核心概念与动态管理

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua&#xff0c;在这里我会分享我的知识和经验。&#x…