用手势识别来测试视力?试试用百度AI来实现想法

news2024/12/25 10:07:17

文章目录

  • ⭐ 前言
  • ⭐ 灵感来源
  • ⭐ 项目准备
  • ⭐ 项目实现
  • ⭐ 不足与展望

⭐ 前言

10月17日,以“生成未来(PROMPT THE WORLD)”为主题的百度世界2023将在北京首钢园举办。百度创始人、董事长兼首席执行官李彦宏将带来以“手把手教你做AI原生应用”为题的一小时演讲。关于大模型、AI原生应用的最新进展也将悉数亮相。

在这里插入图片描述

这是百度世界四年来首次回归线下举办,除多场主题论坛外,还带来近50项AI科技展,包括Prompt胶囊墙、AI全息数字人等,为参会者带来沉浸式AI体验。

⭐ 灵感来源

百度智能云千帆大模型平台是一站式企业级大模型平台,提供先进的生成式AI生产及应用全流程开发工具链。具有丰富的产品功能、多样的交付方案与服务、全面领先的平台功能、内置丰富优质的大模型能力、预置典型的应用范式。例如训练与推理性能方面,MLPerf榜单训练性能世界领先,千亿模型分布式并行训练加速能力和算力利用率大幅提升。

在这里插入图片描述

10月1放假期间使用手机的频率有点高,导致视力下降,打算去眼镜店重新配个眼镜。可能是学生放假的缘故,眼镜店的人还真不少,就连测视力都排起了长龙。想到百度AI提供的人体分析技术,做一款【智能视力表】应用的想法油然而生。
准备的图片如下:

在这里插入图片描述

3(Three)代表左,4(Four)代表右,上(Thumb_up)就是上,下(Thumb_down)就是下。以下就以动作代表的含义来描述。括号中的英文就是最终应用根据手势识别出的文字信息。
创意步骤:

  • 将视力表中的“E”从上到下分好组,提前录入应用;
  • 打开智能视力表,将手机固定到眼睛50cm的正前方,“上”代表左眼视力开始,“下”代表右眼视力开始;
  • 开始之后应用会按“E”从小到大的顺序来弹出,人做出上下左右的手势,应用识别之后给出是否正确的答案;
  • 如果正确就会给出同组的另一个“E”,连着两个回答正确才会通过,然后提示换另一只眼睛;如果连续的三次中有两个回答错误,就会弹出大一点的“E”,直到通过。
  • 两只眼睛测试完毕之后给出最终的结果。

⭐ 项目准备

废话不多说,搭建来一波。我用的是Python环境,学过Python的同学应该都会搭建环境了,没学过的同学可以自行百度安装(此处不是本文重点)。

(1)安装千帆SDK

pip install qianfan
注意:目前支持 Python >= 3.7版本。

(2)调用千帆SDK
步骤一,创建应用,获取应用API Key(AK) 和 Secret Key(SK)。
步骤二,初始化AK 和 SK。
步骤三,调用SDK。

(3)视力表图片准备

如图,准备了几张示例照片,大家可以找专业的美工来定制不同的图片。

在这里插入图片描述

⭐ 项目实现

图片处理
模拟图片分组,将图片按照不同的视力数值分组

image_map = OrderedDict()
image_map[4.1] = ['4.1上.jpg', '4.1左.jpg']
image_map[5.1] = ['5.1上.jpg', '5.1下.jpg', '5.1左.jpg', '5.1右.jpg']

然后从最后一个索引开始随机弹出照片“5.1上.jpg”

在这里插入图片描述

代码如下:

def get_picture(image_map):
    index = len(image_map.items())
    key = list(image_map.keys())[index-1]
    value = list(image_map.values())[index-1]
    image = random.choice(value)
    return key,image

创建应用
打开人体分析页面,创建“智能视力表”应用,获取应用API Key(AK) 和 Secret Key(SK)。

在这里插入图片描述

获取签名
通过应用的API_KEY和SECRET_KEY 获取应用的 access_token

def get_access_token():
    url = "https://aip.baidubce.com/oauth/2.0/token"
    params = {"grant_type": "client_credentials", "client_id": API_KEY, "client_secret": SECRET_KEY}
    return str(requests.post(url, params=params).json().get("access_token"))

手势识别
我们看到应用随机出现的“E”之后,用手势来表示看到的“E”开口方向

在这里插入图片描述

应用首先要获取到图片对应的base64编码

