人工智能(2) 训练一个新的库

上一篇文章只是把在我这要实现人工智能识别和训练库的步骤讲了一下,但是你要识别的东西跟我的肯定是不一样的,而且类的数量也不同,所以很多配置文件要改。

接下去我会讲一下,如果要训练识别其它物体,哪些步骤需要重新做,哪些变量要修改。

首先,安装的步骤都是一样的,我还是启用了GPU和OPENCV,如果之前一步已经安装好了,就不用重新安装。

要做如下几步:

1.重新采集照片

2.用labelimage重新标识这些图片里的物体

3.把照片和xml文件分别放置到myData\JPEGImages下和myData\Annotations下。

4.重新运行test.py

test.py的代码不用改,它会创建4个新的txt文件到ImageSets\Main下,分别是test.txt train.txt trainval.txt val.txt

5.更改my_labels.py并运行

my_labels.py的代码要改一下

原来第九行

classes = ["shao"]

改为

classes = ["shao", "guai", "ming"]

6.cfg/my_data.data要改classes数量

原来classes = 1,现在要识别3类物体,要改为:classes = 3

7.cfg/yolov2-tiny-voc-shao.cfg要改几个地方

首先找到最后一层,它的标志是在[convolutional]部分的activation是linear,别的几层都是leaky,找到后改这个convolution部分里的filters,根据公式 filter=num×(classes + coords + 1)=5×(3+4+1)= 40, filters从上一篇文章里的30改为40就行。

作为参考,我的这个参数在这个配置文件118行,你可以回到上一篇文章看一下,但是如果你跟我版本不同,那么行数也可能不一样。

改完以后找到这个[convolutional]下方的[region],然后把下面的classes = 1 改为classes = 3,因为这次要识别3类物体。在我的配置文件中,这一句话在第124行。

8.更改myData\myData.names

本来是

shao

shao

改为

shao
guai
ming

 9.重新训练

还是运行一模一样的命令

./darknet detector train cfg/my_data.data cfg/yolov2-tiny-voc-shao.cfg

10.使用训练结果识别新物体

./darknet detector demo cfg/my_data.data cfg/yolov2-tiny-voc-shao.cfg weights/yolov2-tiny-voc-shao_final.weights

测试结果

人工智能(2) 训练一个新的库_第1张图片人工智能(2) 训练一个新的库_第2张图片

人工智能(2) 训练一个新的库_第3张图片人工智能(2) 训练一个新的库_第4张图片

我用摄像头对着电脑屏幕上的照片可以识别,但是对着实物就不行。

上一次实验,我用自己照片训练可以识别自己。可能是因为上次训练素材图和摄像头画面的背景区别不大,这次训练的素材图和实际家里的镜像区别大导致的。

另外我还发现一个现象,如果把我的照片和2只猫的照片放一起,就只能识别我自己,不能识别猫了,连屏幕上的照片也识别不出来。

看来人工智能的训练素材还是很有讲究的。

你可能感兴趣的:(人工智能)