YOLOv3自有数据集训练

YOLO的作者表明他已经放弃CV,darknet是一个C语言库。无论从哪个方面来看,YOLO都是非常奇葩的一个类库。俄罗斯人AlexeyAB也属于其中一部分,他的代码以win平台为主,有很多有趣特点。

一、基本情况

https://github.com/AlexeyAB/darknet

非常详细地讲解了AlexeyAB版的darknet的配置方法。最为直观的是可以实时显示loss和mAP图。

它的中文翻译版本(有所简化)

https://zhuanlan.zhihu.com/p/102628373

其中有几点值得注意:

建议为每个类分配至少2000次迭代,但是整体迭代次数不应少于4000次。如果想要更加精准地定义什么时候该停止训练,需要使用以下方法:

  1. 训练过程中,你将会看到日志中有很多错误的度量指标,你需要在avg指标不再下降的时候停止训练,如下图所示:

Region Avg IOU: 0.798363, Class: 0.893232, Obj: 0.700808, No Obj: 0.004567, Avg Recall: 1.000000, count: 8 Region Avg IOU: 0.800677, Class: 0.892181, Obj: 0.701590, No Obj: 0.004574, Avg Recall: 1.000000, count: 8
9002: 0.211667, 0.60730 avg, 0.001000 rate, 3.868000 seconds, 576128 images Loaded: 0.000000 seconds

  • 9002 - 代表当前的迭代次数。
  • 0.60730 avg - average loss (error) - 这个指标是平均loss, 其越低越好。
    在这个指标不再下降的时候就可以停止训练了。最终的值大概分布在0.05-3.0之间,小而简单的模型通常最终loss比较小,大而复杂的loss可能会比较大。

训练完成后,你就可以从 darknet\build\darknet\x64\backup 文件夹中取出比较靠后的几个weights文件,并对他们进行测试,选择最好的权重文件。

举个例子,你在9000次迭代后停止训练,但最好的权重可能是7000,8000,9000次的值。这种情况的出现是由于过拟合导致的。过拟合是由于过度学习训练集的分布,而降低了模型在测试集的泛化能力。

Early Stopping Point示意图:

为了得到在early stopping point处的权重:

2.1 首先,你的obj.data文件中应该含有valid=valid.txt一项,用于测试在验证集的准确率。如果你没有验证集图片,那就直接复制train.txt重命名为valid.txt。

2.2 假如你选择在9000次迭代后停止,那可以通过以下命令测试7000,8000,9000三个模型的相关指标。选择最高mAP或者最高IoU的模型最为最终模型。

  • darknet.exe detector map data/obj.data yolo-obj.cfg backup\yolo-obj_7000.weights
  • darknet.exe detector map data/obj.data yolo-obj.cfg backup\yolo-obj_8000.weights
  • darknet.exe detector map data/obj.data yolo-obj.cfg backup\yolo-obj_9000.weights

或者你可以选择使用-map标志符来直接实时测试mAP值:

darknet.exe detector train data/obj.data yolo-obj.cfg darknet53.conv.74 -map

然后你就能得到loss曲线和mAP曲线,mAP每4个epoch对验证集进行一次测试,并将结果显示在图中。

指标解释

mAP 是Pascal VOC竞赛的默认指标,与MS COCO竞赛中的AP50指标是一致的。

Precision和Recall参数在Pascal VOC竞赛中略微不同,但 IoU 的意义都是相同的.

二、训练结果

1、AlexeyAB标注工具训练结果:

数据过好,让人怀疑是否过拟合;然后缺乏F1-force,搞一个。

2、同样的数据集(但是不同标注方法)easydl训练结果

来自为知笔记(Wiz)

原文地址:https://www.cnblogs.com/jsxyhelu/p/12390127.html

时间: 2024-08-30 18:02:44

YOLOv3自有数据集训练的相关文章

yoloV3一步步训练自己的数据

YOLOV3的主页: https://pjreddie.com/darknet/yolo/ 运行主页上的代码得到: 首先使用一个开源的神经网络框架Darknet,使用C和CUDA,有CPU和GPU两种模式. 1.下载darknet 编辑Makefile文件: 2.编译: make 如果遇到缺失包报错,将缺失的包装上去以后重新编译,重复下列两个操作,直到所有包都装好 make clean make 安装好DarkNet之后,在darknet的子目录cfg/下已经有了一些网络模型的配置文件,在使用之

