按照这个教程为主,这个教程为辅,遇到的问题,解决记录一下:
1.解决Python报错–UnicodeDecodeError: ‘gbk’ codec can’t decode byte 0x80 in position 658: illegal multibyte sequence
原因:编码方式不一致
解决方案:
在open()方法中加入encoding设置encoding='utf-8'
file1=open("这里是你读取文件的路径","r",encoding='utf-8')
2.Error: l.outputs == params.inputs filters= in the [convolutional]-layer doesn't correspond to classes= or mask= in [yolo]-layer
原因:cfg文件设置出错,一般是filters那里没有更改
解决方案:
use the filter formula for convolution layer before YOLO layer (classes+5)x3
so the filter not 255 but 18, (1+5)x3
--------------------------------------------------------------------
把yolo(搜索yolo,一共有三个)那三块上一层卷积层的filter 改成(classes+5)x3
如果你的classes为1 即改成filter=18,例如我:
[convolutional]
size=1
stride=1
pad=1
filters=18
activation=linear
[yolo]
mask = 6,7,8
anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326
classes=1
num=9
jitter=.3
ignore_thresh = .5
truth_thresh = 1
random=1
...
...
...
[convolutional]
size=1
stride=1
pad=1
filters=18
activation=linear
[yolo]
mask = 3,4,5
anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326
classes=1
num=9
jitter=.3
ignore_thresh = .5
truth_thresh = 1
random=1
...
...
...
[convolutional]
size=1
stride=1
pad=1
filters=18
activation=linear
[yolo]
mask = 0,1,2
anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326
classes=1
num=9
jitter=.3
ignore_thresh = .5
truth_thresh = 1
random=1
3.Error in load_data_detection() - OpenCV
原因:不是命名问题就是是路径问题
解决方案:才发现我的图片是png格式。。。不是jpg,把写的路径更改一下就好了。
for year, image_set in sets:
if not os.path.exists('myData/labels/'): # 改成自己建立的myData
os.makedirs('myData/labels/')
image_ids = open('myData/ImageSets/Main/%s.txt'%(image_set)).read().strip().split()
list_file = open('myData/%s_%s.txt'%(year, image_set), 'w')
for image_id in image_ids:
list_file.write('%s\myData\JPEGImages\%s.png\n'%(wd, image_id)) #这个地方加不加前缀呢...好像需要加前缀
convert_annotation(year, image_id)
list_file.close()
4.CUDA status Error: file: ..\..\src\dark_cuda.c : cuda_make_array() : line: 493 :
这里我也不太清除到底是怎么回事
如果你编译成功了,但是测试的时候报错,可以建议你看一下这一篇博客,我没有细看,因为我改了cfg里面的subdivisions改大之后之后就能开始训练了。
结论:原来我被windows给骗了。。。
今天我左想右想,觉得不对劲,我在训练的时候,GPU之占用了8%,这合理吗?这不合理,我决定好好看看怎么解决这个问题。另外网上有些说是改makefile文件,但是在win10系统下使用VS2019并不会加载这个文件,按照我之前配置darknet的教程来,编译成功就可以了。
真相了win10真的有毒,Win 10果然是Bug 10:GPU占用率原来是这么算的,那么我实际额GPU在训练的时候利用率是多少呢?
使用命令nvidia-sim
那这么一说确实是超出了 ,需要把subdivisions改大一点缓解压力,于是我改成了32,最大训练次数改成了2000次,因为我看有人说训练几个classes就用2000乘,训练的时间也还蛮快的,说是要7个小时,结果四十分钟左右就训练完了。
希望我的经验之谈能够帮助需要的人~
|