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

使用自己数据集聚类得到anchors。
相比于作者使用VOC数据集的精度更高。

# kmeans 聚类计算anchor boxesimport glob
import xml.etree.ElementTree as ETimport numpy as npfrom kmeans import kmeans, avg_iou# 标签文件地址
ANNOTATIONS_PATH = "/home/peter/桌面/项目文档/相机-雷达识别/724DATA/label_png"
CLUSTERS = 9def 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")) / widthymin = int(obj.findtext("bndbox/ymin")) / heightxmax = int(obj.findtext("bndbox/xmax")) / widthymax = int(obj.findtext("bndbox/ymax")) / heightxmin = 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__)''''#使用10次循环去均值,但是所得精度82%反而不如一次的88%高for i in range(10):data = load_dataset(ANNOTATIONS_PATH)out = kmeans(data, k=CLUSTERS)if i == 0:out1 = outelse:out1 = out1 + outprint(i)out1 = out1 / 10#clusters = [[10,13],[16,30],[33,23],[30,61],[62,45],[59,119],[116,90],[156,198],[373,326]]#out= np.array(clusters)/608.0out = out1'''data = load_dataset(ANNOTATIONS_PATH)out = kmeans(data, k = CLUSTERS)# 输入图片大小为width = 608, height = 608print('out*608:')out1 = out * 608out1.astype(np.int32)print(out1)print("Accuracy: {:.2f}%".format(avg_iou(data, out) * 100))print("Boxes:\n {}-{}".format(out[:, 0] * 608, out[:, 1] * 608))ratios = np.around(out[:, 0] / out[:, 1], decimals = 2).tolist()print("Ratios:\n {}".format(sorted(ratios)))

输出结果:

out*608:
[[19.37481032 10.93853073][13.83915023 10.93853073][18.90633295 13.67316342][24.91047041 10.93853073][21.21198331  9.11544228][16.37011756 12.30584708][14.99241275  8.65967016][22.60394537 12.76161919][16.83124763 10.02698651]]
Accuracy: 88.91%
Boxes:[19.37481032 13.83915023 18.90633295 24.91047041 21.21198331 16.3701175614.99241275 22.60394537 16.83124763]-[10.93853073 10.93853073 13.67316342 10.93853073  9.11544228 12.305847088.65967016 12.76161919 10.02698651]
Ratios:

最终的anchros及输出结果:

out.astype(np.int32)
array([[14, 10],[14,  9],[25, 10],[20,  9],[17, 10],[17, 12],[17,  8],[20, 14],[22, 11]], dtype=int32)

将上面int32的内容替换yolov3.cfg中的anchros保存即可。

YOLOv3使用自己数据集——Kmeans聚类计算anchor boxes相关推荐

  1. 【YOLOv3】用自己的标注数据Kmeans聚类计算anchor

    代码地址:https://github.com/lars76/kmeans-anchor-boxes 一.计算出归一化的anchor 1.修改上述代码中的example.py ANNOTATIONS_ ...

  2. K-means 计算 anchor boxes

    k-means原理 K-means算法是很典型的基于距离的聚类算法,采用距离作为相似性的评价指标,即认为两个对象的距离越近,其相似度就越大.该算法认为簇是由距离靠近的对象组成的,因此把得到紧凑且独立的 ...

  3. Kmeans聚类K值选择Parametric Bootstrap方法,以及数据重抽样方法Bootstrapping

    常用的K值选择方法是通过寻找"拐点"确认,或者下游业务需求确定.下文介绍了另一种选择方法. 评论:原始该K值选择法只有在数据为"gaussian-like"时才 ...

  4. YOLO利用kmeans聚类算法计算anchors box(原理介绍及代码)

    1.Kmeans介绍 kmeans聚类属于无监督学习算法,目的是将一组数据分成k组,称之为k个簇,计算出这k组中每组的中心. 从百度图片上找了一张图片,大概就是这样,分成下图中的三组,并且找出每一组的 ...

  5. 通过K-means对iris数据集进行处理 Kmeans聚类算法实例

    Python from sklearn import datasets import matplotlib.pyplot as plt from sklearn.cluster import KMea ...

  6. 实践 | k-means聚类(使用鸢尾花数据集)

    使用K-means聚类算法筛实现鸢尾花聚类 鸢尾花数据集描述 导入相关包 直接从sklearn.datasets中加载数据集 绘制二维数据分布图 实例化K-means类&定义训练函数 训练 可 ...

  7. 用pytorch及numpy计算成对余弦相似性矩阵,并用numpy实现kmeans聚类

      sklearn和scipy里面都提供了kmeans聚类的库,但是它们都是根据向量直接进行计算欧氏距离.闵氏距离或余弦相似度,如果使用其他的度量函数或者向量维度非常高需要先计算好度量距离然后再聚类时 ...

  8. Kmeans聚类:啤酒数据集聚类

    今日分享:啤酒数据集聚类 一:流程 1.利用pandas库读取数据集文件,加载数据,选取目标数据用于训练 2.使用kmeans模型进行聚类训练 3.使用matpotlib库以可视化的方式来展示聚类效果 ...

  9. 计算思维与数据科学 K-Means聚类模型信用卡用户风险评估 python连接数据库来处理数据

    实验目的 1.处理信用卡数据异常值 1)读取信用卡数据: 2)丢弃逾期.呆账.强制停卡.退票.拒往记录为1.瑕疵户为2的记录: 3)丢弃呆账.强制停卡.退票为1.拒往记录为2的记录: 4)丢弃频率为5 ...

最新文章

  1. python中pow是什么函数_python中pow什么意思
  2. Java 6.编写类
  3. 数据流图中flow不显示文字_发动机系统数据流一般参数的解读
  4. mysql练习_MySQL练习——4
  5. 【VBA研究】怎样将单元格数据赋给数组
  6. 四层LVS与七层Nginx负载均衡的区别
  7. 前端学习(2776):组件的生命周期和过程
  8. 三场直播丨达梦DM8数据库体系结构、从零快速搭建一整套监控体系、Oracle Database Server经典体系结构...
  9. 给数据库减负的八个思路,盘它!
  10. 经验3-5年的测试人,如果还是长期加班、薪资涨幅不大,建议认真看看
  11. python刷博客点击量
  12. 妈妈计算机英语怎么说,妈妈的英文翻译,妈妈英语怎么说
  13. 厦门大学LaTeX模板:页眉页脚设置
  14. 题目:两道迷宫类型题
  15. 以麒麟音乐为例,教你如何构建专属自己的音乐播放器
  16. hdu5238(中国剩余定理+线段树)
  17. LangChain vs Semantic Kernel
  18. Attention Is All You Need读后感
  19. Android VCard联系人备份恢复(导入/导出)详解
  20. WPS表格 下拉列表+图表 实现动态显示图表

热门文章

  1. (转) intellij idea部署web项目时的位置(Tomcat)
  2. 小爱同学与小冰将实现联合进步
  3. 【luogu P3627 [APIO2009]抢掠计划】 题解
  4. 银行支行信息 银行卡归属地
  5. Android ADT插件更新后程序运行时抛出java.lang.VerifyError异常解决办法
  6. RTT时钟管理篇——软硬定时器理解(一)
  7. php 修改input内容,JS简单获取并修改input文本框内容的方法示例
  8. java一致性hash api_一致性哈希算法学习及JAVA代码实现分析
  9. oracle有硬件吗,Oracle 10G数据库中软硬件环境有哪些要求?
  10. 如何使用RMAN duplicate搭建12C的Data Guard环境?