def get_file_content_as_base64(path, urlencoded=False):
    with open(path, "rb") as f:
        content = base64.b64encode(f.read()).decode("utf8")
        if urlencoded:
            content = urllib.parse.quote_plus(content)
    return content

根据获取的 access_token ,调用手势识别接口获取手势的意义。

def gesture():
    url = "https://aip.baidubce.com/rest/2.0/image-classify/v1/gesture?access_token=" + get_access_token()
    payload = get_file_content_as_base64("下.jpg",True)
    headers = {
        'Content-Type': 'application/x-www-form-urlencoded',
        'Accept': 'application/json'
    }
    response = requests.request("POST", url, headers=headers, data=payload)
    print(response.text)

得到的调试结果如下:

{
    "result": [
        {
            "classname": "Thumb_up",
            "top": 175,
            "left": 158,
            "probability": "0.5745857357978821",
            "width": 397,
            "height": 536
        }
    ],
    "result_num": 1,
    "log_id": "1711926132646834128"
}

将result中的classname取出与最早定义好的“上(Thumb_up)”对比来判断对错就可以了。

⭐ 不足与展望

我上边只是将创意进行了简单的实现,里边还有些许不完美的地方,比如视力表图片的制作,视力表图片的录入,判断连续几次成功或者失败的逻辑等都是可以继续优化的地方。希望在不久的将来我可以用上相关厂家提供的【智能视力表】。作为参会者,我非常期待在百度世界大会上看到最新的人工智能技术,希望AI科技展的AI全息数字人能带给我不一样的震撼与体验。同时也非常期待百度世界大会后将会有更多的AI原生应用涌现。最后,祝百度世界大会圆满成功。

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

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

相关文章

【微信小程序开发】基础语法篇

🥳🥳Welcome Huihuis Code World ! !🥳🥳 接下来看看由辉辉所写的关于小程序的相关操作吧 目录 🥳🥳Welcome Huihuis Code World ! !🥳🥳 一.视图层 1.数据绑定 wxml js 2 .列…

android CountDownTimer倒计时随时随地开启或关闭

