YOLOv3使用笔记——Kmeans聚类计算anchor boxes

2023-11-18

anchor boxes用来预测bounding box,faster rcnn中用128*128,256*256,512*512,分三个尺度变换1:1,1:2,2:1,共计9个anchor来预测框,每个anchor预测2000个框左右,使得检出率提高很多。YOLOv2开始增加了anchor机制,在v3中增加到9个anchor。例如yolov3-voc.cfg中这组anchor,anchors = 10,13,  16,30,  33,23,  30,61,  62,45,  59,119,  116,90,  156,198,  373,326,由作者通过聚类VOC数据集得到的,20类目标中大到bicycle、bus,小到bird、cat,目标大小差距很大,如果用自己的数据集训练检测目标,其中部分anchor并不合理,本文记录下在自己的数据集上聚类计算anchor,提高bounding box的检出率。

原工程:https://github.com/lars76/kmeans-anchor-boxes

Joseph Redmon论文数据avg iou在67.2,该作者验证在k=9时,多次迭代在VOC 2007数据集上得到avg iou在67.13,相差无几。

修改的example.py

import glob
import xml.etree.ElementTree as ET
 
import numpy as np
 
from kmeans import kmeans, avg_iou
 
ANNOTATIONS_PATH = "Annotations"
CLUSTERS = 9
 
 
def load_dataset(path):
  dataset = []
  for xml_file in glob.glob("{}/*xml".format(path)):
    tree = ET.parse(xml_file)
 
    height = int(tree.findtext("./size/height"))
    width = int(tree.findtext("./size/width"))
 
    for obj in tree.iter("object"):
      xmin = int(obj.findtext("bndbox/xmin")) / width
      ymin = int(obj.findtext("bndbox/ymin")) / height
      xmax = int(obj.findtext("bndbox/xmax")) / width
      ymax = int(obj.findtext("bndbox/ymax")) / height
 
      xmin = np.float64(xmin)
      ymin = np.float64(ymin)
      xmax = np.float64(xmax)
      ymax = np.float64(ymax)
      if xmax == xmin or ymax == ymin:
         print(xml_file)
      dataset.append([xmax - xmin, ymax - ymin])
  return np.array(dataset)
 
if __name__ == '__main__':
  #print(__file__)
  data = load_dataset(ANNOTATIONS_PATH)
  out = kmeans(data, k=CLUSTERS)
  #clusters = [[10,13],[16,30],[33,23],[30,61],[62,45],[59,119],[116,90],[156,198],[373,326]]
  #out= np.array(clusters)/416.0
  print(out)
  print("Accuracy: {:.2f}%".format(avg_iou(data, out) * 100))
  print("Boxes:\n {}-{}".format(out[:, 0]*416, out[:, 1]*416))
 
  ratios = np.around(out[:, 0] / out[:, 1], decimals=2).tolist()
  print("Ratios:\n {}".format(sorted(ratios)))


 

Kmeans因为初始点敏感,所以每次运行得到的anchor值不一样,但是对应的avg iou稳定。用于训练的话就需要统计多组anchor,针对固定的测试集比较了。

可以计算下VOC的这组anchor在自己数据集上的avg iou,对比直接在数据集上聚类得到的anchor以及avg iou。

参考:

https://blog.csdn.net/hrsstudy/article/details/71173305?utm_source=itdadao&utm_medium=referral

https://blog.csdn.net/sinat_24143931/article/details/78773936
--------------------- 
作者:Gotta-C 
来源:CSDN 
原文:https://blog.csdn.net/cgt19910923/article/details/82154401 
版权声明:本文为博主原创文章,转载请附上博文链接!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

