《Keras/Tensorflow+python+yolo3训练自己的数据集》实践踩坑心得
参看实践原文是https://blog.csdn.net/Patrick_Lxc/article/details/80615433
运行环境:win10,python3.5.2,tensorflow-gpu1.9.0,Keras2.2.2
首先,按原文链接下载相应代码;
第一步:按原文操作,注意只需保留文件名,内部的东西必须全部清空。此处VOCdevkit文件夹建议放置在yolo3算法解压后的keras-yolo3-master文件及内,省的之后改代码。JPG文件夹是我个人加的,不用在意。test.py见第四步:

第二步:复制图片注意图片名。python可以用zfill()方法补全函数名。我使用的代码如下:
import os
import os.path
from PIL import Image
rootdir = "源地址"
for parent,dirnames,filenames in os.walk(rootdir):
for filename in filenames:
#print(filename)
img=Image.open('源地址/'+filename)
filen=filename.split('.')[0]
filen = filen.zfill(5)#填充至多少位,zfill返回的是字符串
print(filen)
img.save('保存地址/'+filen+'.jpg')
第三步:按原文链接下载工具,实测可用。这里做标注很费时间,需要耐心。
第四步:按原文操作,创建test.py后运行即可,原文代码无问题,可以修改原文代码,自己分配训练集,测试集和验证集等的比例。
第五步:按原文操作,修改voc_annotation.py中的想要的类的个数和表述,运行voc_annotation.py,会得到2007_train.txt,2007_test.txt,2007_val.txt。此时注意,删除的是这3个txt文件文件名中的“2007_”这部分,而不是其他。
第六步:虽然原文说训练自己的数据集不需要改cfg文件,但我还是改了,按原文所说,3处yolo,注意,filters在yolo的上边,其数值为3*(5+类数),classes和random在yolo下边。
第七步:按原文即可。
第八步:按原文操作,可自己修改batch_size和ecophs来调整训练的参数,建议GPU加速,效率比CPU高很多。另外需要在keras-yolo3-master文件夹下新建一个logs文件夹,内部再新建一个000文件夹,用于存放训练结束后的权重文件trained_weights.h5。
这里我遇到了两个报错,“Process finished with exit code -1073741819 (0xC0000005)”和“Process finished with exit code -1073740940 (0xC0000374)”,起初我以为是内存不足的问题,但多次修改batch_size也未能解决,后来发现是python版本问题,从python3.6改成python3.5后就能正常生成。
第九步:首先把上一步trained_weights.h5文件复制黏贴到keras-yolo3-master/model_data文件夹下,改名为yolo.h5。
原文的代码修改其实是在yolo_video.py中对对应代码进行修改,改完后再修改yolo.py中的detect_video函数,改为:
def detect_video(yolo, video_path=0, output_path=""):
import cv2
vid = cv2.VideoCapture(0)
#下边不变,略
如此就可以通过默认摄像头(笔记本摄像头)调用模型进行物体识别。
识别输入图片的方法,待补充。
有空更新。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)