计算机视觉研究院 | 智慧工地:2PCNet,昼夜无监督域自适应目标检测(附原代码)

本文来源公众号“计算机视觉研究院”,仅用于学术分享,侵权删,干货满满。

原文链接:智慧工地:2PCNet,昼夜无监督域自适应目标检测(附原代码)

由于缺乏夜间图像注释,夜间目标检测是一个具有挑战性的问题。尽管有几种领域自适应方法,但实现高精度结果仍然是一个问题。

01 前景概要

在使用公认的师生框架的方法中,特别是对于小规模和低光物体,仍然可以观察到假阳性误差传播。我们提出了一种两阶段一致性无监督领域自适应网络2PCNet来解决这些问题。该网络在第一阶段使用来自教师的高置信度边界框预测,并将其附加到学生的区域建议中,供教师在第二阶段重新评估,从而产生高置信度和低置信度伪标签的组合。夜间图像和伪标签在用作学生的输入之前被缩小,从而提供更强的小规模伪标签。为了解决图像中弱光区域和其他夜间相关属性引起的错误,我们提出了一种称为NightAug的夜间特定增强管道。该管道涉及将随机增强(如眩光、模糊和噪声)应用于日间图像。在公开数据集上的实验表明,我们的方法比最先进的方法和直接在目标数据上训练的监督模型获得了20%的优越结果。

02 背景&动机

夜间目标检测在许多应用中都是至关重要的。然而,通过监督方法对注释数据的要求是不切实际的,因为带有注释的夜间数据很少,并且监督方法通常容易过度拟合训练数据。除其他原因外,这种稀缺性是由于光线条件差,使得夜间图像难以注释。因此,不假设注释可用性的方法更有优势。领域自适应(DA)是解决这一问题的有效方法,它允许使用现成的注释源日间数据集。

为了解决这个问题,我们提出了2PCNet,一种用于夜间目标检测的两阶段一致性无监督域自适应网络。我们的2PCNet将在第一阶段预测的高度自信的伪标签的边界框与学生的区域建议网络(RPN)提出的区域合并在一起。然后,教师在第二阶段使用合并后的提议来生成一组新的伪标签。这提供了高置信度和低置信度伪标签的组合。然后将这些伪标签与学生生成的预测进行匹配。然后,我们可以利用加权一致性损失来确保无监督损失的更高权重基于更强的伪标签,但允许较弱的伪标签影响训练。

配备了这种两阶段策略,我们解决了小规模对象的错误问题。我们设计了一种学生缩放技术,故意缩小学生的夜间图像及其伪标签。为了生成准确的伪标签,教师的图像保持在其全尺寸。这导致更容易预测的较大对象的伪标签被缩小到较小的对象,从而提高学生的小规模表现。夜间图像存在日间场景中未发现的多种复杂情况,如黑暗区域、眩光、突出的噪声、突出的模糊、不平衡的照明等。所有这些都造成了问题,因为接受日间图像训练的学生更倾向于日间域的特征。为了缓解这个问题,我们提出了NightAug,一组随机的夜间特定增强。NightAug包括在白天的图像中添加模拟夜间条件的人造眩光、噪音、模糊等。通过NightAug,我们能够减少学生网络对源数据的偏见,而不会导致对抗性学习或计算密集型翻译。总体而言,使用2PCNet,我们可以在图1中看到我们的结果在质量上的改进。

03 新框架设计

我们的2PCNet的体系结构如下图所示。我们的2PCNet由一个学生和一个教师网络组成。该学生是一个多域网络,在标记的白天图像(用NightAug增强)和未标记的夜间图像上进行训练。老师专注于夜间图像,为学生生成伪标签,是学生的指数移动平均值(EMA)。

在初始预训练阶段之后,教师开始产生伪标签,这允许学生初始化特征提取器和检测器。在2PCNet的第一阶段的每次迭代中,教师从夜间图像中产生伪标签。通过置信阈值对这些伪标签进行过滤。这是为了确保只给学生高置信度的伪标签。然后将来自伪标签的边界框与学生的RPN生成的区域建议相结合。合并后的区域建议然后用于从学生的RoI网络生成预测。在第二阶段,教师使用相同的合并区域建议来生成一组匹配的伪标签,其中每个伪标签都有从学生那里获得的相应预测。

Two-Phase Consistency

由于日间源图像和夜间目标图像之间存在较大的域间隙,教师无法生成高质量的伪标签。这种情况通常发生在整个场景中,但特别是对于具有强烈夜间特征的区域,例如弱光、眩光、不均匀照明等。教师只为与白天有更多相似性的区域生成自信的伪标签,因为它偏向于白天域。这种偏差给使用硬阈值来过滤分类交叉熵损失的伪标签的方法带来了问题。剩下的伪标签只包含具有日间属性的简单样本。因此,学生不会从较难(例如较暗)的区域学习。