YOLOv3使用笔记——Kmeans聚类计算anchor boxes 的相关文章

  • 《高效能程序员的修炼》之译者序

    出版社的冀康一开始来找我谈翻译这本书的时候 我的第一反应是 这兄弟真是不知道我现在有多忙 我每天要处理200多封邮件 在资源有限的情况下经常要同时带6 7个项目 而且每个项目的交付计划都很紧 压力很大 每天起码工作12个小时 有时候还要熬夜
  • python连续输入多行_python-遍历Pandas DataFrame并插入行的最快方法

    我正在构建一个工具 以帮助您每周自动执行来自多个实验室设置的数据审查 每天都会生成一个制表符分隔的文本文件 每行代表每2秒获取的数据 因此共有43200行和许多列 每个文件为75mb 我正在使用pandas readcsv加载七个文本文件
  • Python基础知识笔试

    Python基础知识笔试 单选题 2 5分 20题 1 下列哪个表达式在Python中是非法的 B A x y z 1 B x y z 1 C x y y x D x y 2 python my py v1 v2 命令运行脚本 通过 fro
  • JavaScript 基础

    JavaScript 基础 JavaScript 是一门编程语言 可为网站添加交互功能 例如 游戏 动态样式 动画以及在按下按钮或收到表单数据时做出的响应等 本文介绍了 JavaScript 的精彩之处和主要用途 JavaScript 到底
  • Python中的列表和元组

    Python中的列表和元组 1 列表和元组 2 Python 中的列表和元组都支持负数索引 3 列表和元组都支持切片操作 4 列表和元组都可以随意嵌套 5 两者也可以通过 list 和 tuple 函数相互转换 6 列表和元组常用的内置函数
  • easyexcel和poi对比_POI 和 EasyExcel

    POI 和 easyExcel 讲解 转自狂神老师 仅作为个人笔记使用 一 POI 常用进程 1 将用户信息导出为excel表格 导出数据 2 将Excel表中的信息录入到网站数据库 习题上传 开发中经常会设计到excel的处理 如导出Ex
  • 五、深入理解JDK1.7中HashMap哈希冲突解决方案

    导读 前面文章一 深入理解 Java集合初篇 中我们对Java的集合体系进行一个简单的分析介绍 上两篇文章二 Jdk1 7和1 8中HashMap数据结构及源码分析 三 JDK1 7和1 8HashMap数据结构及源码分析 续 中我们分别对
  • Windows+VS2019用vcpkg编译colmap以及用Cmake编译colmap源码

    Windows VS2019用vcpkg编译colmap以及用Cmake编译colmap源码 Window下官方建议用vcpkg安装 这里我已经安装好了VS2019以及cuda11 7 1 安装vcpkg git clone https g
  • cocos mac android,cocos2dx mac android.mk

    LOCAL PATH call my dir include CLEAR VARS call import add path LOCAL PATH cocos2d call import add path LOCAL PATH cocos2
  • 深度学习论文阅读列表

    deep learning paper read lists 同步更新与github https github com chenmeiya deep learning paper read lists Learning invariace
  • Qt Creator 3.5.1(Qt4.8.4库+MinGW4.4)下不能调试问题解决(Debugging has failed)

    Qt Creator 3 5 1 Qt4 8 4库 MinGW4 4 下使用minGW4 4默认的GDB调试会不成功 提示如下 Debugging starts Debugging has failed Debugging has fini
  • 轻量级AI语言模型,直接轻松运行在你家电脑上

    最近在研究AI语言模型和AI绘画模型 无意间发现了这个轻量级模型 只需要拿到这两个文件 AI exe gpt4all lora quantized bin 双击AI exe就能直接使用 方便快捷 简直不要太爽 上面工作准备好之后 win R
  • PCL常用小知识

    转自 SimpleTriangle 时间计算 pcl中计算程序运行时间有很多函数 其中利用控制台的时间计算是 首先必须包含头文件 include
  • makeinfo: command not found解决方法

    sudo apt get install texinfo
  • Codeforces Round #751 (Div. 2) D. Frog Traveler(BFS)

    题解 因为我们最多把所有的点跳一遍么 所以直接BFS模拟一下就行了 注意现在跳的点不能是以前已经跳过的点 并且只能越跳越高 否则没有意义 这样就保证了时间复杂度是线性的 AC代码 include
  • 蓝桥杯跑步锻炼

    问题描述 小蓝每天都锻炼身体 正常情况下 小蓝每天跑 1 千米 如果某天是周一或者月初 1 日 为了 激励自己 小蓝要跑 2 千米 如果同时是周一或月初 小蓝也是跑 2 千米 小蓝跑步已经坚持了很长时间 从 2000 年 1 月 1 日周六
  • 【Java】使用Mybatis调用SQL Server存储过程

    前言 在软件开发过程中 经常会使用到存储过程 本篇文章用于讲解示例如何使用SpringBoot Mybatis的方式调用SQL Server数据库的存储过程并且得到存储过程的回参 一 存储过程的入参 这是存储过程的入参 用于后续Mybati
  • csgo fps不稳定和服务器,win10玩csgofps不稳定怎么办

    在使用win10系统的时候 很多用户们去玩csgo这款游戏 但是有些用户们却发现在玩耍游戏的时候 游戏帧数非常的不稳定 时高时低 其实导致游戏帧数不稳定的因素有很多 看看解决的方法吧 win10玩csgofps不稳定怎么办 1 关闭游戏的多

