免费上网计时器(app推荐:Protake 、UVLens 、DogCam...)
免费上网计时器文章列表:
- 1、app推荐:Protake 、UVLens 、DogCam...
- 2、在技术成瘾的社会中,你躲不了无处不在的赌博机
- 3、用了这么久的手机,这13个小技巧今天才知道?
- 4、线上考试怎么办?大学生担心的事情还是发生了
- 5、使用Mask R-CNN和Python查找空闲停车位附完整代码
app推荐:Protake 、UVLens 、DogCam...
SIF AND CLINT
气象雷达 - 天气和温度
通过高度响应的交互式降水地图,让您提前避开降雨,并且能快速访问世界各地的准确天气预报。
及时了解:
- 降水图提供未来 24 小时的降水预报;
- 积雪深度图显示探测到的积雪和深度;
- 卫星地图显示云层;
- 选择背景地图(标准、混合、卫星),搜索位置,将其添加到书签。
查看天气详情:
- 任何地点的 24 小时和 7 天天气预报;
- 当前以及今天的最低温和最高温以及“体感”温度;
- 气压、湿度、风速、可见度、结露点信息;
- 降水概率;
- 日出和日落时间。
覆盖信息:
雷达图像:美国(美国本土、阿拉斯加(北部除外)、夏威夷、关岛、北马里亚纳群岛和波多黎各)、墨西哥(北部)、加拿大(南部)、澳大利亚、英国、爱尔兰、德国、法国、荷兰、意大利(北部和西北部)、丹麦、奥地利、瑞典、芬兰、西班牙、葡萄牙、瑞士、波兰, 挪威、安道尔、日本、台湾等。请在开发人员网站上参阅完整列表。
降雨图、卫星图像和详细的天气信息:世界上大部分地区。
政府恶劣天气警告:澳大利亚、奥地利、比利时、加拿大、丹麦、爱沙尼亚、芬兰、法国、德国、爱尔兰、意大利、日本、拉脱维亚、卢森堡、荷兰、挪威、波兰、葡萄牙、西班牙、瑞典、瑞士、英国、美国。
Protake - 随身电影机
Protake 为你在移动设备上,带来专业电影机的拍摄体验。
无论你是拍摄 vLOG、广告还是影视作品,你都能够从 Protake 的专业功能中获益,它包括了:
# 模式
· AUTO 自动模式:这个模式为 vlogger 和网络视频拍摄者优化,你可以轻松地单手操作,又能够使用我们的电影调色包,以及专业的构图辅助工具。
· PRO 专业模式:这个模式为专业的视频拍摄者而生。所有的相机数据,以及控制按钮,都被非常科学地放置于界面上。你最想使用的功能,永远在眼前。
# 色彩
· LOG:这不仅仅是一条货真价实的 LOG 曲线。我们将移动设备的色彩与电影工业的标准—— ALEXA Log C 做了严格的匹配。除去拥有不凡的动态范围,调色师还能将他们为 ALEXA 电影机准备的调色方案,轻松用于手机拍摄的视频素材上。
· 电影调色包:我们为视频创作者准备了一整包调色方案,并分为数类:日常风格、胶片模拟(柯达和富士的经典电影胶片)、电影风格(好莱坞大片和独立精品)以及 ALEXA 风格。
# 辅助功能
· 丢帧提示:移动设备并未被设计成专业的电影机,所以如果发生丢帧的情况,你需要第一时间知道。
· 监看工具:波形图、RGB 示波器、直方图、RGB 直方图、音量表。
· 构图辅助:画幅比例、安全区域、三分线、中心指示、水平指示。
· 曝光辅助:斑马纹、伪色、曝光补偿、自动曝光。
· 对焦辅助:对焦峰值和自动对焦。
· 录像提示:录制提示音、录制闪光、音量键录制。
· 变焦和对焦:A-B 点。
# 数据
· 帧率一致性:移动设备通常没有完美的帧率控制,容易产生非标准的变化帧率(VFR)。我们从根本上解决这个问题,并让视频拥有严格的一致帧率:24、25、30、60、120 等。
· 文件命名:Protake 录制的所有文件,都拥有工业标准的文件名:机号 卷号 条数 尾缀。看起来大概是「A001C00203_200412_IR8J.MOV」,是否感觉亲切?
· 元数据(metadata):所有在片场发生的事情,包括 ISO、快门开角、白平衡、镜头、连接的附件、地理信息等,都会被很好地记录在文件的元数据里。
· 时间码:我们提供了两个选项给您——自由运行和录制时运行。这能够和您的专业电影机完全兼容。
# Protake
· 如果您拥有 Protake 会员,您可以使用所有的功能,包括:专业模式、LOG 曲线、Protake 电影风格包、所有的辅助工具、数据管理、第三方配件接入。
· 更多的功能将在未来推出。
DogCam - Dog Selfie Camera
在拍摄小狗的照片或视频时,使用DogCam可以播放令人分心的声音效果-它们将专注于声音,每次都能捕捉到最佳效果!
DogCam是终极的狗相机应用程序,并且连续两年(2019年和2020年)在140多个国家/地区被Apple评为“每日应用程序”。
此外,它现在提供100多种新声音,让您的狗更加专注于相机!
-播放声音,例如吹口哨,狗吠,动物的声音和吱吱作响的玩具,以使您的狗专注于相机
-拍摄照片或录制视频,以最能捕捉狗的时刻为准
-即时在自拍和前摄相机之间切换
-捕捉实时照片
-随心所欲设置闪光灯-开,关或自动
-设定倒数计时器-3或10秒
-捏放大
-点击以重新聚焦
-带有语音支持的无障碍设计
UVLens - 紫外线指数监测器
长时间暴露在阳光下的话,紫外线将会损害您的皮肤,轻则晒伤,重则引发皮肤癌。UVLens可以显示出什么时间您需要防晒,什么时间您可以尽情享受阳光。
产品特点:
• 预告户外活动的时段
预测当天紫外线指数,了解什么时间适合户外活动,什么时间应该避开阳光。
• 晒伤风险提示
通过定制化的皮肤类型评估,了解您在没有防晒霜的保护下,可以安全地暴露在阳光下多久。
• 防晒提醒
了解防晒霜是如何保护您的皮肤的,并在适当的时间提醒您重新涂抹。
• 小部件
您可以从主屏幕上直接查看当前的紫外线指数和您的烧伤风险。
白描-文字识别与文件扫描合成PDF工具
“当我需要快速识别图片中的文字,第一个想到的就是白描。”
初衷是做一个方便读书做笔记的轻量化 OCR 文字识别工具。
现已升级批量识别与翻译功能,以及文件扫描功能。专注,专业,准确高效,轻松提取图片中文字信息,生成清晰扫描件。
-----使用场景-----
上课拍老师的 PPT 识别文字存笔记、拍照翻译文字、图片文字提取、公司文件转录、纸质书阅读笔记摘录、截图文字内容提取、身份证识别、购物小票识别,纸质文件电子化合成 PDF 存档等等多种场景适用。
----功能亮点----
● 云端识别
云端 OCR 识别引擎,识别准确度随着自动学习越来越高,识别速度快;另外可以放心的是,图片上传经过加密处理,无需担心隐私。
● 批量识别。
同类 App 里的领跑者,能一次识别 50 张图片,批量识别后也可以对多张原图同时进行校对。
● 支持系统相册插件识别,无需打开 App 即可快速完成识别;
● 识别结果自动存为历史记录,检索方便。
● 支持表格识别,轻松把图片上的表格转换为 Excel。
● 支持长图识别和多栏文字图片识别。
● 识别结果翻译
支持简体中文、日语、英语、韩语、法语、西班牙语、阿拉伯语、俄语、德语、葡萄牙语、意大利语、繁体中文、粤语、文言文、泰语、希腊语、波兰语、荷兰语、保加利亚语、爱沙尼亚语、丹麦语、芬兰语、捷克语、罗马尼亚语、斯洛文尼亚语、瑞典语、匈牙利语、越南语的互译;
● 多语言识别
支持中文、英语、日语、韩语、法语、德语、俄语、西班牙语等大多数语言的 OCR 识别;留学生说“白描用来处理上课笔记实在是太好用了”;
● 手机里的扫描仪,自动识别文档边界生成扫描件
将摄像头对准文档,即可自动识别边界并拍出扫描件,多种文档色彩可供选择。
● 自动识连续拍照扫描件
如果有多张文档待生成扫描件,只要相机对着每张文档即可全部自动拍出来。
● 生成的扫描件图片直接生成 PDF 文件
可将多张扫描件直接生成一个 PDF,自由分享与保存。
● 灵活选择
手指流畅顺滑,即可分块选择需要的文字,想要哪段点哪段(想查看所有文本,不需要按行点选);识别结果可编辑且选择复制到各种 App 中使用,支持微信、QQ、有道云、印象笔记等软件。
● 快速校对
在识别结果页面点击“校对”按钮进行校对,可以在不离开编辑区域的情况下方便对照着原文修改,弥补 OCR 技术的不完美之处(大概是手写字不够工整时需要担待一点)。
● 识别结果自动分段,弥补了大多数识别软件无法还原原文段落的问题;
● 完美支持旁白(VoiceOver),高效准确的文字识别帮助视障者了解眼前的文字,了解图片上的文字。
● 免费制作身份证正反面 A4 扫描件,可自定义水印,自由保存、分享、打印。
● 系统插件翻译,无需打开翻译 App
在 Safari 等软件中,您可以选择一段文字,然后点击共享,在弹出的菜单中选择白描直接进行翻译,省去了打开翻译 App 的步骤。
● 已适配 iPad,iPad 用户可以从 App Store 下载使用。
● 支持 iPad 多任务和 Drag & Drop。
● 没有烦人的广告。
不南 - 让人生不难
“如果人生像游戏一样,有攻略就好了”——你是否也这样想过呢?
我们也希望人生能有攻略,可以教你在成功时知道如何保持、困难时知道如何继续、迷茫时知道方向在哪、懈怠时知道如何改变… 不南APP因此而诞生,这是一款以「人生攻略」为主旨的APP。
电子世界里,有很多软件帮你在现实世界中打发时间、帮你幻想、帮你买东西、帮你省时间… 但我们想帮你赢。
在了解人生和预判功能方面,我们以人工智能为底层驱动,用到了很多全球顶级院校的心理学与社会学理论,也用到了许多数学预测模型,比如概率论,比如混沌理论。
不南APP的团队由经验丰富的从业者组成。顾问里有顶级的预测学家、经济学家、心理学家、社会学家、人工智能科学家与算法设计师等。
希望不南APP可以帮你,为想要的人生投一票。
在技术成瘾的社会中,你躲不了无处不在的赌博机
在中国,“赌博”是一个不太能摆上台面的行为。即便是早已风靡大街小巷的娱乐活动——麻将,在道德上也常常遭遇诟病。公共话语中的麻将,常常与“玩物丧志”、“不务正业”相联系,在城市街头的公共空间里扮演着一个令人既爱又恨的角色。不过,在这种文化语境的影响下,我们也可能错失一些洞察现代文化的良机。
2021年,美国人类学家娜塔莎·道·舒尔(以下简称舒尔)的作品《Addiction by design》引进国内,中译名定为《运气的诱饵:拉斯维加斯的赌博设计与失控人生》。这本书的英译本出版于2012年,目前,它在国内外的主要书评网站上都收获了不错的好评,而它聚焦的话题正是中国文化里很少正式谈论的“赌博”。
电影《雨人》剧照。
舒尔曾于1992年-2007年间长期住在美国著名的赌城拉斯维加斯,通过十余年细致的民族志调查,试图解释人与赌博机的互动如何创造了一种“迷境”般的技术成瘾体验。在人类学作品的评价中,一本优秀的民族志通常不仅具有个案上的独特价值,同时也与某个重要的时代问题相联结。看似与大多数人生活无关的“赌博”,其实恰恰是这样一个关键的联结点。
正如舒尔作品的英文版标题所明示,《运气的诱饵》并非意在专门研究机器影响下的赌博成瘾,而是借此探讨了一个被技术浸润的现代社会中普遍的成瘾文化。如果我们浏览最近的一些有关社交媒体、手机、电子游戏如何让人成瘾的文章,会发现“老虎机”、“赌博机”的比喻其实随处可见。
值得一提的是,哲学家桑德尔在中美两国都引发了广泛讨论的《精英的傲慢》一书中,同样在批判“运气平等主义者”的章节使用了“赌博机”(slot machine)一词,用以形容现代社会的精英“编程”了一种文化,告知弱者“愿赌服输”。从这个角度来看,《运气的诱饵》所关注的“赌博”,其真正价值在于提供了一种有关现代社会文化的重要隐喻。
《运气的诱饵》,[美] 娜塔莎·道·舒尔著,李奇译,民主与建设出版社 2021年12月版。
撰文|刘亚光
现代社会的“赌博机”:
“祛魅”与“复魅”在机器上共存
拉斯维加斯一家赌场的监控视频里,一名赌客在赌桌前揉了揉太阳穴,向后靠了靠,然后突然晕倒在身边的客人身上。不过,那位客人毫无反应,身边的其他人也专注于自己眼前的筹码和桌上的牌。随后,他滑到地板上,发起癫痫,身体剧烈地抖动,好在赌场的医护人员及时赶到,他才逃过一劫。
在一家专业戒赌网站上,一系列连续接龙的帖子写道:过去我整天整天坐在视频扑克机前......像被“胶水粘住了一样”,无法从赌博机前的座椅上离开,经常一坐就是整整10个小时,不出意外,几乎就不去上厕所......身体根本不听使唤,“只有钱都用完了才会走”,走的时候又恶心得要死......
电影《离开拉斯维加斯》剧照。
以上是舒尔在田野调查中记录的两个令人印象深刻的案例。她认为,现代的赌博机让参与赌博的人们陷入了一种“机器迷境”,赌客们悬置了对时间、社会关系、金钱的感知,彻底沉浸在赌博的活动中。而既往有关赌博的研究,过多地将讨论的重点放在了赌客们的心理分析上,而对与他们互动的机器缺乏关注。而恰恰是人和机器的互动,造就了不断升级的这种“迷境”。
在此,舒尔一针见血地指出了一种存在于现代社会各类型“机器”上的有趣的现象:“祛魅”与“复魅”的共存:对于机器的设计者来说,赌博机是一种“祛魅”的工具,相对于传统的赌桌,能够将赌客的筹码以一种精确和“科学”的方法进行计算,更好地操纵赌博的概率。但对于参与赌博的玩家来说,机器却完全成为了“复魅”之物,其中的获胜概率显得如此捉摸不定。在对赌博机“虚拟转轮映射技术”的讨论中,舒尔指出,这种技术会创造一种“近失效应”,通过这种技术,游戏设计者可以把超出正常比例的虚拟转轮停止位映射到老虎机物理转轮上紧靠获胜图案的空位上,这样就能导致每次转动的结果中,获胜图案会高频率地出现在中奖图案附近,从而给玩家营造出“我差一点就成功”的损失感。
然而,赌博机的设计依然试图在形式上赋予玩家以“控制感”,例如依然在数字赌博机上保留机械的转轮机制,让玩家“亲手体验”转动的过程,获得物理上的反馈——尽管从本质上,这只不过是数字技术对机械技术的一种伪装——这个耐人寻味的过程让玩家在概率的失控中,依然感受到一定程度的控制感,非常契合学者们对新自由主义式的现代文化的判断:技术对人的控制已由被动的规训转为引导人们自我规训。这种“祛魅”与“复魅”在机器上的结合,可以被社会学家乌尔里希·贝克的那句“有意制造的不可计算性”完美地概括。
这种机器的复杂性会很自然地让我们联想到早已在生活中遍地开花的“氪金游戏”——游戏学者也将其称为“赌博游戏”,其重要的游戏环节包括通过花费金钱进行概率式抽奖以提升角色竞争力。在该类型的游戏中,我们会发现游戏商经常精心设计抽奖的环节,比如让玩家自己转动某个转盘,或是模拟抽卡的过程,以创造出这种“不可控的控制感”。2018年,据游戏媒体PG Gamer报道,瑞典、比利时等国政府都对游戏中的氪金开箱设定进行限制,瑞典公共行政部部长更是表示会考虑将该类游戏同样纳入赌博行为的监管之中。
电子游戏通过“开箱”随机项目的不确定性给玩家带来刺激感。
“无限滚动”的社交媒体,
如何成为“口袋里的赌博机”?
在创造赌博“迷境”的过程中,赌场昏暗的灯光、封闭私密的空间设计、座椅对人体工程学的利用固然都起到了作用,但舒尔认为,人和机器的互动依然是其中的关键。用舒尔在书中的话来说,赌博机要做的事情,本质上就是让一个“颠簸”的过程变得“平滑”,保证让玩家们陷入一种接近“心流”状态的体验,因此任何形式的“打断”都变得不再必要。
早在1999年,赌场就引进了一种“票进票出”(Ticket-in/Ticket out)技术,这项技术可以让赌客实现在赌博过程中全程不用找零,从而减少了机器在换零钱过程中的“空闲时间”,这对于营造玩家的沉浸感帮助极大。2000年,一些赌场取消了赌博机中出现在两场赌局之间的一些“次级奖励关”,直接让游戏无缝进行。赌博机的设计者还考虑直接将视频扑克中的发牌动作取消,让牌直接弹出,不让玩家的精力有任何的分散。此外,根据舒尔的田野笔记,许多赌客表示自己最有沉浸感的时刻,就是“自己的意愿与机器的响应之间出现协同”的时刻,这也成为赌博机设计的核心之一:让机器画面的特效能越来越及时地反馈玩家的动作。
赌场中的“票进票出”技术。
虽然舒尔的田野调查进行于十几年前,但她指出的机器设计对“平滑”性的偏好,被哲学家韩炳哲在《透明社会》中重新论述。韩炳哲概括,这种“透明”、“平滑”、“均匀”的设计,以及让意识能越过他者的障碍,直通目的地的愿望,正贯穿我们身处的这个数字时代。在当下,最能让人们感受到这种“平滑”感的无疑是“刷手机”。而刷手机的“刷”字则与一个数字时代极具象征意义的设计——“无限滚动”(Infinite scroll)息息相关。
《透明社会》,[德]韩炳哲著,吴琼译,中信出版集团2019年10月。
“无限滚动”——通过下滑屏幕,人们能获得源源不断的信息流——这一设计源自于美国著名的设计师阿萨·拉斯金(Aza Laskin),他从谷歌地图的滚动模式中汲取灵感,本意是希望通过这类设计降低用户的“点击”行为带来的低效,帮助用户更全面、及时地接触信息。这种设计已经广泛存在于国内外我们能接触到的主要社交媒体中,在Instagram,Pinterest等应用上体现得尤其明显。2019年,拉斯金在推特中表示,自己为人们因无限滚动的设计而对手机上瘾感到内疚,并表示:“我从无限滚动中学到的一个教训,就是优化易用性并不意味着对用户或者人类来说最好”。
Freedom网站2022年2月的一篇专栏文章认为,“无限滚动”可能带给人们严重的注意力分散,让人在“刷”的过程里彻底忘记原本的任务,造成生产力损失。此外,连续的滚动带来的上瘾会导致强迫行为、焦虑和抑郁,他人故事和图像的不断轰炸营造出一种“无限可能性”的错觉,进一步加深了“紧迫感”,这些都危害着人们的心理健康。
“无限滚动”远不只是社交媒体致人成瘾机制的全部,而仅仅是一个重要的代表。算法、大数据的影响同样不可忽视。Medium网站2020年的一篇专栏文章也指出,在个性推荐算法的加持下,“无限滚动”的社交媒体犹如一台“口袋里的赌博机”,根据心理学家斯金纳的“强化理论”,算法影响下的“无限滚动”,能让我们不断地期待在一片空白的未知中滑出自己感兴趣的内容。
随着疫情的影响持续,人们在线上活动的时间越来越长,这导致了全球更为普遍的数字成瘾现象。《悉尼先驱晨报》2022年3月的一篇报道就指出,人们的社会联结更多地转向线上,也使得人们对网络的依赖感、“断网”的焦虑感增强。《华尔街日报》2022年的一篇专栏文章,也特别对习惯于网课的青年学生持续加深的手机依赖提出了担忧。
《我们为什么上瘾》,[美]迈雅·萨拉维茨著,丁将译,理想国 | 海南出版社2021年9月。
艺术成为技术“戒瘾”的新可能?
如何挣脱以“无限滚动”为代表的数字技术成瘾机制?Medium网站2022年的一篇文章直截了当地指出,我们应该反向思考“从颠簸到平滑”的过程,加大“滚动”的“摩擦”。《哈佛商业评论》2022年的一篇文章则认为,熟悉技术致使人成瘾的机制也给我们提供了反抗它的武器,比如可以反向喂养算法、连续观看多个“不相关”的视频以打断流畅的观影体验、使用各类社交媒体计时器控制自己“刷手机”的时间等。Freedom网站的另一篇文章更是提出挣脱技术成瘾的关键在于训练“正念”,例如借助冥想等手段来帮助自己更好地集中注意力。同时关闭一些系统默认的设置用于限制“无限滚动”的机制——这些听起来,确实十分的老生常谈。
这些评论中给出的建议,其共性是对人们能依靠自己摆脱技术成瘾的能动性抱有极大的信心。相对于这种较为盲目乐观的心态,一些数字艺术家提出的方案或许蕴藏着更多的可能性。心理学家瓦妮莎·巴特利特(Vanessa Bartlett)于2019年的一篇文章中,借由对舒尔的赌博研究分析,谈论了如何通过艺术途径帮助人们缓解技术成瘾问题。她首先提到了行为心理学家尼尔·埃亚尔在流行读物《Hooked:How to build》(中译本《上瘾:让用户养成使用习惯的四大产品逻辑》)中描述的“触发器”:通过在数字产品界面上突出显示未被答复的信息,吸引用户产生一种持续而微妙的“心理痒感”——担心某个重要的事情会在自己的忽视中丢失。
随后,她介绍了两位艺术家(Jonah Brucker-Cohen 和 Benjamin Grosser)于2015年创作的作品 《请不要点赞》(Please Don't Like This)。该设计在一个网页的中心放置了一个标有“喜欢”的跳动红色按钮,旁边还有着一句诱人的标题,一个不断更新的计数器则在显示已经经不起诱惑而点击按钮的人数。在创作者看来,数字时代技术成瘾的特点在于其是在潜意识层面运作,而该作品试图把这种运作过程摆到观众面前,让人们意识到其存在。另两位艺术家(Stephanie Kneissl 和 Max Lackner)于2017年创作的作品 《让算法停下来》(Stop the Algorithm)则采用了一种应对“无限滚动”机制的更为激进的策略,他们制作了一个在Instagram中持续滚动的动态雕塑,它不断地随机触碰“喜欢”按钮,彻底颠覆算法的运作形式,促使观众们反思“无限滚动”的设计本身并意识到其危害性。
艺术作品 《让算法停下来》(Stop the Algorithm)。
媒介学者马歇尔·麦克卢汉曾在上世纪给予未来的艺术以极高的期待,认为艺术能够成为一种精准而超前的意识,应对即将到来的新技术对我们的感知造成的冲击,并成为现代社会危机中人类获得解放的手段(尽管他并非实指具体的艺术)。在此,心理学家巴特利特的建议似乎一定程度上呼应了这种期待,她认为,由于数字技术的影响深入到潜意识层面,在克服数字技术的弊端方面,能唤醒直觉的美学、艺术、设计的知识已经变得越来越重要。
正如舒尔在《运气的诱饵》中所说,玩家与赌博机的设计者之间进行的是一场人与机器不公平的博弈,把玩家带入“机器迷境”的是赌博机背后的一整套包括技术、资本在内的社会系统。除了个体层面的策略,对系统的限制也是一种更为关键的对抗技术成瘾的路径。
《华尔街日报》《时代》杂志等媒体2022年3月均报道了美国加州提出的《社交媒体平台对儿童责任法案》(Social Media Platform Duty to Children Act),其由州议会的乔丹·坎宁安巴菲·威克斯提出,矛头对准愈加严重的儿童社交媒体成瘾现象。法案通过后将允许儿童的监护人因社交软件的算法强制推送、广告等方面起诉平台方。他们还曾提出另一项《加州数字设计适龄法案》( California Age-Appropriate Design Code Act),用以限制社交媒体对加州儿童数据的采集。除了加州,Amy Klobuchar等参议员也提出过相关的联邦立法。
不过,印第安纳大学商法和伦理学学者艾比·斯特姆勒 (Abbey Stemler) 就在接受《时代》杂志采访中表示,这些法案可能并不能起到实质性的作用。“这条法律的限制项太模糊,无法导向具体的行动”,斯特姆勒认为,解决技术成瘾的关键,在于限制大公司访问和利用数据的能力。
在我国,类似的限制措施也在加强。国家网信办等四部门联合发布的《互联网信息服务算法推荐管理规定》于3月1日起正式施行,其明确算法推荐服务的提供方不得利用算法屏蔽信息、过度推荐,也不得利用算法诱导未成年人沉迷网络。
《梅尔罗斯》剧照。
技术成瘾与戒瘾,
本是“同根生”?
不过,在技术“戒瘾”的问题上,舒尔的研究再次给我们敲响了一记必要的“警钟”:首先,在戒除“技术上瘾”的过程中利用的技术,很可能达不到理想的效果。舒尔指出,赌博业曾出于行业长期发展的考虑,为赌客们提供自我记录赌博数据的工具,本意是希望借此能限制赌瘾的增长,然而却因此造就了一批“精算型成瘾者”,他们通过这项技术细心记录自己赌博的花销,并根据详细的损失记录制定赌博的策略。在田野笔记中,有人反映“自己的赌瘾反而越来越大了”。
舒尔认为,这一现象的出现根植于某种现代文化的宏大背景中,强调一种“企业化”自我是这种文化中的重要元素。人们利用一系列的技术和量表,精确地对风险进行评估并制定自身的行动策略。而对于机器赌博来说,它看似让人们逃离了日常生活,但同时如前文所述,在投身于机器赌博时,人们依然在其中演练日常生活中的那种精算的逻辑。这一逻辑同时体现在戒赌和赌博上,用技术的手段来戒瘾因此常常适得其反。
电影《赌城风云》(Casino,1995)剧照。
在《运气的诱饵》的末尾,舒尔引用了人类学家托马斯·马拉比的观点:“赌博为变幻莫测的日常生活提供了一种半限定的折射,将充满变数的人生,凝结成了一种看起来更容易理解的形式”。从赌客们对机器的痴迷里,能观察到很多我们身处时代的文化特征。舒尔列举道,赌客们选择在“机器迷境”中悬置“选择”,是因为如安东尼·吉登斯所说,现代社会充满了选择,个体必须背负通过选择来塑造自我人生的沉重义务;赌客们选择在“机器迷境”中悬置“社交关系”,是因为在现今的市场关系中,越来越多的人从事一种“情感劳动”,情感成为被加工、管理、消费的对象,人们已经本能地希望逃避职业外的社交活动,同时也渴望更纯粹、简单的互动,比如和机器。
而赌博机最迷人的莫过于下注与回报的“即时性”,它打破了时间的连续,让人追求短时间内的最大收益,人们为之着迷,恰恰反衬出社会运行节奏的加速对人带来的影响之深切。对于技术成瘾来说,在个体习惯、技术设计、宏观政策方面的改变之外,如何从更为宏观的社会文化的角度着力,是舒尔的研究给予我们继续思索的命题。
参考链接:
https://www.bbc.com/news/technology-44640959
https://freedom.to/blog/infinite-scroll/
https://hbr.org/2022/01/the-psychology-of-your-scrolling-addiction
https://medium.com/@anish_b/infinite-scroll-addiction-how-instagram-just-showed-us-they-may-be-seeking-to-solve-this-trap-776ef75981b7
https://time.com/6158294/california-social-media-platform-duty-children-act/
https://www.discovermagazine.com/health/how-the-pandemic-has-changed-our-relationship-with-technology
https://www.wsj.com/articles/california-bill-aims-to-make-tech-firms-liable-for-social-media-addiction-in-children-11647382786
https://www.vanessabartlett.com/digital-design-and-time-on-device-why-aesthetic-experience-helps-us-to-understand-the-psychological-impact-of-living-in-a-digital-culture/
撰文|刘亚光;
编辑|李永博;
校对|刘军。
用了这么久的手机,这13个小技巧今天才知道?
用了这么多年华为手机却不知道这些使用小技能???
让你相见恨晚的分享,快来围观,没准就能解决你眼前的难题!
我想计算开根号的数怎么办?
其实只要打开计算器,再将手机横屏就能解锁计算器更多功能。比如计算开根号、平方立方、三角函数、角弧度等。简直是学生党的福利!
手机联系人太多,查找麻烦?试试快速拨号!
所谓快速拨号就是当进入拨号界面时,长按某个数字就能呼叫特定联系人。
①在拨号界面长按任意数字键即可设置快速拨号。
②进入拨号界面点击右上角三点(设置),找到快速拨号选项即可添加联系人。
不想被杀后台?那就锁定后台任务吧!
大家有没有过这样体验的:浏览着网页或者看小说是,退出来回复了一下消息,可当我们想继续之前的任务的时候,没想到系统自动把后台任务“杀”掉了!这太难了,又要重新找。其实,你只要学会这项小技能,那就不用怕系统杀后台啦。
具体操作:只需在后台任务栏下拉就可锁定该任务,当右上角出现锁的标识即该任务锁定。
设置WIFI、蓝牙连接进入设置?No!
可能某些人想连某个WIFI时,第一步要先打开设置,然后再找到WLAN点击并打开。No,这也太麻烦了。其实,只要在导航栏上长按WIFI标志就可直接跳转WiFi设置界面,是不是比之前的方法要快捷好多呢!
手机已经开启了短信拦截,还是被骚扰?试试关键字黑名单!
这个小功能就是针对某些人用不同号码对我们进行短信骚扰。而我们就可以输入特定信息对其进行拦截。
不方便解锁,但想用手电筒?那就快速开启它吧!
其实这个小技能也很简单。在未解锁状态下,亮屏由底部上滑即可唤起快捷开关,可以无需解锁就能打开录音机、计算器、手电筒、计时器等。
另一只手腾不出来,打字真难!试试单手模式!
可能有些手机屏幕太大又或者另一只手腾不出来,我们打字就很吃力也容易误触。其实我们手机都支持单手操作的哦!先要在设置界面中找到辅助功能,开启单手模式,然后我们在手机左右下端斜向上滑即可。
私密的聊天方式--华为账号服务!
记得之前在网上看过一个段子:有位家长为了让孩子好好上网课,把微信QQ都锁了,可是没想到这个熊孩子竟然用华为账号聊天。
没错,华为为了打造HMS Core,早已经把类似于微信的聊天框架搭载到了HMS中,可以说从功能上并不会比微信差很多,还有特有的表情,甚至支持群聊,而且外观也非常清新简约。
这里说的是私密的聊天方式,所以这个进入界面也藏的很深哦!第一步打开会员中心,然后点击头像再点击右上角消息图标即可进入聊天界面。当然只有双方有华为帐号才能添加好友聊天。
为什么别人的时钟那么好看!
其实手机时间界面有两者显示方式,一种是数字显示,一种就是时钟显示。只需点击即可切换。
华为众测APP--做应用尝鲜体验官!
肯定有不少花粉在俱乐部里看到有某些应用内测的活动消息,但是你们知道华为众测APP吗。华为众测是一款专门为广大华为用户打造的测试体验软件,能够很好的收集到用户反馈的数据,可以对未正式发布的应用版本提前体验,还可以获取相应奖励,赶快下载体验吧!
熄屏快拍--抓拍只需0.3秒!
当有非常精彩的瞬间,想要拍照时,却错过了最佳时机。那就进入相机设置界面打开熄屏快拍功能吧,连续按压音量-键即可抓拍哦!
内存不够了,试试快应用吧!
这个就跟小程序一样,占用内存小,成本低,功能却比较齐全。在全球开发者共同努力下,华为快应用已经越来越多了。如果你内存不足,可以去华为应用市场快应用中心找找看,说不定就有你想要的~
图库中也可以释放本地储存!
当我们要清理内存时,花粉们一般都会想到手机管家。但粉粉们知道嘛,图库里有专门针对相册释放本地储存空间的选项。只需要进入图库点击右上角三点(设置)即可找到该选项。赶快去试试吧!
*本文转自花粉俱乐部——Thomas易
线上考试怎么办?大学生担心的事情还是发生了
“
在学校我只需要担心写不写得完,现在要担心:会不会交不了卷、会不会摄像头中途连接不上网络、我的拍摄是否合标准、会不会突然来电话把考试内容卡掉……
——@比波波得
”
因为疫情,许多学校将线下考试改成了线上作答
这次的线上考试与众不同之处在于——
它不仅考验你的实力
也在考验你的运气
天时(晴天,不打雷下雨,保证网络通畅)
地利(隔壁没装修,保证考试时无噪音)
人和(没有来电骚扰,保证考试作答顺利 )
你永远不知道下一秒会经历什么
就好比考试交卷的时候正好断网
线上考试,大学生最担心的是……
01
//停电断网//
看剧时网络通畅
打游戏时网络通畅
一到考试就选择性断网✘
页面卡也就算了
关键在于系统倒计时却从来不卡
时间滴答滴答地流逝
但你却拿它无可奈何
@南方小女孩儿:许个愿吧:希望不管下多大的雨,打多大的雷,刮多大的风,都不要停电,也不要断网!卑微大学生需要考试!
@路人丙X:没有什么比考试的时候做完第一题点击下一题发现自己断网更尴尬的事情了。如果有,那就是虽然断网了,但计时器还在走,在告诉你:你的生命还在流逝。
@菠萝里的派大星:家里的WIFI总是坏,我开始担心我的线上考试。如果我是老师,学生在考试时讲这种话,我一定不相信,现在就很难办了……
02
//打字速度影响答题//
曾经梦想用打字代替写字的考生
再也不用担心字丑影响卷面分数
遇上题量大的考试
情景堪比双十一拼手速现场
打字慢影响答题速度
打字快也不一定见得是好事
如果没来得及仔细检查
这锅又要甩给输入法了
@吉高有小樽:经济学线上考试,别人打字五个手指头刷刷刷地敲键盘,我一只手一个拇指地戳。
@菠萝芒果榴莲派:线上考试的本质就是练极速打字,我就是拖延症本人,不管老师设置时间多久,我都是在考完前十分钟打完字的。
@不忘初心555:满心欢喜地说线上开卷考,结果线上手机打字考试,到自动交卷前一秒我的手都没有停过,打字也太慢了吧。
03
//系统崩溃 提交失败//
好不容易拼拼凑凑写出答案
在提交的关键时刻却掉了链子
图片上传失败
PDF格式转化失败
提交页面卡顿
……
分分钟让濒临崩溃的考生有砸手机(电脑)的冲动
@Laurentius_RE:掐着点最后两分钟提交作业结果提交失败,查找原因是电脑系统时间慢了三分钟,心碎的彻底,唉,我的期末考试。
@且月初:在截止时间之前提交作业,还有考试上传照片真的是让人瞬间感觉紧张又刺激,太害怕提交失败了。
@DC_离线状态:今天早上考试,提前半小时交卷,结果提交失败,卡在直接退出考试页面。后来想等它自动收卷,结果卡在0.01秒不收,好不容易时间过了,显示已过期,不允许提交?现在终于交上了,这两个小时我承受了不该承受的压力。
04
//双设备监考//
双设备监考 开麦
除了担心自己双下巴会暴露出来
还要担心家人突然喊你吃饭、楼上装修等不确定因素
线上考试和线下还有一点不同的是:
在学校考试时想上厕所可以举手示意老师
换成线上就只能老老实实待到考试结束
@莫日暮:我感觉线上考试比线下考试更累,要坐在电脑面前两个小时答题,还得保证自己的脸一直在手机摄像头画面里。
@Floral47:线上考试也太难了吧,我就考一门而已,还得买手机、手机支架、摄像头、A4纸……让原本就不富裕的家庭雪上加霜。
@WINNIWS:刚刚结束第一场线上考试,像菜市场一样,猫声、喇叭声、嗡嗡声、电话声、键盘声……当然不可忽视的是老师的“XX同学,调一下摄像头角度”“XX,又挡住摄像头了”。
@荒媛:线上考试开摄像头真是太麻烦了,头不能低,不能偏,动了就会抓拍,抓拍了就可能判异常,异常了这场考试就可能挂了,又让我们手写答题,写字不得低头啊!
05
Tips
1、用于答题和监考的电子设备提前充电:考生要事先在一臂范围内准备好移动电源或者充电器,以防答题中途电源不足,但又不得离开监控的指定区域。
2、认真调试设备,提前模拟考试情景:假设遇上停电断网、系统崩溃等情况,随机应变,如,将WIFI换成数据;或是在网上查找相关的经验贴,准备自己的Plan B。
3、保持良好心态:避免因网络卡顿、停电断网等外部因素而心浮气躁,稳定自身情绪冷静处理,及时向老师反映情况,根据指示进一步调整。
外部不确定的因素总是很多
与其现在担心设备会不会出问题
不如把自己手头能做的准备工作都做好
剩下的事情就交给当天的考试了
如果当天考试真的出现意外情况
告诉自己一定不要慌
按照学校和老师的指示
一步步进行调整,听从安排
尽量不要让负面情绪影响自己,稳定好心态
使用Mask R-CNN和Python查找空闲停车位附完整代码
在大多数城市里,寻找停车位总是很难。本文的思路是将一个摄像头指向窗外,并使用深度学习让计算机在停车位空闲时能够进行实时检测。
这可能听起来相当复杂,但是通过深度学习构建这个版本的工作版本实际上非常快速和简单。所以让我们花几分钟时间,用Python和深度学习构建一个高精度的停车位通知系统吧!
问题分解
当我们想用机器学习来解决一个复杂的问题时,第一步是将问题分解成简单任务的序列。然后,使用我们的分解作为指导,我们可以从机器学习工具箱中取出不同的工具来解决每个较小的任务。通过将几个小的解决方案链接到一个管道中,我们将得到一个可以完成一些复杂任务的系统。
任务分解如下(最后一步可以根据自己使用不同的消息通知系统):
机器学习管道的输入是来自指向窗口的普通网络摄像头的视频流:
摄像头的视频示例
我们将通过管道传递每帧视频,一次一帧。
管道的第一步是检测视频帧中所有可能的停车位。显然,我们需要知道图像的哪些部分是停车位才能检测到哪些停车位未被占用。
第二步是检测每帧视频中的所有汽车。我们将跟踪每辆车从一帧到另一帧的移动。
第三步是确定哪些停车位目前被汽车占用,哪些不是。这需要结合第一步和第二步的结果。
最后一步是在停车位变得新的时候发送通知(根据自己的实际情况调整)。这将基于视频帧之间的汽车位置的变化。
我们可以使用各种技术以多种不同方式完成这些步骤。构建此管道有很多种方法,不同的方法将有不同的优点和缺点。
检测图像中的停车位
以下是我们的相机视图:
我们需要能够扫描出这张图片,然后找到可以停车的区域,就像这样
城市街道上的有效停车位
懒惰的方法是手工将每个停车位的位置硬编码到程序中,而不是试图自动检测停车位。但是,如果我们移动摄像机,或者想要探测到另一条街上的停车位,我们就必须手动对停车位位置进行硬编码。这很糟糕,所以让我们找到一种自动检测停车位的方法。
一个想法可能是寻找停车计时器并假设每个计量表旁边都有一个停车位:
检测图像中的停车计时器
但这种方法存在一些复杂性。首先,并非每个停车位都有停车计时器 - 事实上,我们最感兴趣的是找到我们无需付费的地点!其次,只知道停车计时器的位置并不能确切地告诉我们停车位的确切位置。
另一个想法是建立一个对象检测模型,寻找绘制在道路上的停车位标记,如下图所示:
注意黄色标记 - 这些是在道路上绘制每个停车位的边界的地方
但这种做法也很痛苦。首先,我所在城市的停车位线标记非常小,很难从远处看,所以用电脑也难以察觉。第二,街道上到处都是各种不相关的线条和标记。将哪些线路划分为停车位以及哪条线路是车道分隔线或人行横道是很困难的。
到底什么是停车位?停车位就是一个停车时间很长的地方。所以我们可能根本不需要检测停车位。为什么我们不能检测出长时间不动的车,然后假设它们停在停车位上呢?
换句话说,有效的停车位只是包含非移动车辆的地方:
因此,如果我们能检测到汽车,并找出哪些汽车没有在视频帧之间移动,我们就能推断出停车位的位置。很简单——让我们继续检测汽车!
检测图像中的汽车
我们可以使用许多机器学习方法来检测图像中的对象。以下是一些最常见的对象检测算法:
训练一个HOG(方向梯度直方图)物体探测器并将其滑过我们的图像以找到所有的汽车。这种较旧的非深度学习方法运行起来相对较快,但它不能很好地处理在不同方向上旋转的汽车。
训练CNN(卷积神经网络)物体探测器并将其滑过我们的图像,直到我们找到所有的汽车。这种方法是准确的,但效率不高,因为我们必须使用CNN多次扫描相同的图像才能找到整个图像中的所有汽车。虽然它可以很容易地找到以不同方向旋转的汽车,但它需要比基于HOG的物体探测器更多的训练数据。
使用更新的深度学习方法,如Mask R-CNN、Faster R-CNN或YOLO,它结合了CNN的准确性、巧妙的设计和高效的技巧,大大加快了检测过程。只要我们有大量的训练数据来训练模型,这将运行得相对较快(在GPU上)。
一般来说,我们希望选择最简单的解决方案,以最少的训练数据完成工作,而不是假设我们需要最新的算法。Mask R-CNN是一个合理的选择。
Mask R-CNN体系结构被设计成使得它在不使用滑动窗口方法的情况下以计算高效的方式检测跨越整个图像的对象。换句话说,它运行得相当快。使用GPU,我们应该能够以每秒几帧的速度检测高分辨率视频中的对象。对于这个项目来说应该没问题。
此外,Mask R-CNN为我们提供了有关每个检测到的对象的大量信息。大多数对象检测算法仅返回每个对象的边界框。但Mask R-CNN不仅会给我们每个对象的位置,还会给我们一个对象轮廓(或mask),如下所示:
为了训练Mask R-CNN,我们需要大量我们想要检测的对象图片。我们可以去外面拍摄汽车照片并追踪这些照片中的所有汽车,但这需要几天的工作。幸运的是,汽车是许多人想要检测的常见物体,因此汽车图像的几个公共数据集已经存在。
有一个名为COCO的流行机器学习数据集(http://cocodataset.org/),其中包含使用object masks注释的图像。在此数据集中,已经概述了超过12,000张汽车图像。这是COCO数据集中的一个图像:
COCO数据集中的图像,其中已经列出了对象
该数据非常适合训练Mask R-CNN模型。
我们可以从预先训练好的模型开始,而不是训练我们自己的机器学习模型,该模型可以开箱即用地检测汽车。对于这个项目,我们将使用来自Matterport的大型开源Mask R-CNN实现(https://github.com/matterport/Mask_RCNN),它带有预训练的模型。
如果我们在相机图像上运行预训练的模型,这就是开箱即可检测到的机器学习模型:
我们的图像(使用默认的COCO对象被识别) - 汽车,人,交通灯和树
我们不仅确定了汽车,而且我们也得到交通信号灯和人等信息。
对于图像中检测到的每个对象,我们从Mask R-CNN模型中得到4个东西:
检测到的对象类型(作为整数)。经过预训练的COCO模型知道如何检测80种不同的常见物体,如汽车和卡车。
物体检测的置信度得分。数字越大,模型就越能确定正确识别对象。
图像中对象的边界框,以X / Y像素位置给出。
位图“mask”,用于指示边界框内的哪些像素是对象的一部分,哪些不是。使用mask数据,我们还可以计算出对象的轮廓。
下面是使用Matterport的Mask R-CNN实现的预训练模型以及OpenCV来检测汽车边界框的Python代码:
当您运行该Python脚本时,您将在屏幕上看到一个图像,每个检测到的汽车周围都有一个框,如下所示:
每辆检测到的汽车周围都有一个绿色的边框
并且您还将获得在控制台中打印的每个检测到的汽车的像素坐标,如下所示:
我们已成功检测到图像中的汽车。
检测空闲停车位
我们知道图像中每辆车的像素位置。通过连续观看多个视频帧,我们可以轻松地确定哪些车辆没有移动,并假设这些区域是停车位。但是,我们如何检测汽车何时离开停车位呢?
问题是我们图像中汽车的边界框部分重叠:
即使对于不同停车位的汽车,每辆汽车的边界框也会重叠一点
因此,如果我们假设每个边界框都代表一个停车位,那么即使停车位是空的,这个框也有可能被汽车部分占用。我们需要一种方法来测量两个对象有多少重叠,这样我们就可以检查“大部分是空的”框。
我们将使用的措施称为Intersection Over Union或IoU。通过查找两个对象重叠的像素数量并将其除以两个对象所覆盖的像素数量来计算IoU,如下所示:
这将为我们提供汽车边界框与停车位边界框重叠的程度。有了这个,我们可以很容易地确定汽车是否在停车位。如果IoU测量值很低,如0.15,那意味着汽车并没有真正占用大部分停车位。但如果措施很高,如0.6,这意味着汽车占据了大部分停车位区域,因此我们可以确定该空间被占用。
由于IoU在计算机视觉中是一种常见的度量方法,所以您所使用的库通常已经实现了IoU。实际上,Matterport Mask R-CNN库将它作为一个名为mrcnn.utils.compute_overlaps()的函数包含进来,因此我们可以直接使用该函数。
假设我们在图像中有一个表示停车场的边界框列表,检查检测到的车辆是否在这些边界框中,只需添加一两行代码:
# Filter the results to only grab the car / truck bounding boxes car_boxes = get_car_boxes(r['rois'], r['class_ids']) # See how much cars overlap with the known parking spaces overlaps = mrcnn.utils.compute_overlaps(car_boxes, parking_areas) print(overlaps)
结果如下:
在这个2D数组中,每一行表示一个停车位边界框。同样,每一列表示被检测到的车辆与停车位的重叠程度。得分为1.0意味着汽车完全占据了空间,得分为0.02这样的低分意味着汽车接触了空间,但并不占据大部分区域。
要找到未占用的停车位,只需检查数组中的每一行。如果所有的数字都是零或者很小,那就意味着没有任何东西占据这个空间。
但是请记住,在实时视频中,对象检测并不总是完美的。尽管Mask R-CNN是非常精确的,但它偶尔也会在一段视频中漏掉一两辆车。所以在标记一个停车位是空闲的之前,我们应该确保它在一段时间内是空闲的——也许是5到10个连续的视频帧。这将防止系统仅仅因为目标检测在一帧视频中出现了暂时的小故障就错误地检测到空闲停车位。一旦我们看到我们至少有一个停车位为几个连续的视频帧空闲,我们就准备发送一个通知消息了!
发送消息
我们的管道的最后一步是当我们发现几个视频帧的停车位已经空闲时发送消息提醒。
Python完整实现
让我们将管道的每一步组装成一个Python脚本。这是完整的代码:
import osimport numpy as npimport cv2import mrcnn.configimport mrcnn.utilsfrom mrcnn.model import MaskRCNNfrom pathlib import Path#from twilio.rest import Client# Configuration that will be used by the Mask-RCNN libraryclass MaskRCNNConfig(mrcnn.config.Config): NAME = "coco_pretrained_model_config" IMAGES_PER_GPU = 1 GPU_COUNT = 1 NUM_CLASSES = 1 80 # COCO dataset has 80 classes one background class DETECTION_MIN_CONFIDENCE = 0.6# Filter a list of Mask R-CNN detection results to get only the detected cars / trucksdef get_car_boxes(boxes, class_ids): car_boxes = [] for i, box in enumerate(boxes): # If the detected object isn't a car / truck, skip it if class_ids[i] in [3, 8, 6]: car_boxes.append(box) return np.array(car_boxes)# Twilio configtwilio_account_sid = 'YOUR_TWILIO_SID'twilio_auth_token = 'YOUR_TWILIO_AUTH_TOKEN'twilio_phone_number = 'YOUR_TWILIO_SOURCE_PHONE_NUMBER'destination_phone_number = 'THE_PHONE_NUMBER_TO_TEXT'client = Client(twilio_account_sid, twilio_auth_token)# Root directory of the projectROOT_DIR = Path(".")# Directory to save logs and trained modelMODEL_DIR = os.path.join(ROOT_DIR, "logs")# Local path to trained weights fileCOCO_MODEL_PATH = os.path.join(ROOT_DIR, "mask_rcnn_coco.h5")# Download COCO trained weights from Releases if neededif not os.path.exists(COCO_MODEL_PATH): mrcnn.utils.download_trained_weights(COCO_MODEL_PATH)# Directory of images to run detection onIMAGE_DIR = os.path.join(ROOT_DIR, "images")# Video file or camera to process - set this to 0 to use your webcam instead of a video fileVIDEO_SOURCE = "test_images/parking.mp4"# Create a Mask-RCNN model in inference modemodel = MaskRCNN(mode="inference", model_dir=MODEL_DIR, config=MaskRCNNConfig())# Load pre-trained modelmodel.load_weights(COCO_MODEL_PATH, by_name=True)# Location of parking spacesparked_car_boxes = None# Load the video file we want to run detection onvideo_capture = cv2.VideoCapture(VIDEO_SOURCE)# How many frames of video we've seen in a row with a parking space openfree_space_frames = 0# Have we sent an SMS alert yet?sms_sent = False# Loop over each frame of videowhile video_capture.isOpened(): success, frame = video_capture.read() if not success: break # Convert the image from BGR color (which OpenCV uses) to RGB color rgb_image = frame[:, :, ::-1] # Run the image through the Mask R-CNN model to get results. results = model.detect([rgb_image], verbose=0) # Mask R-CNN assumes we are running detection on multiple images. # We only passed in one image to detect, so only grab the first result. r = results[0] # The r variable will now have the results of detection: # - r['rois'] are the bounding box of each detected object # - r['class_ids'] are the class id (type) of each detected object # - r['scores'] are the confidence scores for each detection # - r['masks'] are the object masks for each detected object (which gives you the object outline) if parked_car_boxes is None: # This is the first frame of video - assume all the cars detected are in parking spaces. # Save the location of each car as a parking space box and go to the next frame of video. parked_car_boxes = get_car_boxes(r['rois'], r['class_ids']) else: # We already know where the parking spaces are. Check if any are currently unoccupied. # Get where cars are currently located in the frame car_boxes = get_car_boxes(r['rois'], r['class_ids']) # See how much those cars overlap with the known parking spaces overlaps = mrcnn.utils.compute_overlaps(parked_car_boxes, car_boxes) # Assume no spaces are free until we find one that is free free_space = False # Loop through each known parking space box for parking_area, overlap_areas in zip(parked_car_boxes, overlaps): # For this parking space, find the max amount it was covered by any # car that was detected in our image (doesn't really matter which car) max_IoU_overlap = np.max(overlap_areas) # Get the top-left and bottom-right coordinates of the parking area y1, x1, y2, x2 = parking_area # Check if the parking space is occupied by seeing if any car overlaps # it by more than 0.15 using IoU if max_IoU_overlap < 0.15: # Parking space not occupied! Draw a green box around it cv2.rectangle(frame, (x1, y1), (x2, y2), (0, 255, 0), 3) # Flag that we have seen at least one open space free_space = True else: # Parking space is still occupied - draw a red box around it cv2.rectangle(frame, (x1, y1), (x2, y2), (0, 0, 255), 1) # Write the IoU measurement inside the box font = cv2.FONT_HERSHEY_DUPLEX cv2.putText(frame, f"{max_IoU_overlap:0.2}", (x1 6, y2 - 6), font, 0.3, (255, 255, 255)) # If at least one space was free, start counting frames # This is so we don't alert based on one frame of a spot being open. # This helps prevent the script triggered on one bad detection. if free_space: free_space_frames = 1 else: # If no spots are free, reset the count free_space_frames = 0 # If a space has been free for several frames, we are pretty sure it is really free! if free_space_frames > 10: # Write SPACE AVAILABLE!! at the top of the screen font = cv2.FONT_HERSHEY_DUPLEX cv2.putText(frame, f"SPACE AVAILABLE!", (10, 150), font, 3.0, (0, 255, 0), 2, cv2.FILLED) # If we haven't sent an SMS yet, sent it! if not sms_sent: """ print("SENDING SMS!!!") message = client.messages.create( body="Parking space open - go go go!", from_=twilio_phone_number, to=destination_phone_number ) """ sms_sent = True # Show the frame of video on the screen cv2.imshow('Video', frame) # Hit 'q' to quit if cv2.waitKey(1) & 0xFF == ord('q'): break# Clean up everything when finishedvideo_capture.release()cv2.destroyAllWindows()
要运行此Python代码,您需要先安装Python 3.6 ,Matterport Mask R-CNN和OpenCV。