使用SSD-TensorFlow-Master 训练样本
因为要做目标检测,看了一些帖子,先是看了推理结构,大多要用到GPU,楼主电脑没有,因此就选择ncnn,腾讯大牛开源的,下载地址:https://github.com/Tencent/ncnn ,ncnn支持多种模型,根据现在测试需要自己就选择采用SSD这个算法下载地址:
https://github.com/balancap/SSD-Tensorflow
确定推理结构和训练模型以后然后开始装环境,这个真的很坑,反复N多次,才搞好:
1、第一步装anaconda3 开始看网上用的都是4.2,自己也装的4.2,添加新的虚拟环境,就是添加不进去,搞得有些崩溃,没有查出来原因,后来换5.4版本的,环境变量可以添加
先说这个添加环境,刚开始以为创建好环境就可以了,结果是在anaconda中直接下载的Tensorflow直接添加的版本太高了,后来就直接通过
添加低版本的卸载以后又重新添加,具体卸载代码直接百度,添加代码就粘贴一下:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple opencv-python (需要在虚拟环境下装什么工具直接写进去,这个是从清华的镜像网站下载,如果直接下载(速度慢报出各种各样的错误)这个网页解释更详细
https://blog.csdn.net/liji_digital/article/details/104200319)
下载tensorflow指定版本
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple tensorflow==1.5
其他也是一样,因为工具版本不一样,反复搞了好几次,才成功(没人带,自己也是一步一个坑的走)
因为后面还要用到其他包一次性都给粘出来了
安装opencv-python(默认安装都是比较高的版本,此次用的4.2.0.34)
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple opencv-python pip install -i https://pypi.tuna.tsinghua.edu.cn/simple opencv-contrib-python
安装matplotlib 计算包
conda install matplotlib
安装完以后可以在安装完成的环境的anaconda中安装spyder
一定要先装tensorflow,这样自动装的spyder的版本不会太高,自己会去匹配适应的的版本(个人感觉,之前装反,上来就是4.0以上的版本,后来又卸载,虽然在anaconda 中可以卸载装指定的版本,但是跟tensorflow的兼容性就没得保证了,这个人弄下的总结仅做参考),这里安装spyder是为了等下运行标图软件用labelImg
我安装完成以后报错,然后修改下面的文件:(好像是导入 import tensorflow as tf 错误)
中间需要对一个 C:\Users\Administrator\AppData\Local\conda\conda\envs\TensorFlow\Lib\site-packages\tensorflow\python\framework 路径中dtypes.py进行修改为(493到502行)
_np_qint8 = np.dtype([("qint8", np.int8, (1,0))])
_np_quint8 = np.dtype([("quint8", np.uint8, (1,0))])
_np_qint16 = np.dtype([("qint16", np.int16, (1,0))])
_np_quint16 = np.dtype([("quint16", np.uint16, (1,0))])
_np_qint32 = np.dtype([("qint32", np.int32, (1,0))])
# _np_bfloat16 is defined by a module import
# Custom struct dtype for directly-fed ResourceHandles of supported type(s).
np_resource = np.dtype([("resource", np.ubyte, (1,0))])
安装完成以后就在,打开环境运行,测试是否成功:
打开虚拟环境 :activate tensorflow
打开 Python
输入测试代码:
#测试代码
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
import tensorflow as tf
hello = tf.constant('hello,world')
sess = tf.Session()
print(sess.run(hello))
网上给的很多代码就是后面4句,然后就报出各种问题,运行没问题就开始测试一下标图软件了
我用的是spyder 版本是3.2.8(因为添加了tensorflow虚拟环境,不知道后来什么情况运行不了,应该是我没安装相应的运行环境,因为怕出现问题,labelImg 软件就在base这个环境是可以运行,对应的安装库我都装在这个环境下了,安装方式在下面这个网站https://blog.csdn.net/m0_38139979/article/details/79958823)
标图有快捷键可以用,自己百度,测试用起来还是挺方便的。
后面就是安装pycharm软件了,里面后面环境配置
这个直接百度一下就可以了,把anaconda 中的tersonflow环境导入就行了
在新的pycharm中添加环境,我的添加完成了。步骤就是这样,细化可以百度,仓促之间记录,莫见怪!
2、环境搞好以后,就在pycharm中添加SSD-TensorFlow-Master 工程:
注意:1处的文件夹下下载相应的文件,在给出的网站有详细步骤
2、自己要建立这个文件夹不然会报错的
3、标记图像数据存储位置,都是自己建立(经验之谈就是图像都放入指定位置以后再开始标记,因为标记图像里面有个路径,不然还得一个个修改,很烦)
4、就是把notebook打开的ssd_notebook.ipynb中的代码复制粘在住工程下,后面再改数据比较方便,运行一下就可以了
5、最后一步就是深度训练了:
这个过程也是问题很多:自己出的问题在网上一个个看帖子才跑起来的
经验一:每次运行开始训练文件就把train_model里面所有的文件清空一次
经验二:学习率调的低一些我用的0.005,觉得有点儿高,开始自动设置0.01上来就是 loss= Nan()之类的,然后过一会就甭了
经验三:就是开始训练时,
# DATA_FORMAT = 'NCHW' 针对GPU 我的电脑不带GPU 改为下面 DATA_FORMAT = 'NHWC'
经验四:要是只训练一种特征就把这个代码屏蔽掉,多特征我也没测试
然后就是开始训练了,第一次训练也不知道这个值多小好(以前见到的都是0.001以内,采用的是不同的网络,那是训练了200000次以上的结果)
以上就是自己的训练过程,自己也是刚开始,学着做,自己也是从别人的帖子中摸索前进,也把自己的经验分享一下。