前言 业务上有个需求,在心跳被触发时需要记录一个时间 当心跳断开后120s需要断开连接 如果收到心跳包就重置这个定时器的时间 代码实现 private CountDownTimer mTimer; private boolean mIsTimerRunning false;if (!mIsTimerRunning) {// 启动定时器startTimer…

消息队列学习分享

消息队列学习 消息队列来解决问题 (1)异步处理 消息通知、日志管理、更新统计数据等步骤 (2)流量控制 如何避免过多的请求压垮我们的系统? 比如一个秒杀系统,网关在收到请求后,将请求放入…

基于Pytest+Requests+Allure实现接口自动化测试

一、整体结构 框架组成:pytestrequestsallure设计模式: 关键字驱动项目结构: 工具层:api_keyword/参数层:params/用例层:case/数据驱动:data_driver/数据层:data/逻辑层&#xff1a…

数字化时代,数据仓库究竟是干什么的?

无论你是否专门从事大数据开发,作为一个开发人员,应该都听说过数据仓库的概念,那你知道为什么会出现数据仓库?数据仓库究竟是干嘛的吗?有什么价值和意义呢?那么本文就带到入门,揭开数据仓库的面…

嵌入式软硬分工与职业发展

嵌入式软硬分工与职业发展: 嵌入式系统分为软件和硬件两个方向。大公司通常明确员工从事嵌入式软件或硬件工作,分工合理利用经验解决问题。小公司可能综合工作,但长期不利深入学习和发展,对个人竞争力不利。嵌入式软件一般指底层…

财报解读:百事业绩继续超预期,无糖布局将带来新爆发?

7月份以来,美国市场通胀“二次反弹”,叠加新型减肥药在北美市场持续风靡,外界普遍预期食品饮料品类的消费将受到冲击。 然而,在此环境下,行业巨头百事仍然交出了一份全面超预期的三季报,并且还有力回应了新…

node 通过axios发送post请求(FormData)

方案一: const axios require(axios) const FormData require(form-data) const fs require(fs)const sdUpscaleOnAzure async (req, res) > {const data new FormData()data.append(image, fs.readFileSync(/temp/ai/sd/download/1.png))let config {hea…

动态规划:10 0-1背包理论基础II(滚动数组)

动态规划:10 0-1背包理论基础II(滚动数组) 接下来还是用如下这个例子来进行讲解 背包最大重量为4。 物品为: 重量价值物品0115物品1320物品2430 问背包能背的物品最大价值是多少? 一维dp数组(滚动数组…

redis作为消息队列的缺点

Redis作为消息队列的不足。 1、基于内存 Redis是一种基于内存的数据库产品,这意味着数据存储在内存中,当内存不足时,Redis会使用基于磁盘的虚拟内存来存储数据。虽然这种虚拟内存机制可以增加Redis的存储容量,但也会降低Redis的…

19.项目开发之量化交易QuantTrade(一)

项目开发之量化交易QuantTrade 数据库创建&项目创建 SpringBoot项目之量化交易QuantTrade创建 创建项目之初&#xff0c;将需要的pom一次性导入 <properties><java.version>1.8</java.version><project.build.sourceEncoding>UTF-8</project.…

福建建筑模板厂家-能强优品木业

福建建筑模板厂家-能强优品木业&#xff0c;是一家专业从事建筑模板生产销售25年的源头工厂。我们以优质的产品和卓越的服务赢得了福建当地建筑施工企业的信赖与合作。作为一家有着丰富经验的建筑模板厂家&#xff0c;我们致力于提供高品质的产品&#xff0c;以满足客户的需求。…

一文2000字手把手教你写一份优质的性能测试报告的编写

性能测试项目实战&#xff08;风暴平台&#xff09; 1、背景 公司之前的测试团队做API的⾃动化测试都是使⽤JMeter等工具来进行&#xff0c;这样的话测试效率⽽⾔不是那么很⾼&#xff0c;⽽ 且在扩展性⽅⾯不是很有竞争⼒的。所以开发了新的测试平台&#xff0c;但是考虑到公…

只要看完这6个案例,就会刷新你对室内空间颜色搭配的认知

只要看完这6个案例&#xff0c;就会刷新你对室内空间颜色搭配的认知&#xff01; 室内设计和家居装饰灵感因 "芭比娃娃 "电影的上映而席卷了 A&D 行业。随着多年来粉红色的复苏&#xff0c;专家们采用大胆的粉红色调和女性化的装饰也就不足为奇了&#xff0c;而这…

不同阶段uncertainty如何设置

我正在「拾陆楼」和朋友们讨论有趣的话题&#xff0c;你⼀起来吧&#xff1f; PreCTS stage: Setup uncertainty jitter skew margin Hold uncertainty skew margin PostCTS stage: Setup uncertainty jitter margin Hold uncertainty margin jitter指的是pll时钟抖动…

每个开发人员都想使用的编程语言

在任何时候&#xff0c;一些编程语言都会把大量的开发人员变成热情的布道者&#xff0c;试图说服世界其他地方的人相信它的伟大。 当热起来的时候&#xff0c;这种语言可能会成为行业标准&#xff0c;但其他时候&#xff0c;这种受欢迎程度就会消失。 在这个故事中&#xff0…

【重要!合规政策更新】欧盟,儿童玩具相关产品卖家请及时关注!儿童玩具EN71

合规政策更新&#xff01; 尊敬的卖家&#xff1a; 您好&#xff01; 我们此次联系您是因为您正在销售需要审批流程的商品。为此&#xff0c;亚马逊正在实施审批流程&#xff0c;以确认我们网站上提供的商品类型须符合指定的认证标准。要在亚马逊商城销售这些商品&#xff0…

华为OD七日集训第8期 - 按算法分类,由易到难,循序渐进,玩转OD

目录 一、适合人群二、本期训练时间三、如何参加四、7日集训第8期五、精心挑选21道高频100分经典题目&#xff0c;作为入门。第1天、数据结构第2天、滑动窗口第3天、贪心算法第4天、二分查找第5天、分治递归第6天、深度优先搜索dfs算法第7天、宽度优选算法&#xff0c;回溯法 六…

小程序框架语法详解以及页面生命周期的代码预演

目录 一、框架简介 二、视图层 2.1 简介 2.2 WXML语法演示 2.2.1 数据绑定 2.2.2 列表渲染 2.2.3 条件渲染 2.2.4 模板 2.3 事件系统 2.4 页面一级菜单展示及切换 2.5 a页面跳b页面界面内部按钮演示 2.6 a页面跳c页面&#xff08;不在一级菜单内的页面&#xff09;…

基于SpringBoot的在线小说阅读平台系统

基于SpringBoot的在线小说阅读平台系统的设计与实现~ 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringBootMyBatisVue工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 主页 个人中心 登录界面 管理员界面 摘要 基于Spring Boot的在线小说阅读…