Yolov1-手把手用自己的数据集训练自己的模型
TensorFlow下使用YOLOv1训练自己的数据集+测试自己的模型
一. 前期准备
环境:(用cpu跑的)
win10 + python3.6.8 + tensorflow2.4.1+pycharm
ps:本来打算用tensflow-gpu 1.4.2运行的,但是该代码是2.xx版本的tensflow,需要安装tensflow-gpu 2.x.版本,以及cuda 11.0版本的 ,由于本人电脑比较差,最高cuda安装到8.0版本,又不想升级显卡驱动,所以用cpu跑的。
YOLOv1代码:https://e.coding.net/xucancan1/yolov1_tensorflow/xucc1617608769.git
1.1准备自己要训练的图片
first 在data文件夹中创建一个myDataSet文件夹来保存爬取的图片,修改 pachong.py文件的保存地址,运行pachong.py文件,爬虫完后然后从myDataSet文件夹中挑选出符合自己数据集(比如我想训练只检测手机,所以挑选带手机的图片)的图片,删除不符合的图片
second 再接着 运行SelectSize.py文件,继续筛选文件
last 最后运行graph_rename.py文件,给上述筛选的文件命名,得到最终的原图片
我本人在网上爬取的图片:爬取代码以及其他代码如下:
GitHub - xucancan1617608769/yolov1
1.2 数据集准备
在Yolo_tensorflow\data\pascal_voc\VOCdevkit\VOC2007路径下,创建如下文件夹(ps:我的文件夹中已经创好了)
将1.1中data文件夹中的图片全部copy到此路径下的JPEGImages文件夹中,然后在ImageSets文夹下创建Main文件夹,接着用labelImg工具对JPEGImages文件夹的图片进行数据标记保存到Annotations文件夹下
工具:LabelImg 链接:链接:https://pan.baidu.com/s/1qwPnIx-T_-Kl1CawtE4M9g
提取码:8cb2
labelImg工具的使用参考链接:使用LabelImg标注图片 - AiFly - 博客园
像这样:
运行conert_to_txt.py文件生成ImageSets/Main/文件夹下的4个文件。(layout文件夹不用管)
像这样:
运行完后Main文件夹会生成yolov1所需的train.txt,val.txt,test.txt,trainval.txt
至此,自己要训练的数据集已准备完毕
二.修改配置
①修改 ..\yolo_tensorflow\yolo\config.py文件 如下
CLASSES = ['aeroplane', 'bicycle', 'bird', 'boat', 'bottle', 'bus','car', 'cat', 'chair', 'cow', 'diningtable', 'dog', 'horse','motorbike', 'person', 'pottedplant', 'sheep', 'sofa','train', 'tvmonitor']
====>>CLASSES = ['phone', 'cat', 'dog', 'sheep'] # 修改为自己的类别
② ..\yolo_tensorflow\utils\pascal_voc.py文件
#第30行labels = np.zeros((self.batch_size, self.cell_size, self.cell_size, 9)) # 25修改为5+类别数#第129行label = np.zeros((self.cell_size, self.cell_size, 9)) # 修改为5+类别数
开始训练,运行 train.py文件。
三 .保存权重文件 测试
① 将..\yolo_tensorflow\data\pascal_voc\output\2021_09_12_10_47\目录下(2021_09_12_10_47文件夹在模型开始训练时自动生成)保存的最后的模型文件(下图1)复制到..\yolo_tensorflow\data\weights\目录下(下图2),并在名称中间添加“.ckpt”重新命名。
上图1
上图2
② 修改..\yolo_tensorflow\test.py文件。
将待测试图片放入..\yolo_tensorflow-master\test\目录下。
# 在189行的默认权重文件改为自己训练好权重的模型
def main():parser = argparse.ArgumentParser()# parser.add_argument('--weights', default="YOLO_small.ckpt", type=str)parser.add_argument('--weights', default="yolo-15000.ckpt", type=str)# 将207行需要测试的图片名称修改为自己的图片名称# detect from image fileimname = 'test/000004.jpg'detector.image_detector(imname)
③ 运行test.py文件进行测试
结果:
四.结语
整个流程按照步骤走了一遍,中间需要安装一些第三方安装包,比如tensorflow2.x.x版本,以及cv2,tf_sim,最后结果不是很理想,定位存在很大误差,以后再更新改进。
Yolov1-手把手用自己的数据集训练自己的模型相关推荐
- Keras之DNN:利用DNN算法【Input(8)→12+8(relu)→O(sigmoid)】利用糖尿病数据集训练、评估模型(利用糖尿病数据集中的八个参数特征预测一个0或1结果)
Keras之DNN:利用DNN算法[Input(8)→12+8(relu)→O(sigmoid)]利用糖尿病数据集训练.评估模型(利用糖尿病数据集中的八个参数特征预测一个0或1结果) 目录 输出结果 ...
- tensorflow精进之路(二十五)——Object Detection API目标检测(下)(VOC数据集训练自己的模型进行目标检测)
1.概述 上一讲,我们使用了别人根据COCO数据集训练好的模型来做目标检测,这一讲,我们就来训练自己的模型. 2.下载数据集 为了方便学习,我们先使用别人整理好的数据集来训练---VOC 2012数据 ...
- MSCOCO数据集转VOC数据集训练目标检测模型
MSCOCO数据集转VOC数据集训练目标检测模型 Images 2014 Train images [83K/13GB] 2014 Val images [41K/6GB] 2014 Test ima ...
- Win10+YOLOv4/v3用yolo_mark标记数据集 训练自己的模型
Win10+Yolov4用yolo_mark标记数据集 训练自己的模型 文章目录 1. 前言 2. darknet 3. yolo_mark 3.1 yolo_mark和opencv的下载 3.2 y ...
- paddle - crowdHuman数据集训练人体识别模型
paddle - crowdHuman数据集训练人体识别模型 数据集annotation crowdhuman的odgt文件各项意义 转换为paddle yolo的格式 输入哪些数据? 输出模型 数据 ...
- 手把手教你使用 YOLOV5 训练目标检测模型
作者 | 肆十二 来源 | CSDN博客 这次要使用YOLOV5来训练一个口罩检测模型,比较契合当下的疫情,并且目标检测涉及到的知识点也比较多. 先来看看我们要实现的效果,我们将会通过数据来训练一个口 ...
- 利用COCO API测试自己数据集训练的YOLOv3模型的mAP(VOC格式数据集)
目录 工具 前言 生成标注集的json文件 数据集准备 将voc注解格式数据集的注解转换成txt注解格式 自定义数据集的注解转换成coco的注解格式 生成结果集的json文件 安装darknet 获取 ...
- 手把手教你用MindSpore训练一个AI模型!
首先我们要先了解深度学习的概念和AI计算框架的角色(https://zhuanlan.zhihu.com/p/463019160),本篇文章将演示怎么利用MindSpore来训练一个AI模型.和上一章 ...
- 手把手教你用自己训练的AI模型玩王者荣耀
击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 浮云一别后,流水十年间. 大家好,我 ...
最新文章
- 写到usaco上的一题可能题解是凸包所以转来这篇文章看看
- 区间内x的出现个数(主席树)
- 【Java 虚拟机原理】垃圾回收算法 ( Java 虚拟机内存分区 | 垃圾回收机制 | 引用计数器算法 | 引用计数循环引用弊端 )
- 【bzoj2850】巧克力王国 KD-tree
- 你竟然没用 Nuget 构建项目?
- 小二,先来两桂花豆沙包!
- 一些Layout的坑
- linux进程间通信-概述
- 【openGauss】gsql客户端工具(二)gsql客户端工具之Data Studio客户端工具
- 分享一下Java从基础到进阶各阶段视频教程
- kali-TheFatRat木马生成工具安装及简单使用
- javplayer 使用教程_童装裁剪之连衣裙打版教程 有图纸
- 好用的软件网址(不一定是官网,不定时更新)
- catia曲面设计从入门到精通_CATIA V5曲面设计从入门到精通
- python对经济统计学有什么用_经济统计学是一个怎样的学科?就业方向主要是什么?...
- cmake:cmake_minimum_required命令
- 用stream流比较List<对象>内的时间戳进行分组 按天
- python中forward的参数_pytorch forward两个参数实例
- 网络安全策略和网络安全机制
- //css 层叠样式表(Cascading Style Sheets)
热门文章
- boost::mp11::mp_map_update_q相关用法的测试程序
- GDCM:获取序列超声的测试程序
- core::demangled_name的测试程序
- VTK:可视化算法之HeadSlice
- VTK:可视化算法之ImageGradient
- VTK:可视化算法之LOx
- VTK:小部件之TextWidget
- VTK:可视化之RotateActor
- VTK:非结构化网格之ClipUnstructuredGridWithPlane
- VTK:PolyData之MiscPointData