BOP上届冠军分享 | 队长杨剑飞:日夜奋战,我们是一支四人的战队!

  

  

  2017微软编程之美挑战赛决赛已经打响,8月15日北京微软大厦,决赛队伍将带着各自的作品展开巅峰对决!在期待决战的同时,我们为大家带来了去年冠军队伍四位同学的故事,分两次分享。其中除了他们的个人感受,更有珍贵的参赛经验分享,BOPers不要错过哦!

  

  风雨交加,日夜兼程,随着火车到站的轰鸣声,我睡眼惺忪地爬起了起来。拉开车厢的窗帘,清晨的阳光肆意地洒在脸上,洗刷了从广州远道而来的一路的疲惫。我赶忙叫起两个队友,“抵达上海,准备出发!

  

  忘了自我介绍,我叫杨剑飞,中山大学数据与计算机科学学院2012级的学生。去年携两名学弟高逸斌、王钦首次打进由教育部、微软与IEEE联合举办的2016编程之美挑战赛全国总决赛。对我而言这是本科最后一战,也是最有含金量的一战,因为我已是南洋理工大学的在读博士,开始追寻科研的梦想。

  

  赛前:未雨绸缪

  到达指定酒店后,我们稍作整顿便开始做比赛的日程规划。比赛将于次日上午公布赛题,第三日上午提交并答辩,现场编程时间只有12小时。我们通过分析往年题目推测出微软提供的API应该会用得到,所以我们决定在赛题公布前先有针对性地把可能用到的API接口写好,占据时间上的主动当晚我们与所有参赛人员聚餐,并在team building中与来自山东大学主修工业设计的殷锟同学组队,队名 “多啦A梦队”。

  

  

  赛中:日夜奋战

  经过一晚修整,各支队伍集结在微软上海紫竹园区会议室,等待题目的宣布与比赛的开始。本次比赛除了种子团队外,还有自密歇根大学与英属哥伦比亚大学来中国交流的外卡队。随着大屏幕上倒计时的开启,赛题也通过邮件发到了各队手中:第一题是“语音搜图”的智能电子相框,即通过一段语音在图片库中找到想要的图片,属于内容较为限定形式比较开放的半开放题目;第二题是“学术搜索可视化”,即将学术搜索扩展并可视化,属于内容与形式都开放的题目,我们感到比较难以驾驭;第三题是外卡队专题“数字金融犯罪侦查”,即利用比特币区的大数据分析找到金融犯罪的银行账户。经过头脑风暴与激烈讨论,我们从应用场景、可发挥程度和技术实现度对题目进行评价,并慎重决定决定选择第一题,也是更多队认为复杂的一题。

  选题过后,作为队长我首先与三名队员进行技术讨论,确定了此题在我们技术范围内可以找到的应用点和创新点——匹配算法与手势识别的融入,之后迅速分配任务,明确每个人的职责,王钦负责前端和手势识别部分的构建,高逸斌负责后台服务器的逻辑和每个API接口的书写,美女设计师殷锟负责将想法可视化并提供网页前端的美工切片,我负责核心算法的模型训练和图片数据集的预处理,并充当产品经理的角色统筹决策。

  

  按照我们的系统设计流程,语音作为原始输入后通过微软语音识别接口转化为文字,之后我们使用一个官方提供的LUIS语义理解模型将文字转化为语义,这时我们就找到了语音指令当中的命令和特征标签,比如“找到上海拍摄的下雨的图片”中“找到图片”是命令而“上海”、“下雨”是特征标签。这里的特征标签会与图片库中每张图片的特征标签做对比匹配,从而找到准确的匹配图片。除了队友们负责的如何更友好的呈现外,我在算法上要做的主要工作就是匹配算法和图片的预处理。

  匹配算法决定了找到图像的准确率,经过询问专门做文本挖掘的朋友,我们选择了在这里非常适合应用的Word2Vec算法,这个算法是将词语转化为数学向量的一种算法,在K维的向量空间中,词语的语义信息更多地被提取了出来,从而可以度量两个词语间的相似程度,比如“动物”和“狗”,“牛排”和“刀叉”的相似度高,那么我们就可以更加精确而广泛地找到图片。我们使用维基百科中文数据进行训练,经过测试,模型对于生活词汇较为准确。

  

  经过一天的努力,我们基本完成了每个部分的原生代码构建,在回酒店的车上我们商讨了如何结合并决定彻夜奋战!负责前后端的两个学弟努力地调试和对接,直到凌晨4点才完工,而我的模型依然在训练中,我在提前写好测试代码后也昏昏入睡。同房间的其它队同学亦彻夜未眠,直接去附近的上海交通大学闵行校区通宵编程。压力袭来,我们有条不紊

  第二天清晨,惊喜地看到模型训练结束、成功载入并查询相近词成功后,我兴奋地找到只睡了3个小时的学弟,将算法融入后布置了上午的任务,将Web前端的鼠标操作全部改成基于手势识别的操作!为了完成比赛所需的答辩文档与PPT,我转而投入到另一个问题中——如何更好更快地将我们的idea呈现给参观人员与大赛评委。

  

  展示:一朝亮剑

  首先,我们将作品命名为“Percepicture”,即感知的图片,通过语音与手势灵活智能地寻找和操控图片。紧接着设计师殷锟将她设计的系统流程图和用户UI图展示给我。

  

  设计图简明美观,详细地介绍了整个流程,我配上节介绍文字如下:

  基于Web前端和Python服务器所构建的“Percepicture”语音搜图系统,通过微软认知服务中的语音识别API和语言理解智能服务(LUIS)API将用户的语音通过理解、转化得到用户的意图。而图片库中的图片则是经过图像识别API进行预处理,将图片的特征信息提取出来。当系统将用户意图与图片库中的图片特征进行匹配就可以得到用户想要的图片了。在关键词匹配的算法方面,同学们创新地使用了word2vec深度学习模型。他们对图片的标签语料进行训练并把词语映射到高维向量空间中,将词语匹配过程转化成数学向量相似度计算。在当今的大数据时代,这既扩展了搜索的广度又加深了搜索的深度,从而提高了搜索的准确率。在UI方面,为了使交互更加友好同时符合展览应用场景,系统中植入了基于手势识别的体感操作,整个系统可以通过语音和体感两种方式进行控制,大大增强了趣味性和互动性。

  与殷锟沟通ppt的制作顺序后,我急忙赶去学弟们一侧录制demo视频,视频中要测试和体现我们所说的一切功能,并让评委老师感觉到生动和有趣。

  紧张的编程阶段结束后,即将迎来的是demo展示会。为了展示顺利、不出bug,我们甚至没有吃午饭。demo展示中每个队伍一块展板一张桌子,来自微软的员工和外界媒体评审来一一参观。在此期间我还惊喜地遇到了去年在台湾大学参加HackNTU认识的廖教授,原来这次的外卡题就是廖老亲自出的题目。demo展示环节中,我们也走访参观了其它队伍的作品,来自北大、北邮、上交、复旦等高校的选手都尝试用不同的解决办法进行技术攻坚,遇到难题时相互启发找到了突破方案。而来自台湾大学的创意赛选手则非常擅于展示和表达,也给人留下深刻的印象;来自江南大学的创意赛选手在短时间内理解了作品背后的算法并做了清晰地阐述和表达,让人佩服。

  

  随之而来的是封闭答辩,评委老师在看过每个队的实物demo后,又经过我们简洁有力的ppt展示和清楚明了的demo视频展示,对我们队伍和作品给出了高度评价。到那时,我们忐忑不安的心已经安定了下来,作品已经按照我们的idea完工,答辩也顺利结束,结果对我们来说只是外界的认同与否,而我们内心对顺利结束编程和成功团队合作的欣喜更为重要。我们喜笑颜开地与其它队侃起了大山,聊到两天比赛中发生的种种囧事,大家笑得很开心。几个山东人凑到了一起侃起了家乡,侃起了看似久远的高考往事……

  

  夺魁:多啦A梦队!

  “所以我们揭晓本次微软编程之美2016挑战赛的冠军是——多啦A梦队!”随着主持人在颁奖晚宴上隆重宣布,我们队惊喜地跳了起来。24小时的编程顺利结束,大赛组委会老师和同学们的认可让我们感到骄傲!我们通过创新的设计、明确的分工、不懈的编程和细致的合作创造了团队的力量,赢得了比赛,赢得了前往美国微软总部游学的机会!颁奖后我们队四人还在美丽的上海滩扮演了许文强与冯程程,大家在欢声笑语中结束了整个比赛。

  

  返程的高铁上,天空又淅淅沥沥下起了小雨,我们的心情却如阳光灿烂,短短的三天时间里,我们完成了一个创新的项目,熔炼了一个成功的团队,认识了一拨儿志同道合的朋友,值!

  看着窗外快速掠过的上海,我们只能挥手说再见,但对于这段珍贵而劳累的比赛记忆,it never fades away!Lucky to meet you guys!See you around!

声明:本文由入驻搜狐公众平台的作者撰写,除搜狐官方账号外,观点仅代表作者本人,不代表搜狐立场。
推荐阅读