摘要:苦口婆心地摆事实讲道理:正处于身体生长发育的关键期,长期不良的坐姿对脊柱健康有着严重的影响。
孩子上学以后,就遇到了一个很难缠的问题:坐姿不正确。
看书还好,做作业的时候不是头趴下去,就是身子歪歪扭扭的。
买了专门的儿童学习桌椅和那种防止低头的支架,都不管用。
苦口婆心地摆事实讲道理:正处于身体生长发育的关键期,长期不良的坐姿对脊柱健康有着严重的影响。
孩子很理解,但是坚持一会儿就忘了,恢复自己最“舒服”的坐姿。把我逼得经常大声训斥:头抬起来!坐直!
但是父母也不能这么一直盯着,总得想想办法。
自动坐姿识别
作为程序员,必定要发挥编程的优势,把监督坐姿这件事儿给自动化了。
先上网搜了一下,发现早在2019年,北邮已经有人申请了专利《一种基于深度学习的人体坐姿实时监视方法和系统》:
将拍摄的人体坐姿图像实时输入至核心处理器中;核心处理器将接收到的人体坐姿图像作为输入,进入已训练好的Yolo3网络中,输出分类为人的包围框,将输出的包围框输入姿态估计器,通过G-RMI的网络得到关键点骨架图,将得到的骨架图输入分类器,得到人体坐姿图像对应用户的当前坐姿状态......
你看,这个世界的牛人实在太多,无论你有什么新想法,总是有人比你先想到。
不过这个过程实在是复杂,我是做不来。
这两年大模型很火爆,大模型生成文字、生成代码、识别图像、分析图像已经相当成熟,能不能用它干点儿事情呢?
比如,可以开发一个App,每隔一段时间对孩子的坐姿拍一张照片,然后把照片发给让大模型分析,看看坐姿是否正确,如果不正确App就可以语音提示。
相比专利中提到的方法,这个路子不需要我建立深度学习网络,分类器,脏活累活都被大模型做完了,难度一下子降低了一个数量级,相当于降维打击了。
就这么做,开干。
智谱GLM-4V-Flash
坐姿识别App功能很简单,虽然我不是Android程序员,但我相信拍照语音等功能不会很复杂,在大模型的辅助下,很容易就能开发出来。
关键是对坐姿图片的分析,这个一定得靠谱,不能把好的坐姿识别成坏的,更不能无法识别坏坐姿。
我又到网上搜索了一下,也询问了几个朋友,发现智谱大模型,智谱由清华大学的知识工程实验室孵化而来,GLM-4V-Flash专注于高效的单一图像理解,适用于快速图像解析的场景,正好符合我的需要。
我试了一下,这个模型不错,对图像的分类、描述、推理都很棒。
比如我用两个坐姿照片进行了测试,第一个是正确坐姿,第二个是错误坐姿。
可以看出对于每种情况,GLM-4V-Flash都能正确识别,并且给出更进一步的建议。
更重要的是,几乎所有的大模型在调用多模态能力的时候都是收费的,而GLM-4V-Flash则完全免费!
实现
我写代码的时候,喜欢先实现最核心的部分,这个坐姿识别最核心的自然是调用GLM-4V-Flash大模型。
于是申请账号,创建API Key,安装智谱的SDK,这些步骤不用我展开详细说,程序员都知道。
提示词是这样写的:
指令:分析提供的照片中学生的坐姿,并在1到10分的范围内进行评分。
如果坐姿大致正确,就不要因为一些错误的小细节而给低分,如果坐姿明显错误,一定要给出低分(5分以下)
若坐姿不理想,请提供具体的改进建议。输出结果应采用JSON格式,包含“score”和“suggestion”两个字段。
背景信息:照片中的学生坐在书桌前,可能正在学习。照片从侧面捕捉了学生的全身坐姿。
输出格式:
{
"score": [分数],
"suggestion": "[坐姿改进建议]",
}
这个提示词是我实验了多次得出来的,有个关键点是“如果坐姿大致正确,就不要因为一些错误的小细节而给低分”,
因为我发现大模型比较严厉,坐姿稍微有点错误就被它抓住,从而打低分。
输出是个JSON格式,包含了一个坐姿的评分分数,之所以没有用“正确”或者“不正确”这种二元的评价,一方面可以增加手机App的灵活度,另一方面以后也许可以对坐姿情况进行统计。
有了提示词,调用大模型就很简单:
client = ZhipuAI(api_key="xxxxxxxx") # 填写您自己的APIKeyresponse = client.chat.completions.create(model="glm-4v-flash", # 填写需要调用的模型名称messages=[{"role": "user","content": [{"type": "text","text": prompt},{"type": "image_url","image_url": {"url" : pic_url}}]}])message = response.choices[0].message# 读取其中的值content = message.content拿一个好的坐姿图调用一下:
{"score": 8,"suggestion": "学生的坐姿总体上是正确的,背部挺直,双脚平放在地上。"}对错误的坐姿,结果如下:
{"score": 4,"suggestion": "请注意保持背部挺直,避免长时间低头看书或使用电子设备。"}你可能注意到了,GLM-4V-Flash模型现在不支持图片上传,只支持图片链接,我手头正好有个云服务器,可以把图片上传到那里去。
既然如此,干脆把逻辑改成这样:
主要的逻辑都在服务器端实现,Android端只需要调用接口即可。
服务器端的逻辑不用自己从头写,可以用智谱的GLM-4-Flash模型来生成。
之前一直说的GLM-4V-Flash更加偏重视觉,而GLM-4-Flash这个模型更加通用,也是免费的。
生成的代码还不错,稍微改一下就可以用了:
手机端App的逻辑也不用自己写了,让GLM-4-Flash来帮忙吧:
其中核心的逻辑是这样的,其他细节就不再罗列了
总结
可以看出,在GLM-4V-Flash和GLM-4-Flash这两个大模型的辅助下,我快速完成了坐姿分析这个小应用,虽然其中还有很多细节(例如界面,提示词,API等)需要打磨,但是核心功能已经搞定,开发效率是很高的。
作为新上线的的视觉理解模型,GLM-4V-Flash大模型是坐姿识别的核心担当,表现相当不错,对图像理解准确,免费好用。和同样免费的GLM-4-Flash搭配就是支持多模态的全家桶,后者有着128K上下文和超强推理能力,生成代码对它来说就是小事一桩。
人工智能时代,建议大家都关注下大模型,关注一下GLM-4V-Flash,看看它的图像处理能力,想一想如何把大模型融合到实际的场景当中,也许能发掘出属于你自己的场景,提升工作效率,让生活更加美好。
来源:码农翻身一点号