回顾一下yolo原理

本文介绍如何制作数据集、修改代码、不加载预权重从头跑自己的训练数据

一、简单回顾一下yolo原理:

1、端到端,输入图像,一次性输出每个栅格预测的一种或多种物体

2、坐标x,y代表了预测的bounding box的中心与栅格边界的相对值。

坐标w,h代表了预测的bounding box的width、height相对于整幅图像(或者栅格)width,height的比例。

3、

每个格子可以预测B个bounding box,但是最终只选择只选择IOU最高的bounding box作为物体检测输出,即每个格子最多只预测出一个物体。当物体占画面比例较小,如图像中包含畜群或鸟群时,每个格子包含多个物体,但却只能检测出其中一个。
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
原文: https://www.cnblogs.com/makefile/p/YOLOv3.html © 康行天下

每个格子可以输出B个bounding box,但是最终只会输出IOU占比最高的bounding box   作为输出,所以, 一个格子只能预测一个类别。

4、loss=∑i=0s2coordErr+iouErr+clsErr

考虑各项权重:λcoord = 5, λnoobj = 0.5。因为不包含物体的框较多,需要弱化对应的权重影响,不然会导致包含物体的框贡献低,训练不稳定甚至发散。

5、如果想一个格子预测多个类别,需要Anchors. --yolo2

二、如何使用yolo3,训练自己的数据集进行目标检测
    第一步:下载VOC2007数据集,把所有文件夹里面的东西删除,保留所有文件夹的名字。

像这样:

第二步:把你所有的图片都复制到JPEGImages里面

像这样:

第三步:生成Annotations下的文件

工具:LabelImg ,链接:https://pan.baidu.com/s/1GJFYcFm5Zlb-c6tIJ2N4hw 密码:h0i5

像这样:

第四步:生成ImageSets/Main/4个文件。在VOC2007下建个文件test.py,然后运行

像这样:

test.py代码:

import os
import random

trainval_percent = 0.1
train_percent = 0.9
xmlfilepath = ‘Annotations’
txtsavepath = ‘ImageSets\Main’
total_xml = os.listdir(xmlfilepath)

num = len(total_xml)
list = range(num)
tv = int(num * trainval_percent)
tr = int(tv * train_percent)
trainval = random.sample(list, tv)
train = random.sample(trainval, tr)

ftrainval = open(‘ImageSets/Main/trainval.txt’, ‘w’)
ftest = open(‘ImageSets/Main/test.txt’, ‘w’)
ftrain = open(‘ImageSets/Main/train.txt’, ‘w’)
fval = open(‘Imag

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值