坐姿不对,屏幕就变模糊!小姐姐教你用TensorFlow做一款“隐形背背佳”

简介: 坐姿不对,屏幕就变模糊!小姐姐教你用TensorFlow做一款“隐形背背佳”

作为一个上班族,每天坐在电脑前那么久,难免出现腰酸背痛的情况,时间长了甚至脊柱都歪曲变形了,这可不行!一定要克制住自己的坐姿。

这里有款“隐形背背佳”,要不要了解一下?

一位名叫Olesya Chernyavskaya的俄罗斯程序媛就用TensorFlow开发了一款坐姿监督工具,一旦你歪着身子,屏幕就会变模糊,在无形中帮你矫正坐姿~
Olesya为这个项目专门做了一个网站,小姐姐表示这个网站不会窃取网友的数据,想体验这款坐姿监督工具的小伙伴可以猛戳:
https://fix-posture.glitch.me/

这听起来有点意思,文摘菌也来试试!

驼背、歪头、托腮通通逃不过系统的检测,眼看着屏幕变模糊

打开网站,最上面这个框里有个“开始”的按键,点击之后摄像头就开始检测你的坐姿啦,文摘菌侧下身子果然屏幕就变模糊了,这种感觉似曾相识,这难道不是本菌摘下眼镜的瞬间吗!

吓得文摘菌赶紧坐直了,话说这款工具也不是特别灵敏,有时候会有一些延迟,即使坐直了也要等一会屏幕才能清晰,还有时候会识别不出来。

而且,只有在这个网站上才能实现自动模糊,在浏览其他网站或者微信私聊的时候就没什么变化啦。

尽管项目不太成熟,但创意依然可佳!就连TensorFlow官方也pick了这个项目。

原来这是TensorFlow举办的一个名为“TFCommunitySpotlight”的参赛活动,旨在为年满18岁的程序员提供一个面向全球展示自己的平台,只要在项目中用TensorFlow框架开发就行,官方会选举出一些他们认为的技术与创意俱佳的作品进行展示。

在报名涵上没有看到参赛的截止日期,这应该是一个长期的项目选秀,现在还可以报名哦,想展示自己项目的小伙伴还不快来~👇
https://services.google.com/fb/forms/tensorflowprojectrecognitionform/

说到这里,来和文摘菌一起看看Olesya是如何实现这个项目的吧。

记录初始体态位置,每秒检查坐姿,一旦发现不同屏幕立刻模糊

在这个项目中,她用了TensorFlow.js PoseNet模型来检测身体部位,并借助ml5.js构建PoseNet模型,还用了p5.js帮助处理画布和摄像头。

关于检测人体体态,Olesya有两个点子:

建一个模型,并教它理解什么是错误的坐姿;
让人一开始保持正确的坐姿,让模型记录眼睛和肩膀的位置正确。然后每秒钟check一遍新的位置,并与正确的位置进行比较。

Olesya果断选择了第二种方法,因为这更容易也更快实现。

具体来说,当模型开始采集人的体态时,会先记录下一个正确的坐姿,可以想象有一个垂直于双眼和双肩所在平行线的y轴,这样就可以记录正确坐姿下的数据特征。当你弯腰驼背时,模型可以检测出你双眼和双肩代表的两条平行线在y轴上的位移,由此判断出你没有好好坐着。

那我不驼背,我悄悄托个腮总行了吧!除非你的眼睛和肩膀都没有歪,否则还是会被系统检测出你的坐姿不正确。Olesya还想到了很多种不良坐姿,以她可爱的画风展示在了图中,比如把脚放到了桌子上,或者脚踩椅子翘起膝盖,这些统统都能被检测到。

说完了体态检测的事情,该说一说如何模糊屏幕了。

话不多说,直接放出代码,要想屏幕变模糊,就得这么敲:

function blurScreen() {

document.body.style.filter = 'blur(10px)';
document.body.style.transition= '0.9s';

}

要想变回清晰的屏幕,移除一下就行:

function removeBlur() {

document.body.style.filter = 'blur(0px)';

}

当我们按下开始键,系统会记录眼睛的位置作为默认的正确位置。

while (defaultRightEyePosition.length < 1) {
defaultRightEyePosition.push(rightEye.y);
}

开始检测后,系统就会一直比较默认位置和当前位置。如果差异超过15,就意味着没有保持良好的姿势,而且程序会调用模糊屏幕的功能:

if (Math.abs(rightEye.y - defaultRightEyePosition[0]) > 15) {
blurScreen();
}

如果差异小于15,就说明坐姿保持的不错:

