适用于Windows和Linux的Yolo-v3和Yolo-v2(下)

如何训练(检测自定义对象):

(培养老YOLO V2 yolov2-voc.cfg,yolov2-tiny-voc.cfg,yolo-voc.cfg,yolo-voc.2.0.cfg,… 通过链接点击)

训练Yolo v3:

  1. 创建yolo-obj.cfg内容与中相同的文件yolov3.cfg(或复制yolov3.cfg到yolo-obj.cfg)和:

将行批次更改为 batch=64
将线路细分更改为 subdivisions=16
将max_batches线更改为(classes*2000但不小于4000),max_batches=6000如果训练3节课,则为fe
将线路步长更改为max_batches,fe的80%和90% steps=4800,5400
设置网络大小width=416 height=416或任何32的值的倍数:https : //github.com/AlexeyAB/darknet/blob/0039fd26786ab5f71d5af725fc18b3f521e7acfd/cfg/yolov3.cfg#L8-L9
将行更改classes=80为3 [yolo]层中每层的对象数:

https://github.com/AlexeyAB/darknet/blob/0039fd26786ab5f71d5af725fc18b3f521e7acfd/cfg/yolov3.cfg#L610
https://github.com/AlexeyAB/darknet/blob/0039fd26786ab5f71d5af725fc18b3f521e7acfd/cfg/yolov3.cfg#L696
https://github.com/AlexeyAB/darknet/blob/0039fd26786ab5f71d5af725fc18b3f521e7acfd/cfg/yolov3.cfg#L783

变化[ filters=255在3]到过滤器=(类+ 5)×3 [convolutional]的每个前[yolo]层

https://github.com/AlexeyAB/darknet/blob/0039fd26786ab5f71d5af725fc18b3f521e7acfd/cfg/yolov3.cfg#L603
https://github.com/AlexeyAB/darknet/blob/0039fd26786ab5f71d5af725fc18b3f521e7acfd/cfg/yolov3.cfg#L689
https://github.com/AlexeyAB/darknet/blob/0039fd26786ab5f71d5af725fc18b3f521e7acfd/cfg/yolov3.cfg#L776

当使用[Gaussian_yolo] 层,改变[ filters=57]过滤器=(类+ 9)X3在3 [convolutional]每个前[Gaussian_yolo]层

https://github.com/AlexeyAB/darknet/blob/6e5bdf1282ad6b06ed0e962c3f5be67cf63d96dc/cfg/Gaussian_yolov3_BDD.cfg#L604
https://github.com/AlexeyAB/darknet/blob/6e5bdf1282ad6b06ed0e962c3f5be67cf63d96dc/cfg/Gaussian_yolov3_BDD.cfg#L696
https://github.com/AlexeyAB/darknet/blob/6e5bdf1282ad6b06ed0e962c3f5be67cf63d96dc/cfg/Gaussian_yolov3_BDD.cfg#L789

因此,如果classes=1应该filters=18。如果classes=2再写filters=21。

(不要写在cfg文件中:filters =(classs + 5)x3)

(通常filters取决于classes,coords和的数量mask,即filters = (classes +
coords + 1)*,其中maskanchor的索引。如果mask不存在,则filters = (classes +coords + 1)*num)

因此,例如,对于2个对象,文件yolo-obj.cfg应该yolov3.cfg在3个 [yolo]层中的每一行中与以下行不同:

[convolutional]

filters=21

[region]

classes=2

  1. obj.names在目录中创建文件build\darknet\x64\data\,并带有对象名称-每个都在新行中

  2. obj.data在目录中创建文件build\darknet\x64\data\,其中包含(其中class =对象数):

classes= 2

train = data/train.txt

valid = data/test.txt

names = data/obj.names

backup = backup/

  1. 将对象的图像文件(.jpg)放在目录中 build\darknet\x64\data\obj\

  2. 应该在数据集中的图像上标记每个对象。使用此可视化GUI软件标记对象的边界框并为Yolo v2和v3生成注释文件:https : //github.com/AlexeyAB/Yolo_mark

将.txt为.jpg同一目录中具有相同名称但具有.txt-extension的每个-image-file- 创建一个-file ,并将其放置到文件中:该图像上的对象编号和对象坐标,用于新行中的每个对象:

