0
点赞
收藏
分享

微信扫一扫

yolov5代码阅读笔记_参数与autoanchor

sunflower821 2022-04-13 阅读 101
深度学习

一些个人理解,不是专业术语~~

code:

https://github.com/ultralytics/yolov5

参数设置:
–rect:开启矩形训练
–noautoanchor:触发关闭auto anchor

def metric(k):  # compute metric
        r = wh[:, None] / k[None]
        x = torch.min(r, 1 / r).min(2)[0]  # ratio metric
        best = x.max(1)[0]  # best_x
        aat = (x > 1 / thr).float().sum(1).mean()  # anchors above threshold
        bpr = (best > 1 / thr).float().mean()  # best possible recall
        return bpr, aat

wh:所有GT的宽高;
k:所有anchor的宽高;
r:w_GT/w_anchor与h_GT/h_anchor;
torch.min(r, 1 / r):将所有的w_GT/w_anchor、h_GT/h_anchor统一到小于1;
x = torch.min(r, 1 / r).min(2)[0]:看每一组对应的w_GT/w_anchor、h_GT/h_anchor两个数值,哪个更小保留下来,也就是保留和anchor最不像的那个边长特征,x的shape为(n,9);
best = x.max(1)[0]:每9个里面最不像anchor的特征已经保留下来了,现在就看保留下来的这些特征里面选一个比较接近anchor的(意思就是不需要每个anchor都像,有一个就行);
bpr:比较接近的那个特征和thr作比较,可以的就置为1,看多少GT和anchor比较像;
(后面代码)如果这个相似度大于0.98了,就不进行autoanchor了;如果小于0.98,就根据kmeans和遗传算法重新计算anchors。

–evolve:进化超参数,网上资料表明开启后会慢数倍,非研究目的建议使用默认值

–bucke:上传结果等到谷歌云盘
–image-weights:更改类权重
–linear-lr:是否使用线性学习率,默认使用cosine lr
–label-smoothing:防止过拟合,标签平滑,弱化单个标签的作用
–patience:早停机制

举报

相关推荐

0 条评论