if (Math.abs(rightEye.y - defaultRightEyePosition[0]) < 15) {
removeBlur();
}

除此之外,Olesya连她做这个网站的过程也都贴心的写了下来,感兴趣的小伙伴可以猛戳:
https://fix-posture.glitch.me/
Github指路:
https://github.com/monolesan/fix-posture

这是一位沉浸在自己编程世界里的程序媛

好奇的文摘菌想看看这位小姐姐还做过什么项目。

看了她的推特,文摘菌觉得这是一位内心很有想法的程序媛,对编程有着强烈的热爱,总是能做出一些创意小项目,完全是兴趣使然。

Olesya经常会分享一些项目过程中她认为有趣的地方,比如一个可以跟随人脸移动的“大卫”:

比如当她在用TensorFlow的手势模型做项目时,系统识别到了她拿起杯子的手,她觉得很有趣就做了个“别人喝茶和我喝茶时”对比的表情包。

沉浸在自己的编程世界里,做着自己热爱的项目,想必是很愉快的事情~ 和文摘菌一样好奇的同学可以去她的推特感受一下:
https://twitter.com/monolesan

相关文章
|
监控 NoSQL Java
十八张图带你入门实时监控系统HertzBeat
我们经常讲:研发人员有两只眼睛,一只是监控平台,另一只是日志平台。在对性能和高可用讲究的场景里,监控平台的重要性再怎么强调也不过分。 这篇文章,我们聊聊开源实时监控告警系统 HertzBeat 赫兹跳动。
十八张图带你入门实时监控系统HertzBeat
|
Kubernetes 应用服务中间件 调度
k8s教程(pod篇)-全自动调度
k8s教程(pod篇)-全自动调度
284 0
|
JavaScript 前端开发
javascript 如何判断字符串日期是否相差七天
在JavaScript中,你可以使用`Date`对象来比较两个日期之间的差异。下面是一个简单的示例,演示如何判断两个字符串日期是否相差七天: ```javascript function isSevenDaysDifference(date1, date2) { // 确保输入是字符串 if (typeof date1 !== 'string' || typeof date2 !== 'string') { return false; } // 将字符串转换为Date对象 var d1 = new Date(date1);
377 1
|
消息中间件 Java
SpringBoot RabbitMQ死信队列
SpringBoot RabbitMQ死信队列
316 0
|
6月前
|
存储 数据采集 文字识别
美团商家电话采集工具,可提取美团商户联系方式、地址、手机号、评分【autojs脚本版】
这是一款基于安卓无障碍服务的美团商家数据采集工具,包含主流程控制、页面解析、电话提取和工具函数四大模块。通过控件层级定位与OCR技术实现数据抓取,支持自动翻页及异常处理,最终以CSV格式存储结果。
|
8月前
|
SQL Web App开发 数据可视化
2025年最热门的TOP5报表工具排行榜
很多数据项目中都会用报表工具来做报表,怎么选一款好用的工具一直是个难题,今天,我们一起盘点5款热门报表软件,看看每款报表工具的特点,看看哪款更适合您。
|
6月前
|
人工智能 IDE 定位技术
通义灵码 AI IDE 正式上线,智能体自动写代码,首创自动记忆,工程感知全面升级
阿里云发布的通义灵码AI IDE深度适配千问3大模型,集成智能编码助手功能,支持编程智能体、工具调用、工程感知等能力。其核心亮点包括:支持最强开源模型千问3,全面集成通义灵码插件能力,自带编程智能体模式,支持长期记忆与行间建议预测(NES)。通义灵码已覆盖主流IDE,助力开发者实现高效智能编程,插件下载量超1500万,生成代码超30亿行,成为国内最受欢迎的辅助编程工具。立即体验更智能的开发流程!
2008 1
|
存储 Web App开发 JSON
存储界的cookie、本地存储、会话存储
存储界的cookie、本地存储、会话存储
645 0
|
机器学习/深度学习 人工智能 数据安全/隐私保护
探索iOS应用开发的未来趋势
本文深入剖析了iOS应用开发的最新动态和未来趋势,从SwiftUI的革新到App Clips的潜力,再到人工智能与机器学习的融合,以及隐私保护的重要性。文章不仅为开发者提供了宝贵的行业洞察,还展望了iOS平台即将到来的技术革命,旨在帮助读者把握未来的发展方向并提前做好准备。
317 27
|
存储 安全 Devops
这个代码托管平台真的香!比 Github 速度更快!!!
这个代码托管平台真的香!比 Github 速度更快!!!
5808 0
这个代码托管平台真的香!比 Github 速度更快!!!