目录

  • YoLo 实践(1)

    • 目标:
    • 实施方法:
    • Step 0. 测试项目是否可以正常运行
    • 运行效果图
    • 使用VOC数据结构训练模型
      • Step1: 生成统一格式的标注文件和类别文件
      • Step2: 加载预训练模型
      • Step3: 训练VOC数据
      • Step4: 测试模型
  • 问题集合
    • 1. Out of system memory when unfreeze all of the layers.
  • 附录A
    • ConfigParser

YoLo 实践(1)

by lizhen

参考代码:
keras-yolo3 ***

yolo_tensorflow

所需环境:
python3 | annconda
keras
tensorflow
configparser

目标:

使用Keras| tensorflow完成基于Yolo的车辆检测的训练;

实施方法:

(1). Yolo是目前使用比较广泛的模型之一, 在github等开源网站中有很多实现方式, 自己找一个比较靠谱的程序,对其改进. 改进方式有以下几点: (a) 训练给予VOC的模型(复现Yolov3) ; (b) 根据论文去阅读yolo

(2). 改进训练方法, 适用雨车辆检测

Step 0. 测试项目是否可以正常运行

wget https://pjreddie.com/media/files/yolov3.weights # 下载yolo的模型python convert.py yolov3.cfg yolov3.weights model_data/yolo.h5 # 将yolo的模型转化成适合Kears加载的格式python yolo_video.py --image # 指定使用图片检测

运行效果图

使用VOC数据结构训练模型

Step1: 生成统一格式的标注文件和类别文件

为了方便训练, 针对每一个图片都有一种格式的标注文件:
这两种格式的文件是:

Row format: image_file_path box1 box2 ... boxN
Box 的格式 : x_min,y_min,x_max,y_max,class_id

对于VOC数据集,由于已经有了xml格式的标注文件, 仅需要转换标注的格式即可, 在此提供voc_annotation.py

vim voc_annotation.py # 修改有关VOC2007数据的路径
python voc_annotation.py # 运行有关

通过阅读voc_annotation.py文件, 可以得知:
该脚本可以将VOC2007 中标注修改成上述格式的文本;
转换的过程需要修改VOC数据集的路径;
转换后,会待当前目录(getcwd())创建有关训练和校验的标注文件:


~/workspace/keras-yolo3$ ll
-rw-rw-r--  1 lizhen lizhen    297885 Oct 23 15:48 2007_train.txt # 产生的新文件
-rw-rw-r--  1 lizhen lizhen    298595 Oct 23 15:48 2007_val.txt

文件的格式如下:

/keras-yolo3/VOCdevkit/VOC2007/JPEGImages/000064.jpg 1,23,451,500,2
keras-yolo3/VOCdevkit/VOC2007/JPEGImages/000066.jpg 209,187,228,230,14 242,182,274,259,14 269,188,2
95,259,14
keras-yolo3/VOCdevkit/VOC2007/JPEGImages/000073.jpg 121,143,375,460,15 2,154,64,459,15 270,155,375,
331,3 22,143,146,500,14

Step2: 加载预训练模型

为了加快训练的速度和Auc, 可以在已有的模型上进行训练,
在后期的训练中,会冻结yolo模型的前249层, 主要训练后面的高维度的特征
Freeze the first 249 layers of total 252 layers.

