编译tiny-dnn
安装gcc高版本支持c++14
yum install centos-release-scl -y
yum install devtoolset-7 -y
通过scl enable devtoolset-7 bash去切换一个shell使用gcc7toolchain
yum install cmake3
cmake3 clean --dir . -DUSE_NNPACK=OFF -DBUILD_EXAMPLES=ON
example目录下有最简单常见的入门例子:
mnist 手写数字识别
cifar 小图片识别
cifar训练数据在 http://www.cs.toronto.edu/~kriz/cifar.html下载。数据集分为cifar-10和cifar-100。
cifar-10,也就是可以学习到认知10类事物,每类都打上一数字标签,并有6000张32x32图片,其中5000张训练1000张测试,让机器进行学习。
机器学习(train训练)参数:
epoch 训练的次数, cifar每次500s出头的elapsed. 越学越快。
minibatch_size 批梯度下降法(Mini-batches Learning)相关, 参考在http://blog.csdn.net/ycheng_sjtu/article/details/49804041
learning_rate 梯度下降法,梯度相乘的一个系数,越大步子越大每轮(epoch)学习越快收敛越慢,参考在https://www.cnblogs.com/yjbjingcha/p/7094816.html
机器识别:
将图片路径输入到识别程序(xxx_test),机器就会以标签回答出识别出来事物。
结果:
按照例子默认的训练参数,30 epoch, 0.1 learning_rate, 10 minibatch_size,
mnist 训练出来
第一轮训练就94.54%,三十轮过后提升了4.38%。
cifar 训练出来
第一轮训练不理想,只有45.53%,经过三十轮后提升到 69.29%,但是每轮都付出不少时间。
验证:
mnist 识别数字图片
数字2图片是白底黑字,对比度最高,mnist机器人(进行了mnist训练的机器人)识别出为2,
数字1图片黄底红字还有一个框,对比度有所减弱,mnist机器人也能够识别出是1,虽然准确率有所下降。
数字4图片红底红黑字,底色还是由红向红黑渐变,对比度很弱,mnist机器人就糊涂蒙眼了,识别为7,1,5 却不是 4。
cifar 识别图片
最后我从cifar-10训练数据集的车类别取出一张图片让 其识别,cifar机器人可以很肯定这就是车。其次可能是船或鹿。
有一个在线机器学习的网站 http://groups.csail.mit.edu/vision/TinyImages/,网站使用者可以对某类图片进行对错标记,手动训练远端的在线机器。