编程马拉松时间(16小时登顶黑客马拉松)
编程马拉松时间(16小时登顶黑客马拉松)如今,狗已经成了我们生活中再熟悉不过的一部分。除了品种多样,不同品种的狗交配产下的后代,造成外观五花八门。狗是人类的好朋友,狗伴随了人类文明演化的历程。虽然关于人类是什么时候把狼驯化成了狗,科学家至今没有达成统一的意见。但毫无疑问,狗的物种多样,是人类驯化史上的一个奇观。有高的狗,有矮的狗。有萌的狗,有萌的狗,有萌的狗。
来源:LAHacks
作者:闻菲
【新智元导读】美国西部最大黑客马拉松LA Hacks 2018上周落下帷幕,36小时的比赛时间里,加州理工学院大二学生、美籍华人Eric Zhao仅用16小时,完成了一个“狗脸计算器”并获得优胜。借用词嵌入的思想提出了图像嵌入,这款计算器不仅能计算宠物狗面部相似度,还能计算两只不同的狗“加起来”是什么狗。
狗是人类的好朋友,狗伴随了人类文明演化的历程。虽然关于人类是什么时候把狼驯化成了狗,科学家至今没有达成统一的意见。但毫无疑问,狗的物种多样,是人类驯化史上的一个奇观。
有高的狗,有矮的狗。
有萌的狗,有萌的狗,有萌的狗。
除了品种多样,不同品种的狗交配产下的后代,造成外观五花八门。
如今,狗已经成了我们生活中再熟悉不过的一部分。
你有没有想过,两只狗之间的相似度是多少?有没有办法快速区分这只汪和那只汪呢?
比如快速区分上面这几只
现在,我们有了一个好方法。
还能在手机上运行。
在前不久落下帷幕的LAHacks 2018上,加州理工学院大二学生、美籍华人Eric Zhao,提交了一个“狗脸计算器”,不仅能计算两只宠物狗的面部相似度,还能进行“狗狗加减”——输入两只狗的图片,看看它们加起来会得出一只怎样的狗。
这个创意不仅有趣,而且Eric在仅仅16个小时的时间里,就完成了从项目提出到最终demo的全过程。
仅16小时完成黑客马拉松并获优胜,百度开源机器学习框架PaddlePaddle是秘密武器LA Hacks(洛杉矶黑客马拉松),是美国西部地区最大的Hacks活动。
黑客马拉松(hackathon)是开发者的狂欢。在一场黑客马拉松里,一众开发者聚在一起,在为期几天到一周的时间里,从零开始编写一款应用程序。
2018年的LA Hack在UCLA(加州大学洛杉矶分校)举行,吸引了上千名来自当地名校的顶尖黑客,比赛时间是连续36小时。
今年的优胜者,就是上面提到的,加州理工学院大二学生、美籍华人Eric Zhao提出的“狗脸计算器”。36个小时的比赛,Eric仅用16小时便成功登顶。
如何如此快速做到这一点?
Erci将他成功的一大原因,归功于使用的平台——来自中国的分布式机器学习框架、由百度在2016年8月底开源的PaddlePaddle。“我使用Nvidia-Docker和PaddlePaddle自动部署和训练模型。这让我可以专注于编码而不是设置服务器。”Eric在接受新智元采访时表示:“PaddlePaddle直观的Python framework让我能够在几分钟内实现新的神经网络设计。”
Eric Zhao 同学
Eric告诉新智元,据他所知,在美国最常用或者说最受欢迎的框架是Torch,Tensorflow和Theano(虽然Theano已经停止更新),相比这些竞争对手,Eric认为PaddlePaddle的优势在于易学、易上手。
“我在其他机器学习框架中使用的几乎所有内容,都以某种形式在PaddlePaddle上提供。从速度上说,PaddlePaddle很快,虽然不是我用过最快的。
“从功能上说,PaddlePaddle挺标准,但我个人认为其框架设计比我用过的大多数框架都更直观。”不大懂中文的Eric不得不将大部分PaddlePaddle的中文文档翻译成英文,但他仍然能够很快地学习,“我认为这证明了PaddlePaddle设计的质量。”Eric说。
“PaddlePaddle易学易上手,虽然结构简单,但保留的功能是核心技术,极大地提高了使用者的效率。我在使用PaddlePaddle的过程中发现,它是在云上搭建GPU集群最方便的方法,能在较短的时间内对复杂模型进行逐层调优可视化,使我的作品更具竞争力。”
Eric认为百度开源机器学习框架PaddlePaddle的设计,比他用过的大多数框架都更直观
狗脸计算器:吉娃娃 马尔济斯 = ?Eric的“狗脸计算器”,基于词嵌入(word embeddings)的方法,通过为犬类图像嵌入允许相似度识别和其他语义操作的模型,成功实现了“计算宠物狗面部相似度”的想法。
宠物狗图像嵌入
在Eric的模型中,他在SqueezeNet上堆叠了一个Siamese Network(孪生网络)来生成宠物狗图像嵌入。这些嵌入表示两张狗图片的相似程度。你还可以添加和减去这些嵌入来查找与其相似或不相似的狗。
其中,SqueezeNet[1]模型由伯克利和斯坦福的研究人员提出,其设计目标不是为了得到最佳的CNN识别精度,而是希望在满足基本识别精度的前提下,尽可能简化网络复杂度。孪生网络[2]架构则能够判断两张图片属于同一个类别的概率。不仅如此,孪生网络还能实现少样本学习——具体可以看新智元之前的文章:深度神经网络 One-shot Learning:孪生网络少样本精准分类——这在一定程度上解决了图像识别/分类任务中,需要大量训练图像的问题。
Eric使用斯坦福的一个宠物狗图像数据集训练SqueezeNet,然后在这个预训练模型的基础上,冻结前几层,并将最后几层替换为一个Siamese Network。
Eric Zhao演示狗脸计算器网络架构:SqueezeNet Siamese网络
“因为我使用了一个非常紧凑的SqueezeNet模型,所以我的神经网络很小,可以在手机上运行。此外,我的Siamese结构使图像嵌入具有良好的几何特性,可以添加/减少宠物狗图像。”Eric介绍说。
最终得到的“狗脸计算器”,能用来计算两只狗的相似度,也能计算两只狗加起来能得到什么种类的狗,或者更准确地说,与现有哪个品种的狗最相似。
例如:
“吉娃娃1”与“吉娃娃2”距离为0.724,而“马尔济斯1”与“吉娃娃2”距离为0.898,后者比前者距离大,因为显然吉娃娃之间相似度更高。
第一种狗与第二种狗加起来,会得到什么狗呢?答案是等号右边的狗,相似度为96%。这很好理解,第三种狗综合了前面两只各自的特征。
你还能使用Eric的狗脸计算器实现别的有趣的玩法,他将完整的项目包括代码,都公布在了Github。
Eric狗脸计算器完整项目:
github.com/ericzhao28/puppy_image_embeddings
参考资料
[1] https://arxiv.org/pdf/1602.07360.pdf
[2] http://www.cs.cmu.edu/~rsalakhu/papers/oneshot1.pdf
【加入社群】
新智元 AI 技术 产业社群招募中,欢迎对 AI 技术 产业落地感兴趣的同学,加小助手 aiera2015_1 入群;通过审核后我们将邀请进群,加入社群后务必修改群备注(姓名 - 公司 - 职位;专业群审核较严,敬请谅解)。