2

2015 杭州黑客马拉松

上个周末(10月24,25号)第一次参加了黑客马拉松(hackathon),其实之前或多或少都了解过一些,这次比赛是偶然间上sf看到的,我几乎没多想就报名参加了,期间怂恿了几名同事一起去玩一下无奈他们都是比较懒的人,所以这次的比赛我独身一人前往


大赛回顾

由于这是我第一次参加hackathon,之前通过看2014比赛的视频发现了有一些参赛者是开发智能硬件这块的,起初我以为大赛的主办方会提供一些智能硬件和API供我们选择使用。等到比赛开始才知道原来hackathon就是任意发挥,不过今年还是有主题的:技术与生活。


这次由于是一个人来参加的,我是直接在现场组队,非常幸运的遇到了“陆熠”,“Arthur yang”,“老方”,“小江”,他们都是非常优秀有潜力的hacker,虽然最后没有获奖有点遗憾,但是一起codeing真的是非常享受的一件事。附一张合照:
图片描述

Hack

这次比赛我们的作品是“智能抓拍”,就是利用“陆熠”同学带来的“直升飞机”飞行拍摄视频,通过人脸识别将头像显示到网页上。


起初我们的想法是拍摄照片然后将人身上的服饰抓取出来,然后通过数据库匹配相应的服饰(比如找到某宝的同款)无奈队伍里没有对图像算法非常精通的人,所以我们只能改变计划

使用到的技术

主要的功能实现有3块

  • 1:将直升飞机拍摄的视频转化为图片

  • 2:将图片进行人脸识别

  • 3:将人脸图片进行展示

直升飞机视频转化图片的模块由“陆熠”,“Arthur yang”,“老方”合作完成,大概就是使用OpenCV的api将视频流(RTSP协议传输)转化为图片,然后以5秒左右的时间发送到服务器(为什么这里要5秒左右,是因为视频流是连续的,如果不间断的发送图片就会导致人脸识别的重复,虽然代码是这么写的,但是实际效果还是重复的居多),大致的过程如下:

直升机->iPhone: 利用wifi发送视频流(RTSP协议)
iPhone->服务器: 发送图片(间隔5秒)

服务器模块是我实现的,大概流程就是将iPhone传输过来的图片,上传到阿里百川的CDN上,然后再调用Face++的接口将图片的信息解析出来

服务器->百川CDN: 上传图片
服务器->Face++API: 发送图片url
Face++API->服务器: 返回相关信息

后端代码是直接使用java+mysql实现的,并没有什么太多的难度。代码就不上传了,因为时间紧写的也比较丑陋


最后就是前端显示的模块,由于我平时写前端不多,所以这次的大多数时间都花在前端调试上面,就是将识别出人脸的图片实时的更新到“1024”的字幕上,最终效果如下:
图片描述

其实还有一个前端展示的模块就是:iPhone传输图片后,将识别出的人脸的信息发布到网页上(性别,年龄,状态)这里是直接调用了Face++的api,因为没有时间给我们自己hack图像识别的算法


关于人脸识别重复的问题,最后由于网络的io时间过长,我不想每次都匹配CDN中的图片导致实时性的下降就放弃这个操作,所以最后得到的图片效果并不佳

后记

非常可惜由于第二天下午有事,我不能和组员一起参与作品的展示,还是非常高兴能参与hackathon这样的活动,但是以后估计不会再熬夜Coding了,身体有点小吃不消,下次有机会还是会来继续hack,最后附一张彩蛋:(广大程序员的梦想)

图片描述


风花狂月
132 声望7 粉丝

just a hack