目标检测数据可视化,分析anchor_ratio的设置问题

网上有很多类似的文章和代码,但是都不怎么好,这里分享一下我打比赛用的。

import os
import json
import random
import pandas as pd
import seaborn as sns
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['font.family']='sans-serif'
plt.rcParams['figure.figsize'] = (10.0, 5.0)

# 这里打开你的训练集的标注,格式是COCO数据集的格式
with open('annotation.json') as f:
    ann=json.load(f)
    
category_dic=dict([(i['id'],i['name']) for i in ann['categories']])
counts_label=dict([(i['name'],0) for i in ann['categories']])

for i in ann['annotations']:
    counts_label[category_dic[i['category_id']]]+=1
    
box_w = []
box_h = []
box_wh = []
categorys_wh = [[] for j in range(204)]
for a in ann['annotations']:
    if a['category_id'] != 0:
        box_w.append(round(a['bbox'][2],2))
        box_h.append(round(a['bbox'][3],2))
        #因为anchor_ratio是指H/W,这里就统计H/W
        hw = a['bbox'][3]/a['bbox'][2]
        if hw > 1:
            hw = round(hw, 0)
        else:
            hw = round(hw, 1)
        box_wh.append(hw)
        categorys_wh[a['category_id']-1].append(hw)
        
# 所有标签的长宽高比例
box_wh_unique = list(set(box_wh))
box_wh_unique.sort()
box_wh_count=[box_wh.count(i) for i in box_wh_unique]

# 绘图
wh_df = pd.DataFrame(box_wh_count,index=box_wh_unique,columns=['宽高比数量'])
wh_df.plot(kind='bar',color="#55aacc")
plt.show()

在这里插入图片描述
得到图像你就可以大概选一些ratio了,选择出现比例比较多的ratio,比如这个例子里面我就选了红色箭头的这些,可以跑跑看看结果,然后再微调一下看看哪个结果好。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值