AI手写数字识别(一)

使用Visual Studio Tools for AI加速桌面智能应用开发

主要知识点

  • 典型的AI应用的代码结构和功能,如处理输入;
  • 使用Visual Studio Tools for AI进行TensorFlow模型到.Net Framework应用环境的快速集成。

简介

本文将介绍一例"手写数字识别应用"的开发过程。本文将通过这一入门级案例展示人工智能应用开发中的典型元素,如准备人工智能应用开发所需的软件环境,使用Visual Studio Tools for AI快速集成模型、加速人工智能应用开发,以及在代码中处理用户输入,以便人工智能模型能正确地接受输入的数据等等。本文将对这些工作和该应用的主要代码逻辑进行分析、讲解。此外,本文还将解答手写数字识别应用开发的一些常见问题,并介绍现实场景中的一些可能需求。开发将基于桌面.Net Framework环境和训练好的MNIST手写数字分类模型完成。

目标应用介绍

背景

在移动硬件得到高度发展的今天,手写输入已经成为了一种非常常见的输入方式。然而手写输入和传统的鼠标、键盘输入方式有很大的不同,相对于传统输入方式生产的数据,手写输入的内容——也即数据——在很多场景下都不是计算机能直接处理的。

传统的输入方式里,鼠标的点击可以对应到屏幕上精确的一点,进而对应到某一特定的UI控件;键盘的敲击可以产生一个特定的字符数据。这些都是计算机可以很容易处理的。而通过手写输入,计算机得到的只是一块具有"特别的形状"的图形,但这图形中蕴含着的用户真正的意图,计算机却不能识别。而这些蕴含其中的意图,才是很多应用场景的核心价值所在。比如用户希望设备上的手写输入法,可以将手写的字转换成传统的字符数据;笔记应用应能识别用户手写的笔记,并进行索引以便查询或计算一些数学表达式的结果......然而我们都有所了解,用传统的技术手段,很难高质量地达成这一识别任务。

不过近年来人工智能领域取得了很多令世人瞩目的成果,其中图像识别方面的很多成果,非常值得我们借鉴。那么这些人工智能领域的成果,能否助力我们广大应用开发者解决上述这些手写输入相关的难题呢?答案是肯定的。

本文将介绍一款"手写数字识别应用"的开发和其代码结构。这款应用通过借力MNIST数据集,具备了最基本的手写输入功能和图像识别功能,能将用户手写的0,1,2,...,9数字单个地识别出来。该应用使用效果如图:

完整应用的使用效果

麻雀虽小,五脏俱全。这款入门级应用涵盖很多了人工智能应用开发中的典型问题。本文将以这些基本问题为出发点,为读者展开人工智能应用开发的画卷。

开发环境

本文采取.Net Framework桌面环境作为开发环境,基于WPF框架实现用户界面,并依赖TensorFlow和VS Tools for AI等组件来完成人工智能模型的创建和集成。

后文将介绍的开发中需要用到人工智能模型的训练环境,请确保已经按照【引用:课程1 – 环境准备】中所述在本地机器上下载(Git的术语叫“克隆”)了微软AI样例库(即命令),并已成功安装了相关工具(即CUDA、cuDNN,若硬件允许)并成功运行了安装脚本(即)。git clone https://github.com/Microsoft/samples-for-ai.gitinstaller\install.py

训练模型

模型介绍

之前下载的samples-for-ai样例库中包含了大量的机器学习训练和应用的示例,其中就有针对MNIST数据集的人工智能模型(下称MNIST模型)训练程序,这正是我们需要的。

MNIST数据集包含了大量单个手写数字的位图数据,包含各种手写风格,并且这些位图数据都已经被很好地标记过了。即每一张手写数字的位图都存在一个对应的数字,并且这个数字是可以以数据的形式被访问的。这极大地简化了我们的准备工作。

  • 24
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值