由于对难样本(即具有高水平夜间属性的区域)的了解最少,教师开始预测高度自信但不正确的伪标签。当老师向学生提供这些不正确的伪标签时,一个粘性循环开始了,老师反过来用不正确的知识更新。因此,错误通过训练继续传播。在我们的案例中,这些误差明显发生在黑暗/眩光区域和小尺度物体中。为了解决错误传播的问题,我们设计了一种两阶段的方法,将高置信度的伪标签与其不太置信度的对应标签结合在一起。这种组合允许自信标签的高精度,并将不太自信标签的额外知识提炼到学生身上。

(从左到右,从上到下)GT边界框,教师预测的具有非极大抑制(NMS)和阈值(Bp)的边界框,由Bp指导的学生预测的边界框(Bstudent),以及教师预测的一致性损失的边界框。

Student-Scaling

为了确保不会忘记先前标度的知识,应用了标度因子的高斯函数。高斯函数的范数是从调度值中获得的。为了防止由于伪标签太小而产生额外的噪声,将去除面积低于阈值的标签。

NightAug

夜间图像有一系列日间场景中没有的复杂情况。这导致了师生框架中的一个问题,即学生会偏向于源领域。以前的方法试图解决这个问题,但要么需要计算密集型翻译,要么在框架中添加额外的领域分类器,这使训练变得复杂。我们提出了NightAug,一种夜间特定的增强管道,它是计算光,不需要训练。NightAug由一系列增强组成,目的是引导白天图像的特征与夜间图像的特征相似。

NightAug:原始图像(左上)和随机增强的图像:高斯模糊、伽马校正、亮度、对比度、眩光、高斯噪声和随机剪切

每个增强都有一个应用的概率,增强的强度是随机的。然后可以用原始图像的随机区域替换增强图像的随机区。该区域替换的概率随着每次迭代而降低。

04 实验及项目落地

Faster RCNN、Adaptive Teacher(AT)和我们的方法在SHIFT数据集上的定性结果,最右边是真实值。我们可以观察到,由于缺乏域自适应,Faster RCNN无法检测对象,而与我们的方法相比,AT有大量的小误报边界框,我们提出的方法与GT非常相似。

目前在很多城市为了赶工,有许多工地都是夜晚进行作业,为了作业过程中的安全施工以及非员工潜入等问题,某建筑企业采用了AI技术进行安全生产和管理。

THE END !

文章结束,感谢阅读。您的点赞,收藏,评论是我继续更新的动力。大家有推荐的公众号可以评论区留言,共同学习,一起进步。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/43864.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++:多态(继承)

hello,各位小伙伴,本篇文章跟大家一起学习《C:多态》,感谢大家对我上一篇的支持,如有什么问题,还请多多指教 ! 文章目录 :maple_leaf:多态的概念:maple_leaf:继承中的多态1.:leaves:虚函数表 :…

代码随想录算法训练营第四十八天| 115.不同的子序列、583. 两个字符串的删除操作、 72. 编辑距离

115.不同的子序列 题目链接:115.不同的子序列 文档讲解:代码随想录 状态:不会 思路: dp[i][j] 表示在 s 的前 j 个字符中,t 的前 i 个字符作为子序列出现的次数。 匹配的情况: 1.当 s[j-1] 与 t[i-1] 匹配…

接口测试(3)

接口自动化 # 获取图片验证码import requestsresponse requests.get(url"http://kdtx-test.itheima.net/api/captchaImage")print(response.status_code) print(response.text) import requestsurl "http://kdtx-test.itheima.net/api/login" header_da…

计算机网络之WPAN 和 WLAN

上一篇文章内容:无线局域网 1.WPAN(无线个人区域网) WPAN 是以个人为中心来使用的无线个人区域网,它实际上就是一个低功率、小范围、低速率和低价格的电缆替代技术。 (1) 蓝牙系统(Bluetooth) &#…

QT文件生成可执行的exe程序

将qt项目生成可执行的exe程序可按照以下步骤进行: 1、在qt中构建运行生成.exe文件; 2、从自定义的路径中取出exe文件放在一个单独的空文件夹中(exe文件在该文件夹中的release文件夹中); 3、从开始程序中搜索qt&#xf…

CTF php RCE(二)

0x04 php伪协议 这种我们是先看到了include才会想到,利用伪协议来外带文件内容,但是有些同学会问,我们怎么知道文件名是哪个,哪个文件名才是正确的,那么这里我们就得靠猜了 include函数 因为 include 是一个特殊的语…

产品原型设计:从概念到实现的完整指南

如果你是一位产品经理,那么你一定会和原型图打交道,产品原型是产品设计方案和底层逻辑的可视化表达,需要完整清晰地表达出产品目的及需求,在整个产品创造的过程中发挥着不可或缺的作用。而对于一些刚入行的产品经理来说&#xff0…

Instruct-GS2GS:通过用户指令编辑 GS 三维场景

