在之前一篇文章——石头剪刀布之卷积神经网络,我已经定义了网络模型,当时在每类200张图片的情况下可以达到89%左右的精度。在本项目中,获取数据的成本并不是很高,利用摄像头就可以获得足够多的数据。因此,我又收集了一些数据,使得每类的图片大概是3000张左右。按照之前的训练方法,验证精度可以达到98.9%,识别一张图片的时间在25ms左右。这样的网络模型就可以满足要求。
有了训练好的模型(相当于一个大脑),有了摄像头(相当于眼睛),有了舵机(相当于手)。就可以把这些集成,来完成“石头剪刀布”这个游戏了。
以下是整个系统的连接图:
摄像头正对着背景板,放的位置和角度要尽可能和获取数据时的位置一样,这样识别精度更高。舵机和指针用来输出树莓派的计算结果。石头剪刀布的图片可以从网上下载,打印出来,粘贴上去。
通过在树莓派上运行以下代码,就可以实现石头剪刀布的功能了(rps.py)。
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
import tensorflow as tf
import numpy as np
import PIL.Image as Image
from pylab import *
import time