GitHub 6600星,面向中国人:微软AI教育与学习共建社区2.0登场!
在近日Github趋势热榜上,来自微软亚洲研究院AI教育团队的人工智能教育与学习共建社区再度引发了广泛关注,目前已获得超过6000星。平台开发团队在GitHub上表示,该平台是在教育部指导下,依托于新一代人工智能开放科研教育平台,微软亚洲研究院研发团队和学术合作部将为本社区提供全面支持。
平台提供人工智能应用开发的真实案例,以及配套的教程、工具等学习资源,人工智能领域的一线教师及学习者也将分享他们的资源与经验。团队表示,希望本社区的建立,能以开源的方式与广大师生、开发者一起学习、一起贡献,共同丰富、完善本社区,为中国人工智能的发展添砖加瓦。
社区的学习资源优质且免费,绝大部分为原创内容,核心学习资源包括实战篇和理论篇两大部分,辅以参考学习路径和先修知识参考资源,让广大学习者可以清晰地选择适合自己的学习路径,高效地学习。
理论篇
理论篇的内容又称作“9步学习神经网络”,为微软亚洲研究院研发团队原创内容,着重讲述偏理论的知识,同样以“做中学”为核心概念,但是独特地以化繁为简,深入浅出为特点,提供通俗易懂的理论讲解,清晰工整的代码,准确无误的内容,完整的作业体系,不但有理论,还有大量实践动手环节,帮助读者不但迅速掌握“深度学习”的基础知识,更好地理解并使用现有框架,而且可以助力读者快速学习最新出现的各种神经网络的扩展或者变型,跟上快速发展的AI浪潮,使学习者从新的角度快速上手神经网络的学习,做到真正的从入门到精通。该部分内容在针对合作伙伴线下的培训中,受到广大学习者的广泛好评。
神经网络初探
- 适用人群:希望了解最基本的神经网络知识,有一定代码能力。
- 内容:神经网络基础知识,线性回归,线性分类。
- 先修知识:微分知识和线性代数;Python
- 学习时长:6~8小时
- 学习目标:理解神经网络基础概念。
神经网络初探学习路径参考
神经网络进阶
- 适用人群:具有一定的神经网络学习基础和代码能力的学习者。
- 内容:非线性回归,非线性分类,模型推理。
- 先修知识:微分知识和线性代数;Python
- 学习时长:8~12 小时
- 学习目标:更好地理解并使用现有神经网络框架。
神经网络进阶学习路径参考
深度网络基础
- 适用人群:有较好的神经网络理论基础,想通过学习深度网络进行更多地扩展性研究或者开发。
- 内容:DNN,CNN,RNN。
- 先修知识:微分知识和线性代数;Python
- 学习时长:16~24 小时
- 学习目标:有能力快速学习最新出现的各种神经网络的扩展或者变型,或进行前沿性研究。
深度网络基础学习路径参考
实战案例:从漫画开始,学会OCR图文转换
兴趣是第一老师。相信很多同学应该都有一本自己心目中最喜欢的漫画吧。,
微软认知服务包括了影像、语音、语言、搜索、知识五大领域,通过对这些认知服务的独立或者组合使用,可以解决很多现实世界中的问题。作为AI小白,我们可以选择艰难地攀登崇山峻岭,也可以选择像牛顿一样站在巨人的肩膀上。本章节的内容就以“漫画翻译”为例,介绍如何灵活使用微软认知服务来实现自己的AI梦想。
日本漫画非常著名,如海贼王,神探柯南等系列漫画在中国的少年一代中是非常普及。国内专门有一批志愿者,全手工翻译这些漫画为中文版本,过程艰辛复杂,花费时间很长。能否使用AI来帮助加快这个过程呢?
小提示:漫画是有版权的,请大家要在尊重版权的前提下做合法的事。
漫画翻译,要做的事情有三步:
调用微软认知服务,用OCR(光学字符识别)服务识别出漫画上所有文字;
调用微软认知服务,用Text Translate(文本翻译)服务把日文翻译成中文;
自己写逻辑代码把中文文字贴回到以前的漫画中,覆盖以前的日文,生成新的漫画帧。
下图是展示最后的翻译效果,左侧是原漫画,右侧是翻译成中文的结果(由于版权问题,我们自己模仿原漫画做了几个对话气泡):
环境准备
安装Windows 10版本 1803,低一些的Windows 10版本也可以使用。Windows 7也可以运行本示例程序,但不建议使用,Windows 7的官方技术支持到2020/01/14结束。
小提示:如果您的机器不能运行Windows 10,说明硬件性能还是有些不够的。AI是建立在软硬件快速发展的基础上的,不建议您使用低配置的机器来做AI知识的学习。
安装Visual Studio 2017 Community。点击这里下载,对于本案例,安装时选择“.NET桌面开发”即可满足要求。
界面设计代码
<Window x:Class="CartoonTranslate.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:CartoonTranslate" mc:Ignorable="d" Title="MainWindow" Height="450" Width="800"> <Grid> <Grid.RowDefinitions> <RowDefinition Height="Auto"/> <RowDefinition Height="Auto"/> <RowDefinition Height="Auto"/> <RowDefinition Height="*"/> </Grid.RowDefinitions> <StackPanel Orientation="Horizontal" Grid.Row="0"> <TextBlock Grid.Row="0" Text="Input URL:"/> <TextBox x:Name="tb_Url" Grid.Row="1" Width="600" Text="http://stat.ameba.jp/user_images/20121222/18/secretcube/2e/19/j/o0800112012341269548.jpg"/> <Button x:Name="btn_Show" Content="Show" Click="btn_Show_Click" Width="100"/> <Button x:Name="btn_OCR" Content="OCR" Click="btn_OCR_Click" Width="100"/> <Button x:Name="btn_Translate" Content="Translate" Click="btn_Translate_Click" Width="100"/> </StackPanel> <StackPanel Grid.Row="1" Orientation="Horizontal"> <TextBlock Text="Engine:"/> <RadioButton x:Name="rb_V1" GroupName="gn_Engine" Content="OCR" Margin="20,0" IsChecked="True" Click="rb_V1_Click"/> <RadioButton x:Name="rb_V2" GroupName="gn_Engine" Content="Recognize Text" Click="rb_V2_Click"/> <TextBlock Text="Language:" Margin="20,0"/> <RadioButton x:Name="rb_English" GroupName="gn_Language" Content="English"/> <RadioButton x:Name="rb_Japanese" GroupName="gn_Language" Content="Japanese" IsChecked="True" Margin="20,0"/> </StackPanel> <Grid Grid.Row="3"> <Grid.ColumnDefinitions> <ColumnDefinition Width="*"/> <ColumnDefinition Width="40"/> <ColumnDefinition Width="*"/> </Grid.ColumnDefinitions> <TextBlock Grid.Column="0" Text="Source Image" VerticalAlignment="Center" HorizontalAlignment="Center"/> <TextBlock Grid.Column="2" Text="Target Image" VerticalAlignment="Center" HorizontalAlignment="Center"/> <Image x:Name="imgSource" Grid.Column="0" Stretch="None" HorizontalAlignment="Left" VerticalAlignment="Top"/> <Image x:Name="imgTarget" Grid.Column="2" Stretch="None" HorizontalAlignment="Left" VerticalAlignment="Top"/> <Canvas x:Name="canvas_1" Grid.Column="0"/> <Canvas x:Name="canvas_2" Grid.Column="2"/> </Grid> </Grid> </Window>