大数据文摘出品
作为一个上班族,每天坐在电脑前那么久,难免出现腰酸背痛的情况,时间长了甚至脊柱都歪曲变形了,这可不行!一定要克制住自己的坐姿。
这里有款“隐形背背佳”,要不要了解一下?
一位名叫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还想到了很多种不良坐姿,以她可爱的画风展示在了图中,比如把脚放到了桌子上,或者脚踩椅子翘起膝盖,这些统统都能被检测到。
说完了体态检测的事情,该说一说如何模糊屏幕了。
话不多说,直接放出代码,要想屏幕变模糊,就得这么敲:
代码语言:javascript复制function blurScreen() {
document.body.style.filter = 'blur(10px)';
document.body.style.transition= '0.9s';
}
要想变回清晰的屏幕,移除一下就行:
代码语言:javascript复制function removeBlur() {
document.body.style.filter = 'blur(0px)';
}
当我们按下开始键,系统会记录眼睛的位置作为默认的正确位置。
代码语言:javascript复制while (defaultRightEyePosition.length < 1) {
defaultRightEyePosition.push(rightEye.y);
}
开始检测后,系统就会一直比较默认位置和当前位置。如果差异超过15,就意味着没有保持良好的姿势,而且程序会调用模糊屏幕的功能:
代码语言:javascript复制if (Math.abs(rightEye.y - defaultRightEyePosition[0]) > 15) {
blurScreen();
}
如果差异小于15,就说明坐姿保持的不错:
代码语言:javascript复制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