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-手把手用自己的数据集训练自己的模型相关推荐

  1. Keras之DNN:利用DNN算法【Input(8)→12+8(relu)→O(sigmoid)】利用糖尿病数据集训练、评估模型(利用糖尿病数据集中的八个参数特征预测一个0或1结果)

    Keras之DNN:利用DNN算法[Input(8)→12+8(relu)→O(sigmoid)]利用糖尿病数据集训练.评估模型(利用糖尿病数据集中的八个参数特征预测一个0或1结果) 目录 输出结果 ...

  2. tensorflow精进之路(二十五)——Object Detection API目标检测(下)(VOC数据集训练自己的模型进行目标检测)

    1.概述 上一讲,我们使用了别人根据COCO数据集训练好的模型来做目标检测,这一讲,我们就来训练自己的模型. 2.下载数据集 为了方便学习,我们先使用别人整理好的数据集来训练---VOC 2012数据 ...

  3. MSCOCO数据集转VOC数据集训练目标检测模型

    MSCOCO数据集转VOC数据集训练目标检测模型 Images 2014 Train images [83K/13GB] 2014 Val images [41K/6GB] 2014 Test ima ...

  4. Win10+YOLOv4/v3用yolo_mark标记数据集 训练自己的模型

    Win10+Yolov4用yolo_mark标记数据集 训练自己的模型 文章目录 1. 前言 2. darknet 3. yolo_mark 3.1 yolo_mark和opencv的下载 3.2 y ...

  5. paddle - crowdHuman数据集训练人体识别模型

    paddle - crowdHuman数据集训练人体识别模型 数据集annotation crowdhuman的odgt文件各项意义 转换为paddle yolo的格式 输入哪些数据? 输出模型 数据 ...

  6. 手把手教你使用 YOLOV5 训练目标检测模型

    作者 | 肆十二 来源 | CSDN博客 这次要使用YOLOV5来训练一个口罩检测模型,比较契合当下的疫情,并且目标检测涉及到的知识点也比较多. 先来看看我们要实现的效果,我们将会通过数据来训练一个口 ...

  7. 利用COCO API测试自己数据集训练的YOLOv3模型的mAP(VOC格式数据集)

    目录 工具 前言 生成标注集的json文件 数据集准备 将voc注解格式数据集的注解转换成txt注解格式 自定义数据集的注解转换成coco的注解格式 生成结果集的json文件 安装darknet 获取 ...

  8. 手把手教你用MindSpore训练一个AI模型!

    首先我们要先了解深度学习的概念和AI计算框架的角色(https://zhuanlan.zhihu.com/p/463019160),本篇文章将演示怎么利用MindSpore来训练一个AI模型.和上一章 ...

  9. 手把手教你用自己训练的AI模型玩王者荣耀

    击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 浮云一别后,流水十年间. 大家好,我 ...

最新文章

  1. 写到usaco上的一题可能题解是凸包所以转来这篇文章看看
  2. 区间内x的出现个数(主席树)
  3. 【Java 虚拟机原理】垃圾回收算法 ( Java 虚拟机内存分区 | 垃圾回收机制 | 引用计数器算法 | 引用计数循环引用弊端 )
  4. 【bzoj2850】巧克力王国 KD-tree
  5. 你竟然没用 Nuget 构建项目?
  6. 小二,先来两桂花豆沙包!
  7. 一些Layout的坑
  8. linux进程间通信-概述
  9. 【openGauss】gsql客户端工具(二)gsql客户端工具之Data Studio客户端工具
  10. 分享一下Java从基础到进阶各阶段视频教程
  11. kali-TheFatRat木马生成工具安装及简单使用
  12. javplayer 使用教程_童装裁剪之连衣裙打版教程 有图纸
  13. 好用的软件网址(不一定是官网,不定时更新)
  14. catia曲面设计从入门到精通_CATIA V5曲面设计从入门到精通
  15. python对经济统计学有什么用_经济统计学是一个怎样的学科?就业方向主要是什么?...
  16. cmake:cmake_minimum_required命令
  17. 用stream流比较List<对象>内的时间戳进行分组 按天
  18. python中forward的参数_pytorch forward两个参数实例
  19. 网络安全策略和网络安全机制
  20. //css 层叠样式表(Cascading Style Sheets)

热门文章

  1. boost::mp11::mp_map_update_q相关用法的测试程序
  2. GDCM:获取序列超声的测试程序
  3. core::demangled_name的测试程序
  4. VTK:可视化算法之HeadSlice
  5. VTK:可视化算法之ImageGradient
  6. VTK:可视化算法之LOx
  7. VTK:小部件之TextWidget
  8. VTK:可视化之RotateActor
  9. VTK:非结构化网格之ClipUnstructuredGridWithPlane
  10. VTK:PolyData之MiscPointData