Paper: Instruct-GS2GS: Editing 3D Gaussian Splats with Instructions Introduction: https://instruct-gs2gs.github.io/ Code: https://github.com/cvachha/instruct-gs2gs Instruct-GS2GS 复用了 Instruct-NeRF2NeRF 1 的架构,将基于 NeRF 的三维场景编辑方法迁…

4:表单和通用视图

表单和通用视图 1、编写一个简单的表单&#xff08;1&#xff09;更新polls/detail.html文件 使其包含一个html < form > 元素&#xff08;2&#xff09;创建一个Django视图来处理提交的数据&#xff08;3&#xff09;当有人对 Question 进行投票后&#xff0c;vote()视图…

Python实现吃豆人游戏详解(内附完整代码)

一、吃豆人游戏背景 吃豆人是一款由Namco公司在1980年推出的经典街机游戏。游戏的主角是一个黄色的小圆点&#xff0c;它必须在迷宫中吃掉所有的点数&#xff0c;同时避免被四处游荡的幽灵捉到。如果玩家能够吃掉所有的点数&#xff0c;并且成功避开幽灵&#xff0c;就可以进入…

力扣第一题

1. 两数之和 提示 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是&#xff0c;数组中同一个元素在答案里不能重复出现。 你可…

【测试设计】使用jenkins 插件Allure生成自动化测试报告

前言 以前做自动化测试的时候一直用的HTMLTestRunner来生成测试报告&#xff0c;后来也尝试过用Python的PyH模块自己构建测试报告&#xff0c;在后来看到了RobotFramework的测试报告&#xff0c;感觉之前用的测试报告都太简陋&#xff0c;它才是测试报告应该有的样子。也就是在…

射频硅基氮化镓:两个世界的最佳选择

当世界继续努力追求更高速的连接&#xff0c;并要求低延迟和高可靠性时&#xff0c;信息通信技术的能耗继续飙升。这些市场需求不仅将5G带到许多关键应用上&#xff0c;还对能源效率和性能提出了限制。5G网络性能目标对基础半导体器件提出了一系列新的要求&#xff0c;增加了对…

【LeetCode刷题笔记】LeetCode.11.盛最多水的容器

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; 更多算法知识专栏&#xff1a;算法分析&#x1f525; 给大家跳段街舞感谢…

CSAPP Lab5- MallocLab

实验目标 本实验需要用c语言实现一个动态的存储分配器&#xff0c;也就是你自己版本的malloc&#xff0c;free&#xff0c;realloc函数。 实验步骤 tar xvf malloclab-handout.tar解压文件 我们需要修改的唯一文件是mm.c&#xff0c;包含如下几个需要实现的函数 int mm_ini…

婴幼儿自闭症的六大警示前兆:家长需警惕的早期信号

婴幼儿自闭症是一种复杂的发育障碍&#xff0c;其早期症状往往较为微妙&#xff0c;但若能及早发现并干预&#xff0c;对孩子的成长至关重要。以下是婴幼儿自闭症的六个主要前兆&#xff1a; 首先&#xff0c;目光呆滞与反应迟钝。婴儿期&#xff0c;孩子应能对外界刺激如声音…

读书笔记-Java并发编程的艺术-第4章(Java并发编程基础)-第3节(线程间通信)

文章目录 4.3 线程间通信4.3.1 volatile和synchronized 关键字4.3.2 等待/通知机制4.3.3 等待/通知的经典范式4.3.4 管道输入 / 输出流4.3.5 Thread.join()的使用4.3.6 ThreadLocal的使用 4.3 线程间通信 线程开始运行&#xff0c;拥有自己的栈空间&#xff0c;就如同一个脚本…

Java字符串(String、字符串拼接、原理)

文章目录 一、String字符串1.1创建方式【直接赋值、new一个对象】1.1.1 使用字符串字面值直接赋值&#xff1a;&#xff08;1&#xff09;字符串字面量创建String对象的转换过程&#xff08;2&#xff09;一些方法&#xff08;3&#xff09;说明 1.1.2 使用new关键字创建字符串…

接口测试(1)

什么是接口测试 路线&#xff1a; 项目介绍 URL&#xff1a;统一资源定位符 HTTP协议 请求URL 请求行 请求方法 post/put 请求行 请求数据类型 content-type json 请求数据 请求体 响应状态码 响应行 响应数据类型 content-type json 响应数据 请响应体 用户名&#xf…

Mybatis Plus 3.X版本的insert填充自增id的IdType.ID_WORKER策略源码分析

总结/朱季谦 某天同事突然问我&#xff0c;你知道Mybatis Plus的insert方法&#xff0c;插入数据后自增id是如何自增的吗&#xff1f; 我愣了一下&#xff0c;脑海里只想到&#xff0c;当在POJO类的id设置一个自增策略后&#xff0c;例如TableId(value "id",type …