如何评价aiai challenger 知乎比赛

资讯 | 总奖金 200 万的 AI Challenger 开赛,可申请免费 GPU 资源
记者 | 周翔
8 月 14 日,创新工场、搜狗和今日头条联合宣布共同发起“AI Challenger 全球 AI 挑战赛”。其中,CSDN 作为选手社区,为大赛提供支持。(点击查看《奖金200万,千万数据规模,创新工场搜狗今日头条联合发起迄今国内最大AI挑战赛》)
本届 AI Challenger 大赛的主赛道竞赛分别是:人体骨骼关键点检测竞赛、图像中文描述竞赛、场景分类竞赛、英中机器文本翻译竞赛、英中机器同声传译竞赛。
昨日( 9 月 4 日),首届“AI Challenger 全球 AI 挑战赛”于正式拉开帷幕,各路高手将展开为期三个月的比拼,并于 12 月中旬进行总决赛巅峰对决。获奖团队将分享合计超过 200 万人民币的奖金。
除了奖金之外,参赛选手还有机会进入三家主办方工作、实习或获得投资,并有机会在国际顶级学术会议上分享获奖心得,还将获得包括上海科技大学教授马毅、旷视科技首席科学家孙剑、前 Google 研究院高级管理科学家林德康等十余位国内外人工智能领域顶级专家评委的指导和评价。
另外,大赛主办方表示,将努力为条件有限的参赛选手提供免费 GPU 资源的支持,帮助他们圆梦AI,选手可在各赛道相关数据集下载的页面进行申请。
9月4日10:00,开放训练数据集以及验证数据集。
10月31日23:59:59,大赛报名截止。
12月3日23:59:59,各项竞赛的排名将决定最终的成绩排名。
12月中旬,大赛主赛道各项竞赛的最终榜单排名前五的团队将受邀到现场答辩并参加颁奖典礼。
大赛期间,主赛道及实验赛道还将有双周赛或单周赛并有奖金。
首个实验赛道:虚拟股票趋势预测
据AI科技大本营了解,AI Challenger 的首个实验赛道,是虚拟股票趋势预测,通过对大规模历史数据建模,预测虚拟股票未来趋势,这个实验赛道适合有大数据背景、深度学习的初中级人士参与。
发起这个实验赛道的创新工场表示,金融市场是由大数据驱动的行业,也是最快速被AI冲击的行业之一。金融及相关数据可以说是目前最容易获得、最海量公开、也是非常适合用于机器学习的数据来源。
作为 AI Challenger 第一届大赛中相对低门槛的入门实验赛道,金融AI应用对于科研来说有一定的指导意义。例如,虽然机器学习是目前金融趋势预测、量化投顾的趋势,但基于传统运筹学、统计学思路的方法也有其发展空间,创新工场成立人工智能工程院以来接触到的很多高校中,均有针对这个领域开展研究的老师。接下来三个月,实验赛道在赛题中将公开的脱敏数据,将有助于这些研究者判别科研成果的价值,这个实验赛道便是将大众熟悉的真实场景和前沿科研技术相结合的一个重点尝试。
对股票价格趋势的预测是金融领域极为复杂和极为关键的问题。有效市场假说认为股票价格趋势不可能被预测,然而真实市场由于各种因素的存在并不完全有效,这对于股票市场而言相当于一种“错误”。AI Challenger的虚拟股票趋势预测实验赛道,为参赛者提供了大规模的股票历史数据,从而可以通过集合大家的智慧来纠正股票市场的这些“错误”。
本竞赛数据来源主要以股票及新闻数据为主。竞赛每周一轮。选手通过训练模型,对虚拟股票走势进行预测。每轮结束时统计该轮队伍排名。最终累计每周积分决出最终的大奖。冠军将获得5万元人民币的奖励。同时,每周都会对该轮排名前三的队伍颁发奖金。该实验赛道由创新工场单独发起、管理和运营,奖励由创新工场提供。
创新工场方面表示,自 8 月 14 日开放报名以来,AI Challenger 平台已经汇聚了来自世界各地的参赛者。
来自高校的包括中国清华大学、北京大学、中科院、上海交通大学、复旦大学、中科大、香港科技大学、香港中文大学、台湾大学,美国康奈尔大学、佐治亚理工、纽约大学、英国剑桥大学、帝国理工学院,德国卡尔斯鲁厄大学,法国国立路桥学校,澳洲卧龙岗大学以及日本早稻田大学。
来自公司机构的包括百度、蚂蚁金服、小米、搜狐、奇虎360、众安保险、平安科技、同花顺、陌陌、迅雷、中兴通讯、中国移动、中国电信、格灵深瞳、驭势科技、摩拜,微软、通用电气、英特尔、eBay、Micron、法国巴黎银行,还有神秘的公安部院所。
参赛者中也不乏曾经在各种大赛上叱咤风云的牛人,比如天池阿里移动推荐算法大赛冠军、滴滴DI-tech算法大赛冠军、ImageNet 目标分类任务和定位任务双料冠军、中兴算法精英挑战赛冠军,IBM-滴滴编程马拉松大赛冠军,以及 Kaggle 大赛的众多优胜者。
开放数据集
本次大赛提供了百万量级的计算机视觉数据集、千万量级的机器翻译数据集,包括:超过1000万条中英文翻译数据、70万个人体骨骼关键点标注数据、30万张图片场景标注和语义描述数据。这是国内迄今公开的规模最大的科研数据集,已经在大赛官网(challenger.ai)上线,供参赛选手下载,进行算法设计、模型训练及评估。
1. 人体骨骼关键点数据集:此数据集是目前规模最大,场景、人物动作及身体遮挡情况最复杂的数据集。它使用含有人物的图片,对人体14个骨骼关键点分别作出标注,共有30万张图片,包含了超过100种复杂生活场景内的实际人物动作与姿态,标注人物个数达到70万量级,远超过MSCOCO的10万人、以及MPII的4万人量级。该数据集将挑战现有主流算法的鲁棒性。
基于此数据集的研究成果可以被直接应用于动作分类和识别,动作捕捉,图像和视频内容理解,人机交互,自动驾驶(行人动作和意图识别),安防(异常行为检测),无人零售(消费者行为理解)等领域。
2. 图像中文描述数据集:此数据集是目前规模最大、场景和语言使用最丰富的图片中文描述数据集,共有30万张图片,150万句中文描述,使用了超过100种复杂生活场景的含有人物的图片,而且此数据集的语言描述标注更符合中文语言使用习惯。相对于MSCOCO和Flickr8k-CN,在完整描述图片主体事件的基础之上,该数据集创新性的引入了形容词和中文成语,用以修饰图片中的主要人物及背景事件,大大提升了描述语句的丰富度。本数据集的标注量远大于Flickr8k-CN(8000张图),巨大的数据量和复杂的图片场景将直接挑战现有算法的可用性。
基于此数据集的研究成果可以被直接应用于图像与视频语义理解、图像与视频自动标注、图像与视频内容检索、人工智能辅助教育、机器人视觉、盲人辅助等人工智能相关领域。
3. 英中翻译数据集:此数据集的训练数据量达到1000万句对,每一条数据由一句英文和对照的中文构成,是最大规模的口语领域英中比赛数据集。训练数据全部经过译员检查和矫正,句正确率在97%以上,英中双语句对对照工整、质量高、噪音低。
基于此数据集的研究成果可以被直接应用于机器翻译,尤其是口语机器翻译、同声传译应用。
回复“访谈”,查看吴喜之、周志华、杨强、蚂蚁金服漆远、今日头条李磊的重磅独家访谈实录。
责任编辑:
声明:本文由入驻搜狐号的作者撰写,除搜狐官方账号外,观点仅代表作者本人,不代表搜狐立场。
今日搜狐热点AI Challenger开赛,千万量级数据开放,AI高手将上演巅峰对决 - 知乎专栏
{"debug":false,"apiRoot":"","paySDK":"/api/js","wechatConfigAPI":"/api/wechat/jssdkconfig","name":"production","instance":"column","tokens":{"X-XSRF-TOKEN":null,"X-UDID":null,"Authorization":"oauth c3cef7c66aa9e6a1e3160e20"}}
{"database":{"Post":{"":{"contributes":[],"title":"AI Challenger开赛,千万量级数据开放,AI高手将上演巅峰对决","author":"chuang-xin-gong-chang","content":"日,“AI challenger全球AI挑战赛”正式开赛,来自世界各地的AI高手,将展开为期三个多月的比拼,获胜团队将分享总额超过200万人民币的奖金,并获得顶级AI专家的指导。大赛官网(challenger.ai)同步上线了训练数据集以及验证数据集,供参赛选手下载,进行算法设计、模型训练及评估。参赛团队来自世界各地,包含多位国际顶级AI赛事冠军“AI Challenger全球AI挑战赛”是由创新工场、搜狗和今日头条三家国内人工智能领域领军企业共同发起的竞赛活动,面向人工智能领域科研人才,致力于打造大型、全面的科研数据集与世界级竞赛平台。 自8月14日开放报名以来,AI Challenger平台已经汇聚了来自世界各地的参赛者。 来自高校的包括中国清华大学、北京大学、中科院、上海交通大学、复旦大学、中科大、香港科技大学、香港中文大学、台湾大学,美国康奈尔大学、佐治亚理工、纽约大学,英国剑桥大学、帝国理工学院,德国卡尔斯鲁厄大学,法国国立路桥学校,澳洲卧龙岗大学,日本早稻田大学。来自公司机构的包括百度、蚂蚁金服、小米、搜狐、奇虎360、众安保险、平安科技、同花顺、陌陌、迅雷、中兴通讯、中国移动、中国电信、格灵深瞳、驭势科技、摩拜,微软、通用电气、英特尔、eBay、Micron、法国巴黎银行,还有神秘的公安部院所。参赛者中也不乏曾经在各种大赛上叱咤风云的牛人,比如天池阿里移动推荐算法大赛冠军、滴滴DI-tech算法大赛冠军、ImageNet目标分类任务和定位任务双料冠军、中兴算法精英挑战赛冠军,IBM-滴滴编程马拉松大赛冠军,以及Kaggle大赛的众多优胜者。开放千万量级科研数据集本次大赛提供了百万量级的计算机视觉数据集、千万量级的机器翻译数据集,包括:超过1000万条中英文翻译数据、70万个人体骨骼关键点标注数据、30万张图片场景标注和语义描述数据。这是国内迄今公开的规模最大的科研数据集,已经在大赛官网(challenger.ai)上线,供参赛选手下载,进行算法设计、模型训练及评估。(1)人体骨骼关键点数据集:此数据集是目前规模最大,场景、人物动作及身体遮挡情况最复杂的数据集。它使用含有人物的图片,对人体14个骨骼关键点分别作出标注,共有30万张图片,包含了超过100种复杂生活场景内的实际人物动作与姿态,标注人物个数达到70万量级,远超过MSCOCO的10万人、以及MPII的4万人量级。该数据集将挑战现有主流算法的鲁棒性。基于此数据集的研究成果可以被直接应用于动作分类和识别,动作捕捉,图像和视频内容理解,人机交互,自动驾驶(行人动作和意图识别),安防(异常行为检测),无人零售(消费者行为理解)等领域。(2)图像中文描述数据集:此数据集是目前规模最大、场景和语言使用最丰富的图片中文描述数据集,共有30万张图片,150万句中文描述,使用了超过100种复杂生活场景的含有人物的图片,而且此数据集的语言描述标注更符合中文语言使用习惯。相对于MSCOCO和Flickr8k-CN,在完整描述图片主体事件的基础之上,该数据集创新性的引入了形容词和中文成语,用以修饰图片中的主要人物及背景事件,大大提升了描述语句的丰富度。本数据集的标注量远大于Flickr8k-CN(8000张图),巨大的数据量和复杂的图片场景将直接挑战现有算法的可用性。基于此数据集的研究成果可以被直接应用于图像与视频语义理解、图像与视频自动标注、图像与视频内容检索、人工智能辅助教育、机器人视觉、盲人辅助等人工智能相关领域。(3)英中翻译数据集:此数据集的训练数据量达到1000万句对,每一条数据由一句英文和对照的中文构成,是最大规模的口语领域英中比赛数据集。训练数据全部经过译员检查和矫正,句正确率在97%以上,英中双语句对对照工整、质量高、噪音低。基于此数据集的研究成果可以被直接应用于机器翻译,尤其是口语机器翻译、同声传译应用。 开放数据集能给AI人才带来什么帮助?在人工智能领域,数据的质和量是科学研究与产品技术研发的核心。高质量训练数据对机器学习模型的建立和优化有关键性的作用。建立大规模、高水准的标注数据集,是推动AI科研和技术前进的驱动力。创新工场、搜狗、今日头条三方在“AI Challenger 全球AI挑战赛”发布会上共同宣布社会责任宣言说:“数据、算法、计算能力是人工智能的三大基石,其中,数据更是人工智能科研最宝贵的资产。没有足够好的数据,就无法取得世界顶级的科研成果。在此方面,学术界和创业团队所能获得的数据资源通常远少于产业界中的顶级企业。因此,将高质量的数据集建设与科学研究、技术产品研发、人才培养有效结合,对人工智能发展具有重大意义,也是身为产业先驱应尽的一份社会责任。”未来三年,主办方将投入数千万基金,解决数据集缺失的问题,为人工智能科研提供海量数据及算法竞赛、人才交流平台,辅以强大的学术界和产业界专家指导,全力支持与帮助国内外的高校、研究机构、产业界的研发团队。三家主办方将持续投入,建设和发布更大规模的AI前沿领域高质量数据集,涵盖自动驾驶、智慧医疗、智慧金融、机器人等行业应用中的核心AI需求,主办世界级的年度AI竞赛,吸引世界范围内的高端AI人才,促进人工智能科研生态的持续健康发展。大赛奖金超200万,还有顶级专家评委助阵主办方为首届竞赛准备了超过200万元人民币的奖金,供参赛优秀选手分享。参赛选手还有机会进入三家主办方工作、实习或获得投资,并有机会在国际顶级学术会议上分享获奖心得,还将获得包括上海科技大学教授马毅、旷视科技首席科学家孙剑、前Google研究院高级管理科学家林德康等十余位国内外人工智能领域顶级专家评委的指导和评价。本届AI Challenger大赛的主赛道竞赛分别是:人体骨骼关键点检测竞赛、图像中文描述竞赛、场景分类竞赛、英中机器文本翻译竞赛、英中机器同声传译竞赛。大赛还在持续推出更丰富的实验赛道、实验数据集,敬请关注大赛官网(challenger.ai) 赛程安排如下:9月4日10:00,开放训练数据集以及验证数据集。10月31日23:59:59,大赛报名截止。12月3日23:59:59,各项竞赛的排名将决定最终的成绩排名。12月中旬,大赛主赛道各项竞赛的最终榜单排名前五的团队将受邀到现场答辩并参加颁奖典礼。大赛期间,主赛道及实验赛道还将有双周赛或单周赛并有奖金。推出首个实验赛道:虚拟股票趋势预测为了让大赛有更高的参与度,同时探索更前沿的AI科技,本次大赛将持续推出更丰富的实验赛道和实验数据集。AI Challenger 的首个实验赛道,是虚拟股票趋势预测,通过对大规模历史数据建模,预测虚拟股票未来趋势,这个实验赛道适合有大数据背景、深度学习的初中级人士参与。发起这个实验赛道的创新工场表示,金融市场是由大数据驱动的行业,也是最快速被AI冲击的行业之一。金融及相关数据可以说是目前最容易获得、最海量公开、也是非常适合用于机器学习的数据来源。此次以“虚拟股票趋势预测”为题,通过开放数据集和竞赛的形式帮助广大兴趣爱好者入手机器学习,作为AI Challenger第一届大赛中相对低门槛的入门实验赛道。同时,金融AI应用对于科研来说有一定的指导意义。例如,虽然机器学习是目前金融趋势预测、量化投顾的趋势,但基于传统运筹学、统计学思路的方法也有其发展空间,创新工场成立人工智能工程院以来接触到的很多高校中,均有针对这个领域开展研究的老师。接下来三个月,实验赛道在赛题中将公开的脱敏数据,将有助于这些研究者判别科研成果的价值,这个实验赛道便是将大众熟悉的真实场景和前沿科研技术相结合的一个重点尝试。对股票价格趋势的预测是金融领域极为复杂和极为关键的问题。有效市场假说认为股票价格趋势不可能被预测,然而真实市场由于各种因素的存在并不完全有效,这对于股票市场而言相当于一种“错误”。AI Challenger的虚拟股票趋势预测实验赛道,为参赛者提供了大规模的股票历史数据,从而可以通过集合大家的智慧来纠正股票市场的这些“错误”。本竞赛数据来源主要以股票及新闻数据为主。竞赛每周一轮。选手通过训练模型,对虚拟股票走势进行预测。每轮结束时统计该轮队伍排名。最终累计每周积分决出最终的大奖。冠军将获得5万元人民币的奖励。同时,每周都会对该轮排名前三的队伍颁发奖金。该实验赛道由创新工场发起、管理和运营,奖励由创新工场提供。另外,大赛主办方还将努力为条件有限的参赛选手提供免费GPU资源的支持,帮助他们圆梦AI,选手可在各赛道相关数据集下载的页面进行申请。此次同步上线的还有汇集了全球优秀AI技术学习资源的“教程”栏目,并将持续更新,帮助AI人才更好学习成长。在此特别感谢大赛AI GPU云合作方UCloud专门为AI Challenger大赛组织资源、技术开发和服务团队,帮助更多的AI人才能够实际动手利用大数据集进行实践。特别感谢在线教育合作方Udacity为大赛提供优质学习资源,并向全球AI人才推荐AI Challenger大赛。还有更多高校、机构、公司、个人为大赛提供了各种各样的帮助,让AI Challenger获得了大量的资源和支持,从而能更好的帮助更多的AI人才。深深地感谢这些贡献者们!科研大数据,智慧竞技场!快来challenger.ai学习、参赛吧!小提示:比赛组队、参加每周AI技术大神分享会,请加大赛微信小助手 aiczhushou ,或扫码加入大赛官方微信群!aHR0cHM6Ly91LndlY2hhdC5jb20vRU9QUGV1Zk5zTFh2NlBwT0liUVl0cUU= (二维码自动识别)","updated":"T09:32:51.000Z","canComment":false,"commentPermission":"anyone","commentCount":0,"collapsedCount":0,"likeCount":0,"state":"published","isLiked":false,"slug":"","isTitleImageFullScreen":false,"rating":"none","titleImage":"/v2-da76dbffe32_r.png","links":{"comments":"/api/posts//comments"},"reviewers":[],"topics":[{"url":"/topic/","id":"","name":"创新工场"},{"url":"/topic/","id":"","name":"人工智能"},{"url":"/topic/","id":"","name":"人工智能竞赛"}],"adminClosedComment":false,"titleImageSize":{"width":640,"height":182},"href":"/api/posts/","excerptTitle":"","tipjarState":"closed","annotationAction":[],"sourceUrl":"","pageCommentsCount":0,"hasPublishingDraft":false,"snapshotUrl":"","publishedTime":"T17:32:51+08:00","url":"/p/","lastestLikers":[],"summary":"日,“AI challenger全球AI挑战赛”正式开赛,来自世界各地的AI高手,将展开为期三个多月的比拼,获胜团队将分享总额超过200万人民币的奖金,并获得顶级AI专家的指导。大赛官网(challenger.ai)同步上线了训练数据集以及验证数据集,供参赛选手…","reviewingCommentsCount":0,"meta":{"previous":null,"next":null},"annotationDetail":null,"commentsCount":0,"likesCount":0,"FULLINFO":true}},"User":{"chuang-xin-gong-chang":{"isFollowed":false,"name":"创新工场","headline":"创新工场由李开复博士创办于2009年9月,旨在帮助中国青年成功创业。\n创新工场是一家早期投资机构,同时为创业者提供全方位的创业服务。作为国内一流的创业平台,创新工场不仅提供创业所需的资金,还针对早期创业所需要的商业、技术、产品、市场、人力、法务、财务等提供一揽子创业服务, 旨在帮助早期阶段的创业公司顺利启动和快速成长。\n创新工场的投资方向立足于信息产业最热门的领域:人工智能和大数据、文化娱乐、在线教育、B2B及企业服务、O2O及消费升级、互联网金融。主要涉足的投资阶段为:A轮至C轮。\n创新工场的基金来自全球投资者,其中既包括顶尖的专业投资机构和战略性投资者,也包括知名家族和个人。他们愿为创业者提供有力支持,共同打造世界级的创业公司。\n创新工场投资中国最顶尖的创业人才。创新工场所投资的创业者中既不乏曾在大公司担任高管,从事产品、技术、推广等相关工作的业界资深人才;也有曾经连续创业并取得成就的创业者。他们不仅在专业领域有深厚积累、熟知专业领域的方方面面,而且具备优秀的创业者素质。","avatarUrl":"/v2-a86bb52ee5c13f17a1eaf70d909904ea_s.jpg","isFollowing":false,"type":"org","slug":"chuang-xin-gong-chang","bio":null,"hash":"291a8bbedfdbe","uid":941200,"isOrg":true,"description":"创新工场由李开复博士创办于2009年9月,旨在帮助中国青年成功创业。\n创新工场是一家早期投资机构,同时为创业者提供全方位的创业服务。作为国内一流的创业平台,创新工场不仅提供创业所需的资金,还针对早期创业所需要的商业、技术、产品、市场、人力、法务、财务等提供一揽子创业服务, 旨在帮助早期阶段的创业公司顺利启动和快速成长。\n创新工场的投资方向立足于信息产业最热门的领域:人工智能和大数据、文化娱乐、在线教育、B2B及企业服务、O2O及消费升级、互联网金融。主要涉足的投资阶段为:A轮至C轮。\n创新工场的基金来自全球投资者,其中既包括顶尖的专业投资机构和战略性投资者,也包括知名家族和个人。他们愿为创业者提供有力支持,共同打造世界级的创业公司。\n创新工场投资中国最顶尖的创业人才。创新工场所投资的创业者中既不乏曾在大公司担任高管,从事产品、技术、推广等相关工作的业界资深人才;也有曾经连续创业并取得成就的创业者。他们不仅在专业领域有深厚积累、熟知专业领域的方方面面,而且具备优秀的创业者素质。","profileUrl":"/org/chuang-xin-gong-chang","avatar":{"id":"v2-a86bb52ee5c13f17a1eaf70d909904ea","template":"/{id}_{size}.jpg"},"isOrgWhiteList":false,"badge":{"identity":null,"bestAnswerer":null}}},"Comment":{},"favlists":{}},"me":{},"global":{"experimentFeatures":{"ge3":"ge3_9","ge2":"ge2_1","nwebStickySidebar":"sticky","nwebAnswerRecommendLive":"newVersion","newMore":"new","sendZaMonitor":"true","liveReviewBuyBar":"live_review_buy_bar_2","liveStore":"ls_a2_b2_c1_f2","homeUi2":"default","answerRelatedReadings":"qa_recommend_by_algo_related_with_article","qrcodeLogin":"qrcode","newBuyBar":"liveoldbuy","newMobileColumnAppheader":"new_header","zcmLighting":"zcm","favAct":"default","appStoreRateDialog":"close","mobileQaPageProxyHeifetz":"m_qa_page_nweb","iOSNewestVersion":"4.2.0","default":"None","wechatShareModal":"wechat_share_modal_show","qaStickySidebar":"sticky_sidebar","androidProfilePanel":"panel_b"}},"columns":{"next":{}},"columnPosts":{},"columnSettings":{"colomnAuthor":[],"uploadAvatarDetails":"","contributeRequests":[],"contributeRequestsTotalCount":0,"inviteAuthor":""},"postComments":{},"postReviewComments":{"comments":[],"newComments":[],"hasMore":true},"favlistsByUser":{},"favlistRelations":{},"promotions":{},"switches":{"couldAddVideo":false},"draft":{"titleImage":"","titleImageSize":{},"isTitleImageFullScreen":false,"canTitleImageFullScreen":false,"title":"","titleImageUploading":false,"error":"","content":"","draftLoading":false,"globalLoading":false,"pendingVideo":{"resource":null,"error":null}},"drafts":{"draftsList":[],"next":{}},"config":{"userNotBindPhoneTipString":{}},"recommendPosts":{"articleRecommendations":[],"columnRecommendations":[]},"env":{"edition":{},"isAppView":false,"appViewConfig":{"content_padding_top":128,"content_padding_bottom":56,"content_padding_left":16,"content_padding_right":16,"title_font_size":22,"body_font_size":16,"is_dark_theme":false,"can_auto_load_image":true,"app_info":"OS=iOS"},"isApp":false},"sys":{},"message":{"newCount":0},"pushNotification":{"newCount":0}}没计算资源,只能简单测试下resnet18
训练代码(带验证):
- 采用更深的网络(简单,但是需要计算资源)
- top3 accuracy,可参考/pytorch/examples/blob/master/imagenet/main.py
import torch
import torch.nn as nn
import torch.optim as optim
from torch.optim import lr_scheduler
from torch.autograd import Variable
import pandas as pd
from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
from torch.utils.data import Dataset, DataLoader
import torchvision
from torchvision import transforms, utils
import time
import json
%matplotlib inline
with open('../ai_challenger_scene_train_/scene_train_annotations_.json', 'r') as f:
label_raw_train = json.load(f)
with open('../ai_challenger_scene_validation_/scene_validation_annotations_.json', 'r') as f:
label_raw_val = json.load(f)
label_raw_train[0]['label_id']
len(label_raw_train)
class SceneDataset(Dataset):
def __init__(self, json_labels, root_dir, transform=None):
json_labesl (list):read from official json file.
root_dir (string): Directory with all the images.
transform (callable, optional): Optional transform to be applied
on a sample.
self.label_raw = json_labels
self.root_dir = root_dir
self.transform = transform
def __len__(self):
return len(self.label_raw)
def __getitem__(self, idx):
img_name = os.path.join(self.root_dir, self.label_raw[idx]['image_id'])
image = Image.open(img_name)
label = int(self.label_raw[idx]['label_id'])
if self.transform:
image = self.transform(image)
return image, label
data_transforms = {
'train': pose([
transforms.RandomSizedCrop(224),
transforms.RandomHorizontalFlip(),
transforms.ToTensor(),
transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])
'val': pose([
transforms.Scale(256),
transforms.CenterCrop(224),
transforms.ToTensor(),
transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])
transformed_dataset_train = SceneDataset(json_labels=label_raw_train,
root_dir='../ai_challenger_scene_train_/scene_train_images_',
transform=data_transforms['train']
transformed_dataset_val = SceneDataset(json_labels=label_raw_val,
root_dir='../ai_challenger_scene_validation_/scene_validation_images_',
transform=data_transforms['val']
batch_size = 64
dataloader = {'train':DataLoader(transformed_dataset_train, batch_size=batch_size,shuffle=True, num_workers=8),
'val':DataLoader(transformed_dataset_val, batch_size=batch_size,shuffle=True, num_workers=8)
dataset_sizes = {'train': len(label_raw_train), 'val':len(label_raw_val)}
use_gpu = torch.cuda.is_available()
def imshow(inp, title=None):
"""Imshow for Tensor."""
inp = inp.numpy().transpose((1, 2, 0))
mean = np.array([0.485, 0.456, 0.406])
std = np.array([0.229, 0.224, 0.225])
inp = std * inp + mean
plt.imshow(inp)
if title is not None:
plt.title(title)
plt.pause(0.001)
inputs, classes = next(iter(dataloader['train']))
out = torchvision.utils.make_grid(inputs)
imshow(out)
def train_model (model, criterion, optimizer, scheduler, num_epochs, total_steps):
since = time.time()
print('total_steps is %d' % total_steps)
mystep = 0
best_model_wts = model.state_dict()
best_acc = 0.0
for epoch in range(num_epochs):
print('Epoch {}/{}'.format(epoch, num_epochs - 1))
print('-' * 10)
if (epoch%10 == 0):
torch.save(best_model_wts, ('resnet18_model_wts_%d.pth')% epoch)
for phase in ['train', 'val']:
if phase == 'train':
scheduler.step()
model.train(True)
model.train(False)
running_loss = 0.0
running_corrects = 0
for data in dataloader[phase]:
mystep = mystep + 1
if(mystep%100 ==0):
duration = time.time() - since
print('progress %d vs %d in %.0f' % (mystep, total_steps, duration))
inputs, labels = data
if use_gpu:
inputs = Variable(inputs.cuda())
labels = Variable(labels.cuda())
inputs, labels = Variable(inputs), Variable(labels)
optimizer.zero_grad()
outputs = model(inputs)
_, preds = torch.max(outputs.data, 1)
loss = criterion(outputs, labels)
if phase == 'train':
loss.backward()
optimizer.step()
running_loss += loss.data[0]
running_corrects += torch.sum(preds == labels.data)
epoch_loss = running_loss / dataset_sizes[phase]
epoch_acc = running_corrects / dataset_sizes[phase]
print('{} Loss: {:.4f} Acc: {:.4f}'.format(
phase, epoch_loss, epoch_acc))
if phase == 'val' and epoch_acc & best_acc:
best_acc = epoch_acc
best_model_wts = model.state_dict()
time_elapsed = time.time() - since
print('Training complete in {:.0f}m {:.0f}s'.format(
time_elapsed // 60, time_elapsed % 60))
print('Best val Acc: {:4f}'.format(best_acc))
model.load_state_dict(best_model_wts)
return model
model_conv = torchvision.models.resnet18(pretrained=True)
for param in model_conv.parameters():
param.requires_grad = False
num_ftrs = model_conv.fc.in_features
model_conv.fc = nn.Linear(num_ftrs, 80)
if use_gpu:
model_conv = model_conv.cuda()
criterion = nn.CrossEntropyLoss()
optimizer_conv = optim.SGD(model_conv.fc.parameters(), lr=0.001, momentum=0.9)
exp_lr_scheduler = lr_scheduler.StepLR(optimizer_conv, step_size=7, gamma=0.1)
num_epochs = 90
total_steps = 1.0 * num_epochs * (len(label_raw_train) + len(label_raw_val)) / batch_size
print(total_steps)
model_conv = train_model(model_conv, criterion, optimizer_conv,
exp_lr_scheduler, num_epochs, total_steps)
torch.save(model_conv.state_dict(), 'resnet18_best_model_wts_final.pth')
运行结果:
total_steps is 85779
Epoch 0/89
----------
progress 100 vs 85779 in 83
progress 200 vs 85779 in 168
progress 300 vs 85779 in 254
progress 400 vs 85779 in 344
progress 500 vs 85779 in 435
progress 600 vs 85779 in 526
progress 700 vs 85779 in 616
progress 800 vs 85779 in 706
train Loss: 0.0501 Acc: 0.2997
progress 900 vs 85779 in 798
val Loss: 0.0346 Acc: 0.4992
Epoch 1/89
----------
progress 1000 vs 85779 in 888
progress 1100 vs 85779 in 977
progress 1200 vs 85779 in 1065
progress 1300 vs 85779 in 1155
progress 1400 vs 85779 in 1244
progress 1500 vs 85779 in 1335
progress 1600 vs 85779 in 1424
progress 1700 vs 85779 in 1513
train Loss: 0.0353 Acc: 0.4689
progress 1800 vs 85779 in 1610
progress 1900 vs 85779 in 1696
val Loss: 0.0274 Acc: 0.5663
Epoch 2/89
----------
progress 2000 vs 85779 in 1789
progress 2100 vs 85779 in 1879
progress 2200 vs 85779 in 1968
progress 2300 vs 85779 in 2058
progress 2400 vs 85779 in 2151
progress 2500 vs 85779 in 2241
progress 2600 vs 85779 in 2334
progress 2700 vs 85779 in 2426
train Loss: 0.0312 Acc: 0.5042
progress 2800 vs 85779 in 2519
val Loss: 0.0246 Acc: 0.5916
Epoch 3/89
----------
progress 2900 vs 85779 in 2614
progress 3000 vs 85779 in 2706
progress 3100 vs 85779 in 2795
progress 3200 vs 85779 in 2887
progress 3300 vs 85779 in 2984
progress 3400 vs 85779 in 3077
progress 3500 vs 85779 in 3176
progress 3600 vs 85779 in 3269
progress 3700 vs 85779 in 3361
train Loss: 0.0294 Acc: 0.5191
progress 3800 vs 85779 in 3458
val Loss: 0.0230 Acc: 0.6154
Epoch 4/89
----------
progress 3900 vs 85779 in 3552
progress 4000 vs 85779 in 3641
progress 4100 vs 85779 in 3730
progress 4200 vs 85779 in 3819
progress 4300 vs 85779 in 3909
progress 4400 vs 85779 in 4000
progress 4500 vs 85779 in 4093
progress 4600 vs 85779 in 4189
train Loss: 0.0282 Acc: 0.5344
progress 4700 vs 85779 in 4286
val Loss: 0.0220 Acc: 0.6251
Epoch 5/89
----------
progress 4800 vs 85779 in 4377
progress 4900 vs 85779 in 4466
progress 5000 vs 85779 in 4556
progress 5100 vs 85779 in 4646
progress 5200 vs 85779 in 4740
progress 5300 vs 85779 in 4832
progress 5400 vs 85779 in 4924
progress 5500 vs 85779 in 5017
progress 5600 vs 85779 in 5109
train Loss: 0.0274 Acc: 0.5428
progress 5700 vs 85779 in 5205
val Loss: 0.0211 Acc: 0.6371
Epoch 6/89
----------
progress 5800 vs 85779 in 5305
progress 5900 vs 85779 in 5397
progress 6000 vs 85779 in 5490
progress 6100 vs 85779 in 5582
progress 6200 vs 85779 in 5675
progress 6300 vs 85779 in 5765
progress 6400 vs 85779 in 5855
progress 6500 vs 85779 in 5945
train Loss: 0.0269 Acc: 0.5472
progress 6600 vs 85779 in 6042
val Loss: 0.0206 Acc: 0.6427
Epoch 7/89
----------
progress 6700 vs 85779 in 6135
progress 6800 vs 85779 in 6225
progress 6900 vs 85779 in 6318
progress 7000 vs 85779 in 6412
progress 7100 vs 85779 in 6504
progress 7200 vs 85779 in 6596
progress 7300 vs 85779 in 6688
progress 7400 vs 85779 in 6777
progress 7500 vs 85779 in 6867
train Loss: 0.0264 Acc: 0.5555
progress 7600 vs 85779 in 6959
val Loss: 0.0206 Acc: 0.6468
Epoch 8/89
----------
progress 7700 vs 85779 in 7051
progress 7800 vs 85779 in 7140
progress 7900 vs 85779 in 7230
progress 8000 vs 85779 in 7320
progress 8100 vs 85779 in 7409
progress 8200 vs 85779 in 7499
progress 8300 vs 85779 in 7589
progress 8400 vs 85779 in 7678
train Loss: 0.0264 Acc: 0.5574
progress 8500 vs 85779 in 7772
val Loss: 0.0205 Acc: 0.6492
Epoch 9/89
----------
progress 8600 vs 85779 in 7863
progress 8700 vs 85779 in 7952
progress 8800 vs 85779 in 8042
progress 8900 vs 85779 in 8132
progress 9000 vs 85779 in 8221
progress 9100 vs 85779 in 8311
progress 9200 vs 85779 in 8401
progress 9300 vs 85779 in 8490
progress 9400 vs 85779 in 8580
train Loss: 0.0264 Acc: 0.5589
progress 9500 vs 85779 in 8672
val Loss: 0.0204 Acc: 0.6469
Epoch 10/89
----------
progress 9600 vs 85779 in 8764
progress 9700 vs 85779 in 8853
progress 9800 vs 85779 in 8943
progress 9900 vs 85779 in 9033
progress 10000 vs 85779 in 9122
progress 10100 vs 85779 in 9212
progress 10200 vs 85779 in 9302
progress 10300 vs 85779 in 9391
train Loss: 0.0264 Acc: 0.5575
progress 10400 vs 85779 in 9486
val Loss: 0.0205 Acc: 0.6466
Epoch 11/89
----------
progress 10500 vs 85779 in 9576
progress 10600 vs 85779 in 9665
progress 10700 vs 85779 in 9755
progress 10800 vs 85779 in 9845
progress 10900 vs 85779 in 9934
progress 11000 vs 85779 in 10024
progress 11100 vs 85779 in 10114
progress 11200 vs 85779 in 10204
progress 11300 vs 85779 in 10293
train Loss: 0.0262 Acc: 0.5595
OSErrorTraceback (most recent call last)
&ipython-input-8-d& in &module&()
45 print(total_steps)
46 model_conv = train_model(model_conv, criterion, optimizer_conv,
exp_lr_scheduler, num_epochs, total_steps)
48 torch.save(model_conv.state_dict(), 'resnet18_best_model_wts_final.pth')
&ipython-input-7-7cfe8ab63cef& in train_model(model, criterion, optimizer, scheduler, num_epochs, total_steps)
for data in dataloader[phase]:
mystep = mystep + 1
/home/wayne/anaconda3/lib/python3.5/site-packages/torch/utils/data/dataloader.py in __iter__(self)
def __iter__(self):
return DataLoaderIter(self)
def __len__(self):
/home/wayne/anaconda3/lib/python3.5/site-packages/torch/utils/data/dataloader.py in __init__(self, loader)
for w in self.workers:
w.daemon = True
if self.pin_memory:
/home/wayne/anaconda3/lib/python3.5/multiprocessing/process.py in start(self)
'daemonic processes are not allowed to have children'
_cleanup()
self._popen = self._Popen(self)
self._sentinel = self._popen.sentinel
_children.add(self)
/home/wayne/anaconda3/lib/python3.5/multiprocessing/context.py in _Popen(process_obj)
@staticmethod
def _Popen(process_obj):
return _default_context.get_context().Process._Popen(process_obj)
214 class DefaultContext(BaseContext):
/home/wayne/anaconda3/lib/python3.5/multiprocessing/context.py in _Popen(process_obj)
def _Popen(process_obj):
from .popen_fork import Popen
return Popen(process_obj)
class SpawnProcess(process.BaseProcess):
/home/wayne/anaconda3/lib/python3.5/multiprocessing/popen_fork.py in __init__(self, process_obj)
sys.stderr.flush()
self.returncode = None
self._launch(process_obj)
def duplicate_for_child(self, fd):
/home/wayne/anaconda3/lib/python3.5/multiprocessing/popen_fork.py in _launch(self, process_obj)
parent_r, child_w = os.pipe()
self.pid = os.fork()
if self.pid == 0:
OSError: [Errno 12] Cannot allocate memory
本文已收录于以下专栏:
相关文章推荐
会话管理class tf.Session运行TensorFlow所有操作的会话管理类。 会话管理封装了所有被执行的操作对象,并且计算所有张量的值,例如: # 创建一个图.a = tf.constant...
在很多场合中,没有必要从头开始训练整个卷积网络(随机初始化参数),因为没有足够丰富的数据集,而且训练也是非常耗时、耗资源的过程。通常,采用pretrain a ConvNet的方式,然后用ConvNe...
/HolmesShuan/ResNet-18-Caffemodel-on-ImageNet
经过我们中一系列的学习,Cocos2dx的基础大致了解了。总共分为坐标系统,UI系统,内存管理,事件机制,缓存系统,绘图,以及动画系统。
Cocos2dx中动画系统是及其强大的,我们也分为很...
pytorch应该是深度学习框架里面比较好使用的了,相比于tensorflow,mxnet。可能在用户上稍微少一点,有的时候出问题不好找文章。下面就使用pytorch预训练模型做分类和特征提取,pyt...
caffe学习记录
正好14年的时候有人做过一个实验[1],比较在不同数据集上(121个),不同的分类器(179个)的实际效果。
论文题为:Do we Need Hundreds of Classifiers to S...
*我代码风格有点不好,能公有坚决不私有,但是这个不好,因为这个被老大训了好几次呢,后来看到朋友们看我的代码都一副蒙的样子,我还是改了,
下面的代码我还没改,因为是自己随手做的小东西,没啥安全性,所以...
他的最新文章
讲师:姜飞俊
讲师:汪木铃
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)

我要回帖

更多关于 ai challenger 官网 的文章

 

随机推荐