<x_center>
<y_center>

哪里:

-从0到的整数对象编号(classes-1)
<x_center>
<y_center> -浮动值相对于图片的宽度和高度,可以等于(0.0 to 1.0]
例如: = <absolute_x> / <image_width>或 =
<absolute_height> / <image_height>
注意:<x_center> <y_center>-矩形的中心(不是左上角)

例如,将为img1.jpg创建img1.txt包含:

1 0.716797 0.395833 0.216406 0.147222

0 0.687109 0.379167 0.255469 0.158333

1 0.420312 0.395833 0.140625 0.166667

  1. train.txt在directory中创建文件build\darknet\x64\data\,其中包含图像的文件名,每个文件名都换行,并具有相对于的路径darknet.exe,例如包含:

data/obj/img1.jpg

data/obj/img2.jpg

data/obj/img3.jpg

  1. 下载卷积层的预训练权重并放入目录 build\darknet\x64

o for csresnext50-panet-spp.cfg(133 MB):csresnext50-panet-spp.conv.112

o 对于yolov3.cfg, yolov3-spp.cfg(154 MB):darknet53.conv.74

o for yolov3-tiny-prn.cfg
, yolov3-tiny.cfg(6 MB):yolov3-tiny.conv.11

o 对于enet-coco.cfg (EfficientNetB0-Yolov3)(14 MB):enetb0-coco.conv.132

  1. 使用命令行开始训练: darknet.exe
    detector train data/obj.data yolo-obj.cfg darknet53.conv.74

要在Linux上训练,请使用以下命令:(./darknet detector train data/obj.data yolo-obj.cfg darknet53.conv.74仅使用./darknet代替darknet.exe)

o (文件每100次迭代yolo-obj_last.weights将保存到中build\darknet\x64\backup\)

o (文件每1000次迭代yolo-obj_xxxx.weights将保存到中build\darknet\x64\backup\)

o (darknet.exe detector train data/obj.data yolo-obj.cfg darknet53.conv.74
-dont_show如果在没有监视器的计算机(如云EC2)上训练,则可以禁用Loss-Window的使用)

