mac做目标检测 google colaboratory训练(ssd,vgg模型,直接上手,顺便教你使用免费服务器训练)

训练自己的目标检测模型(SSD篇)SSD-Tensorflow-master MAC纠错版,并使用Google colab进行训练^_^

本文主体部分来自于文章:
https://blog.csdn.net/comway_Li/article/details/85240291
在应用SSD-Tensorflow-master于mac的过程中遇到诸多问题,记之。

本次的任务在于识别出环境下的文本文件,废话不多说,成品图
mac做目标检测 google colaboratory训练(ssd,vgg模型,直接上手,顺便教你使用免费服务器训练)_第1张图片

1.第一步:制作数据集by labelImg(这一步很重要啊,大家想训练啥一定要制作自己的数据集)

下载labelimg:github页面(https://github.com/tzutalin/labelImg)
Mac 安装应该挺简单,可百度,安装完成之后启动labelImg,打开终端,
输入:

labelImg

即可启动
在这里插入图片描述
mac做目标检测 google colaboratory训练(ssd,vgg模型,直接上手,顺便教你使用免费服务器训练)_第2张图片
标注数据
成功安装了标注工具后,现在就来开始标注数据了。
按照VOC数据集的要求,创建以下文件夹
Annotations:用于存放标注后的xml文件
ImageSets/Main:用于存放训练集、测试集、验收集的文件列表
JPEGImages:用于存放原始图像
mac做目标检测 google colaboratory训练(ssd,vgg模型,直接上手,顺便教你使用免费服务器训练)_第3张图片
打开labelImg,打开目录,导入原始图片,开始标记,依次标记并保存即可

标记完所有的数据集之后,划分训练集、测试集、验证集
完成所有熊猫照片的标注后,还要将数据集划分下训练集、测试集和验证集。在github上下载一个自动划分的脚本(https://github.com/EddyGao/make_VOC2007/blob/master/make_main_txt.py)
将此py文件放入同一目录下,如下
mac做目标检测 google colaboratory训练(ssd,vgg模型,直接上手,顺便教你使用免费服务器训练)_第4张图片
运行

python make_main_txt.py

2.转换数据集类型并开始训练

本案例是基于tensorflow的,因此,在github上下载一个基于tensorflow的SSD,地址是 https://github.com/balancap/SSD-Tensorflow

在下载好的SSD-Tensorflow-master文件中(此处为区分我将文件名改为SSD-Tensorflow-master gpu)加入两个新文件 text_voc2007 和 text_tfrecord
mac做目标检测 google colaboratory训练(ssd,vgg模型,直接上手,顺便教你使用免费服务器训练)_第5张图片
将刚刚配置好的三个文件拷贝进入 text_voc2007
mac做目标检测 google colaboratory训练(ssd,vgg模型,直接上手,顺便教你使用免费服务器训练)_第6张图片
以上为准备工作,完成之后打开终端,路径cd 至
mac做目标检测 google colaboratory训练(ssd,vgg模型,直接上手,顺便教你使用免费服务器训练)_第7张图片

python tf_convert_data.py --dataset_name=pascalvoc --dataset_dir=./text_voc2007/ --output_name=voc_2007_train --output_dir=./text_tfrecord/

在这里插入图片描述
此时按下回车,mac一般都会报错

mac做目标检测 google colaboratory训练(ssd,vgg模型,直接上手,顺便教你使用免费服务器训练)_第8张图片
一般情况下会warning:numpy相关的问题 可直接忽略
但mac可能会爆出另外的错误即:
在这里插入图片描述
其中.DS_S.jpg为mac文件格式中特有的检查文件可修改相关的代码 删去.DS_S.jpg文件即可 根据报错 我的解决方法为找到 pascalvoc_to_tfrecords.py文件
在第200行插入

index=filenames.index('.DS_Store')
filenames.pop(index)

删除.DS_Store文件即可
mac做目标检测 google colaboratory训练(ssd,vgg模型,直接上手,顺便教你使用免费服务器训练)_第9张图片
再次回车
接下来会出现报错
UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0xff in position 0: invalid start byte
推测为读取方式错误,网上查找后
应为pascalvoc_to_tfrecords.py文件第83行出错
mac做目标检测 google colaboratory训练(ssd,vgg模型,直接上手,顺便教你使用免费服务器训练)_第10张图片
将r改为rb即可
在这里插入图片描述
修改完成后依旧会报错(key error可能是其他,不重要)
mac做目标检测 google colaboratory训练(ssd,vgg模型,直接上手,顺便教你使用免费服务器训练)_第11张图片
主要是ssd例子中没有我们自己的目标 ,打开
pascalvoc_common.py
将其中的字典的key修改为自己的labelimg中保存的标签即可(我的为line和circle)
再运行就发现finished
在这里插入图片描述
以上数据转换就基本完成

下载预训练模型
SSD-Tensorflow提供了预训练好的模型,基于VGG模型,可直接百度此模型vgg_voc0712_ssd_300x300_ft_iter_120000
选择他
mac做目标检测 google colaboratory训练(ssd,vgg模型,直接上手,顺便教你使用免费服务器训练)_第12张图片
文件内部
mac做目标检测 google colaboratory训练(ssd,vgg模型,直接上手,顺便教你使用免费服务器训练)_第13张图片
mac做目标检测 google colaboratory训练(ssd,vgg模型,直接上手,顺便教你使用免费服务器训练)_第14张图片
创建此文件夹,将vgg网络文件放入其中
mac做目标检测 google colaboratory训练(ssd,vgg模型,直接上手,顺便教你使用免费服务器训练)_第15张图片
右下角有文件名,请参考
〉===================
标注文件、SSD模型都配置完成,开始训练
在训练模型之前,有个参数要修改下,打开SSD-Tensorflow-master/train_ssd_network.py找到里面的DATA_FORMAT参数项,如果是使用cpu训练则值为NHWC,如果是使用gpu训练则值为NCHW,如下:

DATA_FORMAT = 'NCHW'  # gpu
# DATA_FORMAT = 'NHWC'    # cpu

而mac一般情况下都是cpu版,直接改成cpu就行

打开终端,cd至
mac做目标检测 google colaboratory训练(ssd,vgg模型,直接上手,顺便教你使用免费服务器训练)_第16张图片

python train_ssd_network.py \
    --train_dir=./text_model \
    --dataset_dir=./text_tfrecord \
    --dataset_name=pascalvoc_2007 \
    --dataset_split_name=train \
    --model_name=ssd_300_vgg \
    --checkpoint_path=./model_pre_train/VGG_VOC0712_SSD_300x300_ft_iter_120000.ckpt/VGG_VOC0712_SSD_300x300_ft_iter_120000.ckpt\
  --save_summaries_secs=60 \
    --save_interval_secs=600 \
    --weight_decay=0.0005 \
    --optimizer=adam \
    --learning_rate=0.01 \
    --batch_size=8

输入后如图
mac做目标检测 google colaboratory训练(ssd,vgg模型,直接上手,顺便教你使用免费服务器训练)_第17张图片
有可能训练成功,但也有可能失败,应该是错误
mac做目标检测 google colaboratory训练(ssd,vgg模型,直接上手,顺便教你使用免费服务器训练)_第18张图片
检查两项
1.checkpoint的的地址是否正确, --checkpoint_path=./model_pre_train/VGG_VOC0712_SSD_300x300_ft_iter_120000.ckpt/VGG_VOC0712_SSD_300x300_ft_iter_120000.ckpt
应为此种形式
mac做目标检测 google colaboratory训练(ssd,vgg模型,直接上手,顺便教你使用免费服务器训练)_第19张图片
mac做目标检测 google colaboratory训练(ssd,vgg模型,直接上手,顺便教你使用免费服务器训练)_第20张图片
2.检查程序是cpu版还是gpu版
默认为gpu版,若需要更改为CPU版即可

若检查都为正常,却还是报错
在这里插入图片描述
实在无法解决的路径问题 直接在代码中固定
mac做目标检测 google colaboratory训练(ssd,vgg模型,直接上手,顺便教你使用免费服务器训练)_第21张图片
终端运行代码,去掉啦checkpoint_path

python train_ssd_network.py \
    --train_dir=./text_model \
    --dataset_dir=./text_tfrecord \
    --dataset_name=pascalvoc_2007 \
    --dataset_split_name=train \
    --model_name=ssd_300_vgg \
  --save_summaries_secs=60 \
    --save_interval_secs=600 \
    --weight_decay=0.0005 \
    --optimizer=adam \
    --learning_rate=0.01 \
    --batch_size=8

此时mac上的代码一般运行应该无错,出现queuestep基本就是正确的啦
mac做目标检测 google colaboratory训练(ssd,vgg模型,直接上手,顺便教你使用免费服务器训练)_第22张图片
》〉》〉》〉》〉》〉》〉》〉》〉》〉》〉》〉》〉》〉

正片开始

你的mac去训练一定非常慢,那么在没有服务器的情况下怎么办呢,使用智商上网模式,打开google,右上角九宫格
mac做目标检测 google colaboratory训练(ssd,vgg模型,直接上手,顺便教你使用免费服务器训练)_第23张图片
打开云端硬盘,新建文件夹,导入你刚刚测试成功的SSD文件,如下
mac做目标检测 google colaboratory训练(ssd,vgg模型,直接上手,顺便教你使用免费服务器训练)_第24张图片
再新建 colabortory ## (注意:要先关联更多应用,但我第一次关联之后新建没有colabortory,可直接google “colabortory” 进入官方网站,在那里新建,再回到云端硬盘,就有啦)
mac做目标检测 google colaboratory训练(ssd,vgg模型,直接上手,顺便教你使用免费服务器训练)_第25张图片
应该是此种模式,这里面和jupyter差不多
mac做目标检测 google colaboratory训练(ssd,vgg模型,直接上手,顺便教你使用免费服务器训练)_第26张图片
首先,修改,重要重要重要
mac做目标检测 google colaboratory训练(ssd,vgg模型,直接上手,顺便教你使用免费服务器训练)_第27张图片
mac做目标检测 google colaboratory训练(ssd,vgg模型,直接上手,顺便教你使用免费服务器训练)_第28张图片
然后装载云端硬盘
mac做目标检测 google colaboratory训练(ssd,vgg模型,直接上手,顺便教你使用免费服务器训练)_第29张图片

from google.colab import drive
drive.mount('/content/drive')

运行这段代码,刷新左侧,看见我们的云端文件加载进来啦,hhhh
mac做目标检测 google colaboratory训练(ssd,vgg模型,直接上手,顺便教你使用免费服务器训练)_第30张图片
同样,首先应该cd至相关文件下,自己的文件名自己cd,不要说cd都不会^_^

cd drive/My\ Drive/line/SSD-Tensorflow-master gpu

这个时候操作就和终端里差不多啦(注意:终端命令前面要加“!”)
mac做目标检测 google colaboratory训练(ssd,vgg模型,直接上手,顺便教你使用免费服务器训练)_第31张图片

!python train_ssd_network.py \
    --train_dir=./line_model \
    --dataset_dir=./line_tfrecord \
    --dataset_name=pascalvoc_2007 \
    --dataset_split_name=train \
    --model_name=ssd_300_vgg \
    --save_summaries_secs=60 \
    --save_interval_secs=600 \
    --weight_decay=0.0005 \
    --optimizer=adam \
    --learning_rate=0.01 \
    --batch_size=8

输入代码直接训练,成功

mac做目标检测 google colaboratory训练(ssd,vgg模型,直接上手,顺便教你使用免费服务器训练)_第32张图片
训练了2万多步control+c终止就可,会自动保存,然后到云端硬盘把最后一步的文件下载下来就可以啦。hhh
mac做目标检测 google colaboratory训练(ssd,vgg模型,直接上手,顺便教你使用免费服务器训练)_第33张图片
OK,到此基本结束,有啥问题欢迎联系[email protected]

你可能感兴趣的:(mac做目标检测 google colaboratory训练(ssd,vgg模型,直接上手,顺便教你使用免费服务器训练))