cd /home/lizhen/workspace/keras-yolo3 # 切换到工作目录
python convert.py -w yolov3.cfg yolov3.weights model_data/yolo_weights.h5 # 将适用于darknet的模型转换成Keras....
__________________________________________________________________________________________________
conv2d_67 (Conv2D)              (None, None, None, 2 130815      leaky_re_lu_65[0][0]
__________________________________________________________________________________________________
conv2d_75 (Conv2D)              (None, None, None, 2 65535       leaky_re_lu_72[0][0]
==================================================================================================
Total params: 62,001,757
Trainable params: 61,949,149
Non-trainable params: 52,608
__________________________________________________________________________________________________
None
Saved Keras model to model_data/yolo.h5
Read 62001757 of 62001757.0 from Darknet weights.

Step3: 训练VOC数据

为了防止在训练过程中出现OOM异常, 根据问题1的提示, 可以将epoch和batch的数量降低;
对 train.py 的读取文件位置进行修改, 替换成上Step1中生成207_train.txt

python train.py # 读取2017_train.txt ,同时运行模型~/workspace/keras-yolo3$ ls logs/001/
ep003-loss38.801-val_loss35.522.h5  ep009-loss26.373-val_loss27.126.h5     events.out.tfevents.1540299060.BoHong
ep003-loss39.940-val_loss36.366.h5  events.out.tfevents.1540294790.BoHong  trained_weights_final.h5
ep006-loss29.750-val_loss28.700.h5  events.out.tfevents.1540296584.BoHong  trained_weights_stage_1.h5

通过阅读train.py 可知, 经过训练以后会在./logs/0001下产生模型, 模型是** trained_weights_final.h5**
训练过程中的loss变化如下:

Step4: 测试模型

python yolo_video.py --model logs/0001/trained_weights_final.h5 --image

测试效果:

问题集合

1. Out of system memory when unfreeze all of the layers.

在训练数据的过程中(python train.py), 会因为GPU的OOM异常而提前退出训练;
根据
https://github.com/qqwweee/keras-yolo3/issues/122
中提供的信息, 可以尝试一下集中方案:

1 only train 2 classes, car and person, modify model_data/voc_classes.txt2 batch_size = 2 & epoch = 203 set load_pretrained=False4 update tensorflow to 1.8.0

附录A

ConfigParser

ConfigParser模块在python3中修改为configparser.这个模块定义了一个ConfigParser类,该类的作用是使用配置文件生效,配置文件的格式和windows的INI文件的格式相同

该模块的作用 就是使用模块中的RawConfigParser()、ConfigParser()、 SafeConfigParser()这三个方法,创建一个对象使用对象的方法对指定的配置文件做增删改查 操作。


后期准备解析yolo论文,改代码 敬请期待~

转载于:https://www.cnblogs.com/greentomlee/p/9843258.html

YoLo 实践(1)相关推荐

  1. win8配置mysql5.6,win8.1(64位) apache2.4.3+php5.6.3+mysql5.6安装

    Mysql5.5升级到5.7后MySQLdb不能正常使用的问题解决 ubuntu系统 报错信息1 Type "help", "copyright", " ...

  2. YOLOv5和YOLOv7环境(GPU)搭建测试成功

    本来是用doc写的,直接复制到这里很多图片加载缓慢,我直接把doc上传到资源里面了,0积分下载: (10条消息) YOLOv5和YOLOv7开发环境搭建和demo运行-Python文档类资源-CSDN ...

  3. 深度学习(Deep Learning)

    知识关键点 1. 人工智能.深度学习的发展历程 2. 深度学习框架 3. 神经网络训练方法 4. 卷积神经网络,卷积核.池化.通道.激活函数 5. 循环神经网络,长短时记忆 LSTM.门控循环单元 G ...

  4. YOLOv3物体/目标检测之实战篇(Windows系统、Python3、TensorFlow2版本)

    前言 基于YOLO进行物体检测.对象识别,在搭建好开发环境后,先和大家进行实践应用中,体验YOLOv3物体/目标检测效果和魅力:同时逐步了解YOLOv3的不足和优化思路. 开发环境参数 系统:Wind ...

  5. 为YOLOv5、YOLOv8带来全新的数据增强方式-合成雾增强算法

    简介 BestYOLO:https://github.com/WangRongsheng/BestYOLO BestYOLO是一个以科研和竞赛为导向的最好的YOLO实践框架! 目前BestYOLO是一 ...

  6. 2020年个人总结和分享(华为云-云享专家、CSDN博客专家 成长记录)

    前言 2020年经历了许多,疫情........一个实习生的转正历程.CSDN博主的成长经历.与华为云的道义之交,这一年不平凡,这里简单写了一点总结,分享职场.成长.感悟.发现了一些效率工具,和大家分 ...

  7. 【项目实践】从零开始学习Deep SORT+YOLO V3进行多目标跟踪(附注释项目代码)...

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达本文转自|集智书童 1.跟踪基础知识简介 首先要说明一点,现在多目标 ...

  8. YOLO学习-3:ubuntu16.04+ yolov3(darknet)+GPU(nvidia 1080ti)+opencv2.4.11 摄像头测试实践

    一 硬件条件:工作站 大版本主机 +4块 invidia  1080ti的gpu  实际测试,只能用一个,不知道四个都用的话如何设置,有知道的请告诉一下. ./darknet detect cfg/y ...

  9. YOLO学习-1:win10(64位)+ python3.6 + TensorFlow + keras + yolov3测试实践

    实验环境:win10(64位).Python3.6(未安装anaconda版,用了pycharm).TensorFlow(未安装gpu版).keras.yolov3代码.yolov3权重文件 第一步: ...

最新文章

  1. 域服务器广播消息,广播,组播和UNIX域套接字
  2. 如何更改mysql的授权信息_Mysql 的用户权限等操作管理与设置(创建、授权、修改、查看)...
  3. cgroup 介绍 与使用
  4. CTFshow php特性 web137
  5. 【pmcaff】罗永浩昨日演讲视频:一个理想主义者的创业故事Ⅳ
  6. 增强 用文本增强修改SAP标准屏幕中的字段名称 属于元素的文本增强
  7. mysql data文件夹恢复_【专注】Zabbix源码安装教程—步骤详解(2)安装并配置mysql...
  8. leetcode 18 -- 4Sum
  9. 三次样条曲线拟合及Matlab/Python实现
  10. 12010.linux应用程序之spi
  11. IDEA+Java+SSM+Mysql+Bootstrap+Maven实现网上书城系统
  12. Swift 音乐播放demo
  13. 2021水利水电安全员考试每日一练单选题库
  14. Kibana:在 Kibana 中对数据进行深入分析 (drilldown)
  15. 怎么用c语言解四元方程,求四元一次方程组的解
  16. 主题:一个中专生:我在华为面试的真实经历,转http://www.javaeye.com/topic
  17. python scapy 抓包_Python3下基于Scapy库完成网卡抓包解析
  18. 东梓关富春江畔有感  文/江湖一劍客
  19. 【Python自学笔记】学习Python控制键盘鼠标的库 pyautogui
  20. 【毕设记录】第一篇:开题,整体App计划

热门文章

  1. [转载]Linux批量替换不同文件中的相同字符串
  2. makefile 基础(转)
  3. Python import导入模块与函数方法 Python语言基础【1】
  4. 关于ElementUI中MessageBox弹框的取消键盘触发事件(enter,esc)关闭弹窗(执行事件)的解决方法...
  5. 2.11 确定运行计划
  6. 【00】why集搜客网络爬虫?
  7. 十二生肖swift1.2
  8. SAP链接外部数据库的实现方法
  9. iconfont矢量 在已经有的情况下新增图标
  10. ES6新语法--对象成员简写、对象展开、数组展开