o (要在没有GUI的远程服务器上进行训练时查看mAP和损失图,请使用命令,darknet.exe detector train data/obj.data yolo-obj.cfg darknet53.conv.74 -dont_show -mjpeg_port 8090 -map然后http://ip-address:8090在Chrome / Firefox浏览器中打开URL )

8.1. 对于每4个纪元(设置valid=valid.txt或train.txt在obj.data文件中)使用mAP(平均平均精度)计算进行训练并运行:darknet.exe detector train data/obj.data yolo-obj.cfg darknet53.conv.74-map

  1. 训练完成后- yolo-obj_final.weights从路径中获取结果build\darknet\x64\backup\

每进行100次迭代后,可以停止,然后从这一点开始训练。例如,经过2000次迭代后,可以停止训练,之后再开始使用以下方法开始训练:darknet.exe detector train data/obj.data yolo-obj.cfg backup\yolo-obj_2000.weights

(在原始存储库https://github.com/pjreddie/darknet中,权重文件每1万次迭代仅保存一次if(iterations > 1000))

同样,可以比所有45000次迭代更早地获得结果。

注意:如果在训练过程中看到(损失)字段的nan值avg-则训练有误,但如果出现nan在其行中-则训练进行得很好。

注意:如果在cfg文件中更改了width =或height =,则新的宽度和高度必须被32整除。

注意:训练后,请使用以下命令进行检测:darknet.exe
detector test data/obj.data yolo-obj.cfg yolo-obj_8000.weights

注意:如果Out of memory发生错误,.cfg则应在-file文件中增加subdivisions=1632或64:链接

如何训练tiny-yolo(检测自定义对象):

执行与上述完整yolo模型相同的所有步骤。除了:

下载yolov3-tiny的默认权重文件:https

适用于Windows和Linux的Yolo-v3和Yolo-v2(下)相关推荐

  1. 适用于Windows和Linux的Yolo-v3和Yolo-v2(上)

    适用于Windows和Linux的Yolo-v3和Yolo-v2(上) https://github.com/eric-erki/darknetAB (用于对象检测的神经网络)-Tensor Core ...

  2. mac linux 性能测试工具下载,8款SSD固态硬盘性能测试软件,适用于Windows、Linux、MacOS、安卓系统等不同操作系统的...

    虽然各存储厂商对SSD的读写参数都有说明,但通常是不太准确的.唯一值得相信的就是自己测试,用自己的真实环境得到真正的数据. 警告 - 请不要不必要地重复读/写测试你的SSD固态盘,重复读/写测试可能会 ...

  3. mac与linux文本转换_适用于Windows,Linux和Mac的最佳免费文本编辑器

    mac与linux文本转换 We all use text editors to take notes, save web addresses, write code, as well as othe ...

  4. abiword_AbiWord是适用于Windows,Linux和Mac的免费文字处理器

    abiword Sometimes you need a word processing application but not an entire office suite. Today we ta ...

  5. 获取本地ip地址适用于windows和Linux环境

    简写版本 package com.gblfy.util;import java.net.Inet4Address; import java.net.InetAddress; import java.n ...

  6. 模拟器不全屏_puNES 适用于 Windows 和 Linux 的开源 NES 模拟器

    在游戏方面,我个人并不喜欢玩网络游戏,如果要玩游戏,也都是玩一些单机版的,我个人比较喜欢 ATC 动作过关游戏.年前的时候用发小的 PS4 玩了几天,虽然游戏都是大作,但是仍然无法撼动我对单机以及像素 ...

  7. Python程序编译为动态库pyd或so (适用于Windows和Linux)

    Welcome to My Blog 文章唯一地址:https://blog.csdn.net/REAL_liudebai/article/details/125126432 问题:   1)Pyth ...

  8. windows编写linux脚本,适用于 Windows 和 Linux 的脚本编写工具包

    提供脚本编写功能,支持部署高容量 ProLiant 服务器安装 在 Windows 及 Linux 环境中均支持 HPE ProLiant BL/ML/DL/SL.XL 100.300.500.700 ...

  9. windows与Linux实时传输数据,I01 物理隔离条件下Windows与Linux服务器的文件传输脚本...

    title: I01 物理隔离条件下Windows与Linux服务器的文件传输脚本author: Adolph Leecategories: 进阶tags: paramiko打怪升级mathjax: ...

最新文章

  1. SAP SD基础知识之现金销售
  2. IE常见的CSS的BUG(一)
  3. 2019年有三AI“春季”划,给我一个荣耀,还你一生荣耀
  4. Python error: Unable to find vcvarsall.bat
  5. REST和SOAP:谁更好,或者都好?
  6. linux重置root密码
  7. vue设置多选框默认勾选_Angular/Vue多复选框勾选问题
  8. mysql客户端重置密码是多少,mysql重置root密码
  9. 形象易懂讲解算法I——小波变换
  10. 运维linux脚本实例,Shell脚本使用示例
  11. Windows 共享无线上网 无法启动ICS服务 解决方法
  12. java材质_教程 - JAVA版材质包制作教程 | MineBBS 我的世界中文论坛
  13. java中同步关键字_Java中的同步关键字
  14. 思科多个交换机不同VLAN的配置
  15. 【EasyUI】如何根据条件控制可编辑表格某字段是否可以编辑;
  16. oracle 并行之二: parallel dml
  17. 高数笔记(九):不定积分,分部积分法,有理函数的积分
  18. 【华为OD机试真题 Java】统计射击比赛成绩
  19. 2020浙江大学软件学院预推免经验
  20. 【OfferX】常见题目

热门文章

  1. springboot设置文件上传大小(tomcat默认1M)
  2. Excel如何设置单元格行高,办公入门
  3. Redis 笔记(16)— info 指令和命令行工具(查看内存、状态、客户端连接数、监控服务器、扫描大key、采样服务器、执行批量命令等)
  4. 安装 sklearn 报错 ImportError: cannot import name Type
  5. python对文件的读写正确操作方式
  6. 【C#实践】三层实例:登录过程
  7. 机房收费系统【VB版】——上下机
  8. openpyxl.utils.exceptions.IllegalCharacterError错误
  9. os.environ[CUDA_DEVICE_ORDER] = PCI_BUS_ID os.environ[CUDA_VISIBLE_DEVICES] = 0
  10. tf.cast()数据类型转换