PicoDet代码学习记录

2023-10-26

  • 推理步骤

[picodet_s_320_coco.yml]

  1. Infer.py   main()->run()
  2. Trainer.py __init__()      self.model = create(cfg.architecture)
    1. Picodet.py     from_config()->__init__()
      1. head = create(cfg['head'], **kwargs)时候调用:
        1. Layers.py       MultiClassNMS __init__()
      2. Pico_head.py PicoHead __init__()
  3. Trainer.py predict()
    1. 逐个data,outs = self.model(dat
    2. Picodet.py     get_pred()->_forward()
      1. Inputs     [1,3,320,320]

                Backbone output

                Neck output

                Head output        Pico_head.py forward()       

post_process output

调用gfl_head.py   post_process()

->decode():patch中逐图像处理,图像中逐个feature map处理

        ->get_bboxes_single()

                ->get_single_level_center_point:

        bbox_pred的[1,x,y,32]:reg_max==8

               x = F.softmax(x.reshape([-1, self.reg_max + 1]), axis=1)

               x = F.linear(x, self.project).reshape([-1, 4])

       再乘以stride

       根据当前feature map的stride调整点坐标

       找到cls_score的前nms_pre的值,

->bbox_utils.py    distance2bbox      根据points的[x,y]和distance的(left, top, right, bottom),结合图像尺寸[320,320],获取bounding box的左上和右下坐标[x1,y1,x2,y2]

Mlvl_bboxes坐标根据原图resize的scale映射回原图

->nums():

->layers.py    MultiClassNMS     __call__()

->ops.py             multiclass_nums()

  1. 筛选score大于阈值score_threshold的bbox
  2. 选择前nms_top_k的bbox
  3. 基于nms_threshold和nms_eta的自适应阈值NMS过滤IOU高的框
  4. 保留前keep_top_k的bbox

  1. Coco_utils.py get_infer_results
    1. json_results.py      get_det_res   转变数据类型,保存bbox和score
    2. visualizer.py   visualize_results    在原图上根据bbox绘制框
      1. visualizer.py   draw_bbox    小于阈值不绘制
    3. visualizer.py save_result      结果保存txt

二、模型分析

  1. backbone
  1. 基于ShuffleNetV2,根据PP-LCNet进行优化,称为ESNet(Enhanced ShuffleNet)

  1. 改变1:给每个块增加SE,SE的两层激活分别是ReLU和H-Sigmoid
  2. 改变2:stride为2时,添加depthwise卷积和pointwise卷积整合通道信息
  3. 改变3:stride为1时,添加Ghost模块

  1. 改变4:channel-wise search for detection backbone,full model[128,256,512], ratio[[0.5, 0.675, 0.75, 0.875, 1]

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

PicoDet代码学习记录 的相关文章

随机推荐

  • Nginx实战(二) URL重写

    本文转载至 http blog csdn net u012486840 article details 52787232 Rewrite主要的功能就是实现URL的重写 Nginx的Rewrite规则采用PCRE Perl兼容正则表达式的语法
  • Authing 官网新升级,「客户第一」是我们的方法论

    赶在立秋前 我们上线了全新一版官网 官网链接 http www authing com 如果你说 在几个月前我会怎么描述我们的官网 我会说 它很好 很标准 和其它绝大多数企业的官网一样 它作为展示信息的页面显得无可挑剔 但是它缺少了对话感
  • Spring概述 ——跟我学Spring3

    1 1 1 Spring是什么 Spring是一个开源的轻量级Java SE Java 标准版本 Java EE Java 企业版本 开发应用框架 其目的是用于简化企业级应用程序开发 应用程序是由一组相互协作的对象组成 而在传统应用程序开发
  • line vty 0 4 什么意思

    转自于 http hi baidu com rxlly blog item 9072bc397ae18bde7c1e71f6 html line vty 0 4是不是指启用5个telnet会话的意思 那line vty 0 0是不是只启用一
  • CentOS 7安装VMware Tools( 宿主机拖动复制文件到虚拟机VM)

    环境 VMware Workstation 14 pro Centos7 第一步 安装工具VMware Tools 这个时候桌面有个盘 点开进去 第二步 拷贝出来解压安装 通常都是 dev crrom 挂载到 mnt cdrom 目录 如果
  • 女生渴望的十大瞬间

    author skate time 2010 11 16 女生渴望的十大瞬间 偷看他们牵着手在街上闲逛 忽然之间 他将她拽停 伸手轻轻地将眼睑下的一根睫毛拨开 她顿感幸福 拨走睫毛不过是弹指之间的小事 却充分说明他对她的注意力100 集中
  • R语言倾向性评分:匹配

    本文目录 准备数据 matchIt包进行PSM 使用随机森林计算PS 主要匹配方法选择 匹配后数据的平衡性检验 cobalt包 统计检验衡量均衡性 结果可视化 不平衡怎么办 其他问题 参考资料 倾向性评分 Propensity Score
  • 逆向爬虫23 Javascript基础进阶

    Javascript基础进阶 一 JS中的常用功能介绍 非交互 1 1 定时器 在JS中 有两种设置定时器的方案 语法规则 t setTimeout 函数 时间 经过xxx时间后 执行xxx函数 5秒后打印我爱你 t setTimeout
  • 我理解的分类、目标检测、目标识别、目标定位、目标跟踪

    分类 判断一张图片是什么类别 不需要给出物体的位置信息 目标检测 找到图中所有的目标和它们的位置 可能有多个目标 目标识别 输出一张图片中是不是包含目标 单个目标 目标定位 输出目标的确切位置 单个目标 举个例子 检测画面中是否包含某个品牌
  • VUE中动态改变字体大小

    VUE中动态改变字体大小 父组件将自己的数据传递送给子组件展示 子组件监听click操作 emit发送出去 父组件监听通过emit发送的信息 改变控制字体大小的postFontSize 通过style展示
  • 4.2用Effect实现多纹理化效果

    4 2用Effect实现多纹理化效果 前面我们介绍了一个使用像素着色器实现的多纹理化 这里用Effect框架重新给于实现 读者可以比较两者之间的异同 体会Effect框架给我们带来了哪些方面的改善 4 2 1着色器 下面是着色器代码 该代码
  • sqlmap的用法,sqlmap -r

    sqlmap结合burpsuit进行sql注入漏洞查找 配置好burpsuit和浏览器之间的代理 网上方法很多 创建一个记事本 准备写入参数使用 1 在sqlmap根目录下创建list txt 你也可以在其他地方创建 待会写上目录就行 2
  • Mysql 数据库介绍

    目录 数据库 1 数据库的介绍 2 数据库的分类 3 数据库的作用 4 数据库特点 5 小结 关系型数据库管理系统 1 关系数据库管理系统的介绍 2 SQL的介绍 3 小结 MySQL数据库 1 MySQL数据库的介绍 数据库 1 数据库的
  • python引用、浅拷贝、深拷贝

    在python中 对象的赋值往往是通过 进行的 但是由于 右边的类型方式不一样 所以产生变量虽然值相同 但是在内存中的地址值不同 可能会造成内存空间的浪费 如题所示 对象赋值中存在三种类型情况的赋值 引用赋值 引用赋值l2 l1 首先创建个
  • vue3中的reactive函数声明数组

    vue3中reacitve函数如何声明一个响应式数组 如以下案例
  • 2021最新 阿里云搭建饥荒专用服务器

    前几天我一朋友在steam上邀请我一起玩饥荒 可是联机的时候 总是一卡一卡的 好不容易玩的正尽兴的时候 我朋友突然有事就离开了房间 好不容易打的怪 建的家 房主一退就不能再次玩了只能等待他回来 针对这样个的问题 我决定自己搭建饥荒的专有服务
  • 【matlab】:matlab中如何三维画球?

    首先介绍一个函数ellipsoid 这个函数是在三维立体空间画椭圆用的 这个函数参数如下 ellipsoid x y z x1 y1 z1 x y z代表了椭球的中心 x1 y1 z1代表了x y z方向的分量 然后如果是要画球的话 把这三
  • HTML5+CSS3小实例:简单又好看的加载动画效果

    HTML5 CSS3做一个简单又好看的加载动画效果 一个三色圆环转动 再加圆环内部文字转动 效果虽然简单 但第一次看到还是很惊艳的 最主要一点 代码真的超简单的 效果 源码
  • 曲线拟合

    问题解决 给你一个二维的序列 你如何用多项式进行曲线拟合 一阶直线拟合 二阶抛物线拟合 并非阶次越高越好 看拟合情况而定 曲线拟合 clear clc syms s 声明一个符号变量 详细参考 https jingyan baidu com
  • PicoDet代码学习记录

    推理步骤 picodet s 320 coco yml Infer py main gt run Trainer py init self model create cfg architecture Picodet py from conf