从零到一:caffe-windows(CPU)配置与利用mnist数据集训练第一个caffemodel

一.前言 本文会详细地阐述caffe-windows的配置教程.由于博主自己也只是个在校学生,目前也写不了太深入的东西,所以准备从最基础的开始一步步来.个人的计划是分成配置和运行官方教程,利用自己的数据集进行训练和利用caffe来实现别人论文中的模型(目前在尝试的是轻量级的SqueezeNet)三步走.不求深度,但求详细.因为说实话caffe-windows的配置当初花了挺多时间的,目前貌似还真没有从头开始一步步讲起的教程,所以博主就争取试着每一步都讲清楚吧. 这里说些题外话:之所以选择Sque

tfrecord数据集训练验证-猫狗大战

#!/usr/bin/env python # -*- coding:utf-8 -*- from mk_tfrecord import * #from model import * from inception_v3 import * import numpy as np import os import cv2 os.environ["CUDA_VISIBLE_DEVICES"] = "2" def training(): N_CLASSES = 2 # 分类数

Keras猫狗大战五:采用全部数据集训练,精度提高到90%

深度学习严重依赖训练数据量的大小,前面(https://www.cnblogs.com/zhengbiqing/p/11070783.html)只随机抽取猫狗图片各1000.500.200分别作为训练.验证.测试集,即使采用了数据增强,精度只达到83%. 采用kaggle 猫狗数据集全部25000张进行训练学习,随机选取猫狗图片各9000.2250.1250分别作为训练.验证.测试集,进行训练. 训练100次迭代: history = model.fit_generator( train_gen

tensorflow 2.0 学习 (十一)卷积神经网络 (一)MNIST数据集训练与预测 LeNet-5网络

网络结构如下: 代码如下: 1 # encoding: utf-8 2 3 import tensorflow as tf 4 from tensorflow import keras 5 from tensorflow.keras import layers, Sequential, losses, optimizers, datasets 6 import matplotlib.pyplot as plt 7 8 Epoch = 30 9 path = r'G:\2019\python\mn

使用自己的数据集训练和测试"caffenet"

主要步骤可参考: http://blog.csdn.net/u010194274/article/details/50575284 补充几点: 1. convert函数是ImageMagick包里面的,在使用之前要进行安装 sudo apt-get install ImageMagick 2. 在将图片大小处理为256x256的时候,这里需要注意,数字之间使用的是字母x,而不是乘号 3. shell脚本中使用到的路径,最好都使用绝对路径 4. 作者在网络定义部分说的并不明确,补充如下:solve

如何使用yolov3训练自己的数据集

博客主要结构 1. 如何在ubuntu18.04上安装yolo 2 .如何配置yolov3 3 .如何制作自己的训练集测试集 4 .如何在自己的数据集上运行yolov3 1. 在ubuntu18.04下安装yolov3 安装darknet 按ctrl+atl+t 打开终端, 并在终端下依次输入以下命令 git clone https://github.com/pjreddie/darknet.git cd darknet make 如果成功的话你会看到以下信息 mkdir -p obj gcc

YOLOv3 训练自己的数据附优化与问题总结

YOLOv3 训练自己的数据附优化与问题总结 环境说明 系统:ubuntu16.04 显卡:Tesla k80 12G显存 python环境: 2.7 && 3.6 前提条件:cuda9.0 cudnn7.0 opencv3.4.0 安装cuda和cudnn教程 安装opencv3.4.0教程 实现YOLOV3的demo 首先安装darknet框架,官网链接 git clone https://github.com/pjreddie/darknet.git cd darknet vim M

Ubuntu14.04+caffe+cuda7.5 环境搭建以及MNIST数据集的训练与测试

Ubuntu14.04+caffe+cuda 环境搭建以及MNIST数据集的训练与测试 一.ubuntu14.04的安装: ubuntu的安装是一件十分简单的事情,这里给出一个参考教程: http://jingyan.baidu.com/article/76a7e409bea83efc3b6e1507.html 二.cuda的安装: 1.首先下载nvidia cuda的仓库安装包(我的是ubuntu 14.04 64位,所以下载的是ubuntu14.04的安装包,如果你是32位的可以参看具体的地