随机推荐

  • 基于YOLOv8模型的烟火目标检测系统(PyTorch+Pyside6+YOLOv8模型)

    摘要 基于YOLOv8模型的烟火目标检测系统可用于日常生活中检测与定位烟火目标 利用深度学习算法可实现图片 视频 摄像头等方式的目标检测 另外本系统还支持图片 视频等格式的结果可视化与结果导出 本系统采用YOLOv8目标检测算法训练数据集
  • JVM工具之jstat

    JVM工具之jstat查询GC统计信息分析 JVM工具之jstat查询GC统计信息分析jstat基本使用语法jstat class 加载类统计jstat compiler 编译统计jstat gc 垃圾回收统计jstat gccapacit
  • AVFoundation 框架小结

    AVFoundation 小结 概述 AVFoundation 是 Objective C 中创建及编辑视听媒体文件的几个框架之一 其提供了检查 创建 编辑或重新编码媒体文件的接口 也使得从设备获取的视频实时数据可操纵 但是 通常情况 简单
  • 在js中修改html、body的样式

    一 原始定义 先在css中定义 body html 宽高为300px body html width 300px height 300px 二 js操作 以修改宽度为例 获取body html节点style 主要是这里html 一开始不清楚
  • Esp8266(NodeMcu)接入新大陆物联网平台并且上传温湿度

    Esp8266 NodeMcu 接入新大陆物联网 1 平台注册和产品创建 2 代码协议部分 2 1 连接请求协议 2 2 数据上报部分协议 3 完整代码部分 3 1 效果图 使用Esp8266接入新大陆物联网平台 这几天找了一下物联网平台
  • R 四姑娘山每日客流量爬虫 时间序列建模 ARIMA 指数平滑 TBATS拟合与预测

    一 数据来源 数据来自四姑娘山景区首页新闻的每日客流量发布处 利用python爬虫读取2015年9月29号到2020年6月8日的每日客流量和对应的日期 import urllib request from bs4 import Beauti
  • 前端 图片下载

    图片下载是项目开发过程中经常提到的需求点 本文对以往用过 见过的图片下载方法进行一个汇总 如果后面有遇到 会继续进行补充 一 如果后台直接给的图片下载地址 URL 如后台给的图片下载地址为 http hrmanage test edtsof
  • Android-CMakeLists.txt 链接第三方库(动态或者静态库)到自己的生成库中

    最近在做关于NDK开发的项目 编译方式通过cmake 如何将第三方动态链接库连接到自己生成的动态库中 按照以下步骤 1 首先看目录结构 首先将第三方库复制到jniLibs下 并创建对应的CUP平台目录 2 CMakeLists txt 方式
  • [转载]稳健语音特征和音频场景识别方法研究

    音频应用相关 http max book118 com html 2014 0508 8133338 shtm
  • 斯坦福大学自然语言处理第三课“最小编辑距离(Minimum Edit Distance)”

    一 课程介绍 斯坦福大学于2012年3月在Coursera启动了在线自然语言处理课程 由NLP领域大牛Dan Jurafsky 和 Chirs Manning教授授课 https class coursera org nlp 以下是本课程的
  • vim:批量化注释及删除注释

    1 批量化注释 首先按Esc进入到命令模式 注意左下角变为NORMAL 按住 Ctrl v 进入到视图模式 注意左下角变为 V BLOCK 再通过 h 左 j 下 k 上 l 右 选中区域 ps 按住 shift g 即可选中当前行及其下所
  • 随笔之---maven的知识

    1 maven metadata xml 这个文件是干嘛的 2 setting 中 是啥 表示所有依赖仓库的获取 走 这里 例如 任何仓库的请求 都被转到 下面的地址 如果 不是 是central则关于 中央仓库的请求会转到 下面的地址
  • 【服务器磁盘挂载步骤】

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 服务器磁盘挂载步骤 一 步骤 一 步骤 做了三块盘 2个raid0 一个raid5 具体步骤如下 1 查看下磁盘信息的两种方法 lsblk fdisk l 2 磁盘分区 su
  • 【Qt】QSlider样式定制

    一 背景 QSlider空间是Qt官方的控制控件 在项目开发中 很多地方都会使用到这个控件作为滑动块 我们可以使用样式表来定制QSlider的显示样式 从而满足多种开发需求 一个QSlider包括以下三个部分 1 滑动过的槽 2 滑块 3
  • 阶段性目标规划

    1 2022 2023的目标 1 1 考证 1 软考 嵌入式系统工程师中级 2 架构师设计 1 2 研究产出 时间节点 2021 11 论文的修改与实验 操作系统 2021 12 Emd 与TQWT 算法的 选题与研究 与实验论文撰写 1
  • 安装git,解决"git 不是内部或外部命令,也不是可运行的程序"问题

    若是为解决 git 不是内部或外部命令 也不是可运行的程序 问题 在文末 点击此处 可快速到达 官网链接 https git scm com download win Tips 官网下载的速度忒慢 我是右键复制了链接地址 然后好在迅雷上下载
  • md5加密小工具制作(js版)

    废话不多说 上图上代码 注 该demo样式采用bootstrap框架的css样式做的 页面布局代码
  • linux程序下C语言代写,代写C语言 代做C程序 C++ assembler(QQ:2365427650&http://www.daixiec.com/)...

    The aim of this assignment is to write a two pass assembler for an extended SIMPLE instruction set Then write and test p
  • Unity协程和线程的区别

    先简要说下结论 协同程序 coroutine 与多线程情况下的线程比较类似 有自己的堆栈 自己的局部变量 有自己的指令指针 IP instruction pointer 但与其它协同程序共享全局变量等很多信息 协程 协同程序 同一时间只能执
  • YOLOv3使用笔记——Kmeans聚类计算anchor boxes

    anchor boxes用来预测bounding box faster rcnn中用128 128 256 256 512 512 分三个尺度变换1 1 1 2 2 1 共计9个anchor来预测框 每个anchor预测2000个框左右 使