由于不知道如何发布代码,复制粘贴不太好看(起码我不喜欢看,哈哈),所以笔者再次便采取截图的形式。

---------------------------------------------------------------------------------------------------------------------------

首先进行各种包的导入,这里也不能忽视,得稍微看一眼。

-----------------------------------------------------------------------------------------------------------------------

随后进行head头的注册,不了解注册机制的去看看mmdetection官网哈!在初始化阶段进行各种形参的设置。

---------------------------------------------------------------------------------------------------------------------------

这里注意下_init_layers()函数,在这里便进行调用,进行一些卷积的初始化。

---------------------------------------------------------------------------------------------------------------------

卷积初始化便是构造各种卷积,这种写法大家可以进行模仿。

------------------------------------------------------------------------------------------------------------------------

然后便是前向传播阶段,其实前向传播很简单,就是分类、回归分支,用前面构造好的卷积,一次性进行计算就好了。对了,multi_apply机制也是mmdetection很常用的,大家可以自行百度一下。

---------------------------------------------------------------------------------------------------------------------------

最复杂的loss终于来了!这里featmap_size能得到 (H W),后面会用到。-2表示最后两个。

--------------------------------------------------------------------------------------------------------------------------

因为时anchor free,所以这里不会调用get_anchor,转而调用get_points了,为的就是得到featmap上的每一个点,其实原理和anchor base一样,这里得到了很多个点。

------------------------------------------------------------------------------------------------------------------

这里我把get_points的函数拿出来,最终返回的是每个点的坐标。

-------------------------------------------------------------------------------------------------------------------------

随后进行fcos_target得到gt_bbox的标签(这里的标签也都加了索引,代表正负样本)和bbox_targets(这个表示中心点到四条边的距离)!其实这里是文中的创新点,大家一定要仔细看。

------------------------------------------------------这里单独拿出来, 主要算法在self.fcos_target_single。

-------------------------------------------------------------------------------------------------------------

返回的是前面提到过的label和targets!这里可能注释的不是很仔细,以后有时间我再搞搞啦,哈哈哈哈哈哈。大家有问题也可以评论。

-------------------------------------------------------------------------------------------------------------------

最难的地方已经过去了,接下来就是要计算损失了。计算损失,需要把预测的和gt均permute到相同的维度(要计算的部分维度一定要相同)

---------------------------------------------------------------------------------------------------------------

把前面的量处理好了之后,这里就是进行损失计算 。没什么好说的。

--------------------------------------------------------------------------------------------------------------------

以上,讲的主要是训练部分的代码,有空我再完善一下!大家有什么疑惑可以评论,反正是一起学习!

MMDetection的FCOS算法fcos_head注释相关推荐

  1. 粒子群算法(PSO)——Java实现PSO算法(详细注释) 优化算法

    粒子群算法原理: https://blog.csdn.net/daaikuaichuan/article/details/81382794 代码||注释||结果 package PSO;/** Tar ...

  2. 目标检测论文阅读:FCOS算法笔记

    标题:FCOS: Fully Convolutional One-Stage Object Detection 会议:ICCV2019 论文地址:https://ieeexplore.ieee.org ...

  3. 中国象棋程序的设计与实现(十二)--棋盘绘制算法(尽管注释非常详细,完全理解仍有难度)

    上几篇中,我们详细介绍了,棋盘类的定义和关键属性,简要介绍了棋盘绘制算法的骨架. 本篇,我们将详细解读棋盘绘制算法的每一个细节. 强烈建议,大家结合文章末尾的"棋盘截图"来思考绘制 ...

  4. 4012最长的最短路径的求解(C++,迪杰斯特拉算法,注释全,附迪杰斯特拉算法详解文章)

    描述 设计一个算法,求图G中距离顶点v的最短路径长度最大的一个顶点. 输入 多组数据,每组数据m+2行.每组数据第一行为两个整数n和m,代表有n个顶点m条路.顶点编号为1到n.第二行到第m+1行每行有 ...

  5. java象棋代码注释_中国象棋程序的设计与实现(十一)--棋盘绘制算法(尽管注释非常详细,完全理解仍有难度)...

    上几篇中,我们详细介绍了,棋盘类的定义和关键属性,简要介绍了棋盘绘制算法的骨架. 本篇,我们将详细解读棋盘绘制算法的每一个细节. 强烈建议,大家结合文章末尾的"棋盘截图"来思考绘制 ...

  6. 【JAVA】经典排序算法,注释详细+可直接运行

    package com.example.demo.server;import org.junit.Test;import java.util.Arrays;/*** 十大排序算法*/ public c ...

  7. 很容易理解的C语言快速排序算法(完整注释+完整输出)

    #include <stdio.h>void quickSort(int arr[], int low, int high)//arr是传进来的数组,low和high是两个指针的预定值 { ...

  8. C/C++实现如下 根据Merge Sort原理, 自己实现的归并排序算法+详细注释+代码(C#,C/C++)...

    from:http://www.cnblogs.com/architect/archive/2009/05/06/1450489.html //归并排序中之并 //Updated by zivsoft ...

  9. 二分查找算法实例注释

    /** bs.cpp** Created on: 2015年4月14日* Author: judyge*/#include <stdio.h> #include <iostream& ...

最新文章

  1. SQL 利用merge 同步数据库之间表的数据
  2. 查看Linux系统中某目录的大小
  3. Python实现微信防撤回
  4. torch中tensor的普通索引以及index_select()
  5. 怎么打断点_搞笑段子: 有次相亲, 双方父母都在, 我坐下就给自己点了支烟
  6. (数据结构与算法)数组模拟队列和环形队列
  7. CF1066F Yet another 2D Walking
  8. WPF DataGrid 在Header中显示行号
  9. LeetCode Longest Common Prefix
  10. Linux Tomcat9 控制界面及管理配置
  11. 那款软件可以测试平板电脑性能,性能测试和应用体验
  12. mysql添加字段语句_mysql增加字段 mysql数据库更新字段语句
  13. 阻焊机器人系统_点焊机器人
  14. 5+API实现微信分享功能
  15. 由于找不到MSVCR100.dll,无法继续执行代码解决方法
  16. JS中利用AJAX调用淘宝API获取网络时间的方法
  17. HTC Desire Z刷recovery刷机教程
  18. 2019烟台计算机副高职称报名时间,烟台市公共企事业单位信息公开 政策文件 2019年度职称评审工作日程安排...
  19. 全球CORS网 部分站点数据下载链接
  20. 【数据结构】图1——图的基本概念和术语、类型定义

热门文章

  1. IDEA 创建Maven Web项目
  2. Office 2007初体验
  3. IBM公司公布三层单元PCM-MLC,向3DX堆栈方案发起挑战
  4. 用**248##命令进工程模式快速检测HCK G801验机方法
  5. 2022年北京理工大学计算机考研复试时间与安排
  6. 道听途说驳斥银行业的误区
  7. ArcGIS 导入ArcPY脚本,要用cp936编码
  8. Srt字幕的视频用它就能批量制作
  9. 云计算时代:数字化转型的基础设施
  10. openocd+telnet调试