ssd网络训练loss下降但是精度提不上去_Startdt AI提出:使用生成对抗网络用于OneStage目标检测的知识蒸馏方法...

点击上方“CVer”,选择加"星标"或“置顶”

重磅干货,第一时间送达45f9df2ce970cacb606e4755c1c252f9.png

0f251e8c416986a2d2db8e4121151f62.png

Date:20190621

作者团队:Startdt AI Lab& 智云视图

论文链接:https://arxiv.org/abs/1906.08467

github:https://github.com/p517332051/GAN-Knowledge-Distillation-SSD

摘要

卷积神经网络对目标检测的精度有着显著的提升,并且随着卷积神经网络的深度加深,对目标检测精度提升也越大,但是也需要更多的浮点计算。许多研究者通过知识蒸馏的方法,通过把一个更深更大的教师网络中的知识转移到一个小的学生网络中,以提高学生网络在目标检测中的效果。而大部分知识蒸馏的方法都需要设计复杂的代价函数,并且多数针对两步目标检测算法,本文针对一步目标检测算法提出一个干净有效的知识蒸馏方案。将教师网络生成的特征层作为真实样本,学生网络生成的特征层做为假样本,并对两者做生成对抗训练,以提高学生网络在一步目标检测中的表现。

1 Introduction

近些年来,随着目标检测算法的发展,研究者们发现利用更深更大的卷积神经网络作为骨架,对目标检测算法的精度提升越大。并且随着目标检测算法的检测精度提升,使视觉检测算法逐渐从非关键性领域,走向关键性领域(比如无人驾驶和医疗等领域)。但是为了保证检测精度,不得不使用更大的卷积神经网络作为骨架,造成检测速度下降,计算设备成本增加。因此许多研究者在确保检测精度的前提下,提高检测速度提出了很多方法和总结,如通过深度分离卷积 [1,2],或者通过点群卷积(pointwise group convolution)和通道混洗(channel shuffle)[3, 4] 来降低卷积神经网络浮点运算次数的方法,在保证骨架网络精度和容量的情况下减少计算量。虽然获得可观的提速效果,但是这些方法需要精心设计和调整骨架网络。很多研究者认为更深的骨架网络虽然有着更大的网络容量,因此在图像分类、目标检测等任务上有着更优秀的表现。但是一些特定的任务并不需要这么大的容量,所以在保证卷积神经网络精度的情况和下,对卷积神经网络做压缩、量化、通道减枝等[5, 6, 7, 8, 9]。

另一方面,有关于知识蒸馏的工作表明[10, 1

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这是一段 C++ 代码,其中包含了一些条件语句和函数调用。逐行解释如下: ```if ( m_env->m_ClearSendQueFlag )``` 如果 `m_env->m_ClearSendQueFlag` 变量为真(非零),则执行下面的代码块。 ```m_asduSendQue.ClearAllDataBuff();``` 调用 `m_asduSendQue` 对象的 `ClearAllDataBuff()` 函数,清空发送队列的所有数据缓冲区。 ```memset(m_sendBuf,0,MaxLen_Buf);``` 使用 `memset()` 函数将 `m_sendBuf` 数组的所有元素都设置为 0,该数组的长度为 `MaxLen_Buf`。 ```this->m_env->m_TxBuf.ResetBuf();``` 调用 `m_env` 对象的 `m_TxBuf` 成员的 `ResetBuf()` 函数,重置该成员对象的缓冲区。 ```m_Flag |= IEC104_FLAG_STARTDT;``` 将 `m_Flag` 变量的二进制表示中的第 0 位(从右往左数)设置为 1,表示启动传输(STARTDT)。 ```OutputLogMsgToLogFile("var/log/s104.log",320000,"%s:%d INFO! STARTDT! 104startdtresrt=%d ClearSendQueFlag=%d RtuNo=%d\n",__FILE__,__LINE__,m_env->m_104startdtresrt,m_env->m_ClearSendQueFlag,m_env->m_sRtuNo);``` 调用 `OutputLogMsgToLogFile()` 函数,将日志信息记录到文件中。该函数的第一个参数是文件名,第二个参数是日志文件的最大大小,第三个参数是日志信息的格式化字符串,后面的参数是对应的参数值。 ```this->m_dataTransflag = 0x01;``` 将 `m_dataTransflag` 变量的值设置为 1,表示数据传输。 ```this->m_env->m_appLayer->StartDTProcess();``` 调用 `m_env` 对象的 `m_appLayer` 成员的 `StartDTProcess()` 函数,启动应用层的 STARTDT 过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值