本着不再当队长的原则,这学期的深度学习实践课进了别的同学的队伍,果然,当普通队员的感觉就是……真香!
今天服从组织安排,用华为云的ModelArts尝试跑一下Caffe框架下的SSD模型来进行目标检测。队友说,让我尽量试试,还给我发了一大堆文档,可以说是相当耐心了。认真学习。
首先是在ModelArts中创建一个GPU实例并编译好Caffe-SSD, 这里队友实在看不下去我编译时的弱智操作,帮我完成了这一步。。
准备数据集
虽然模拟电梯环境采集了一些数据,但是明显有很多重复的。
所以只能在寻找另外的方法,而网上很少有所需的数据,于是打算自己爬图片做标注后用于训练。
获取图片
由于图片数量较多,还需要安装chromedriver, 我的谷歌版本时版本 78.0.3904.97,下载对应版本, 放在图片存放路径的文件夹中,切换到目录运行命令:
googleimagesdownload -k "电动车" -l 300 --chromedriver="./chromedriver
然后就开始自动下载啦~~~
图片预处理
筛选出符合要求的图片后,接下来进行数据增强。一方面是为了增加样本量,另一方面能够提高模型的泛化能力。
由于大小不一,先统一转为500*500
1 | from PIL import Image |
处理完其实已经没多少数据了,应该多爬一点的..
接下来可以用labelImg标注数据了,我已经是个熟练工了。。感觉触摸板都要摸烂了。。
生成LMDB数据集
将数据集划分下训练集、测试集和验证集
按VOC标准建好目录结构,把数据传到ModelArts上面
ImageSets里Main文件夹,用到4个文件:
- train.txt 是用来训练的图片文件的文件名列表
- val.txt是用来验证的图片文件的文件名列表
trianval.txt是用来训练和验证的图片文件的文件名列表
test.txt 是用来测试的图片文件的文件名列表
用脚本生成训练集和测试集,
1 | import os |
接下来引用分好的dataset建立list文件,改下create_list.sh中的路径, 这个文件是从VOC0712中拷贝过来的,记得注释掉[[ \$dataset == “test” && \$name == “VOC1227” ]] 不然无法生成test
1 |
|
接下来根据建好的list文件,生成lmdb文件用于之后的训练
需要export一下openblas的路径
1 | export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/ma-user/anaconda2/lib |
然后调用convert_annoset生成lmdb文件
1 | /home/ma-user/work/caffe/build/tools/convert_annoset --anno_type=detection --encode_type=jpg --encoded=true --shuffle=true \ |
1 | /home/ma-user/work/caffe/build/tools/convert_annoset --anno_type=detection --encode_type=jpg --encoded=true --shuffle=true \ |
训练模型
修改模型中的相应参数,开跑。。
1 | /home/ma-user/work/caffe/build/tools/caffe train \ |
美滋滋地开跑了,结果loss全是0????
还得重新看数据集有什么问题。。弄了一天,人都傻了。。
后来反应过来是文件名写错了。
当房间烧成了废墟 我看见了更皎洁的月光
我看见了所有赐予我的幸福
所有转瞬即逝的欢乐
我看见了我违背的誓言
不曾释怀的痛楚
未能痊愈的伤痛
压抑住的泪水
我看见了我不曾哀悼的死亡
没有回应的祈祷
未曾开启的门 和始终开放的门
我看见了被我遗弃的爱人
未能实践的梦想
我看见了所有给予我却不能接受的一切
我看见了我期盼的却未能收到的来信
我看见了所有应该发生但从未发生的一切
——《尘与雪》