[论文阅读] Generative Adversarial Networks for Video-to-Video Domain Adaptation

news2025/7/5 16:42:48

[论文地址] [代码] [AAAI 20]

Abstract

来自多中心的内窥镜视频通常有不同的成像条件,如颜色和光照,这使得在一个领域训练的模型通常不能很好地推广到另一个领域。领域适应是解决这一问题的潜在方案之一。然而,现有的工作很少关注基于视频的数据的转换。在这项工作中,我们提出了一个新的生成对抗网络(GAN),即VideoGAN,以跨越不同领域转移基于视频的数据。由于视频中的帧可能具有相似的内容和成像条件,所提出的VideoGAN有一个X型生成器,以在翻译过程中保持视频内的一致性。此外,还提出了一个损失函数,即颜色直方图损失,以调整每个翻译帧的颜色分布。两个来自不同中心的结肠镜数据集,即CVC-Clinic和ETIS-Larib,被用来评估我们的VideoGAN的领域适应性的性能。实验结果表明,由我们的VideoGAN生成的适应性结肠镜视频可以显著提高多中心数据集上结直肠息肉的分割精度,即提高5%。由于我们的VideoGAN是一个通用的网络架构,我们还用CamVid驾驶视频数据集评估了它在阴天到晴天的翻译任务上的表现。综合实验表明,通过我们的VideoGAN可以大大缩小领域差距。


Intro

问题定义:不同医疗中心的内窥镜数据集之间存在domain gap,即由于成像模态,设备等因素的差异,在一个domain上训练的模型往往不能很好的泛化到另一个domain。一个例子如下:
在这里插入图片描述
容易发现,Clinic序列的颜色要比ETIS要暖一些,存在着比较明显的差异。解决这一问题的方案是执行翻译,而具体又有两种思路。假定Clinic有标注而ETIS无标注,一种方法是先用Clinic训练一个模型,然后将ETIS翻译成Clinic的样式再进行测试;另一种方法是把Clinic的样式翻译成ETIS,然后训练一个ETIS的模型。

现在的一个问题在于,为什么现有的图像翻译网络(即Image-to-Image Domain Adaptation)不能直接用于视频翻译呢?作者指出这是因为视频有着其本身的额外约束,例如相邻帧之间的颜色,亮度等肯定得是一致的,因此需要进行额外的显式建模。直接应用图像层面的翻译的话,相邻帧可能会被翻译至两个差异较大的模态,从而导致内容失真。

本文所提出的额外设计都是为了建模相邻视频帧之间的约束,本质上仍属于魔改的CycleGAN。


Method

本文的框架如下所示:
在这里插入图片描述
可以看到相比与CycleGAN而言改了以下几个部分:

  • 生成器:从原来的ResNet生成器改为了本文的X-shape生成器
  • 判别器:多了一个额外的Color Validator
  • 损失函数:多了Color Histogram Loss与Intra-Video Loss

X-shape Generator

结构如下所示:
在这里插入图片描述
之所以是X-shape,其实也是非常直觉的。之前提到了要建模视频的相邻帧,一种方案就是把两个相邻的帧都同时给送到生成器里面去,这种情况下自然就要有两个encoder。从结构上看,这个X-shape Generator就是把两个Resnet Generator给并在了一起。

从另一种角度理解,这也可以视为给条件GAN再加了一个条件。从图中可以看到,输入图像分为了reference和source,其中source就是传统意义上的随机抽取的一张图像,而reference则为该图像所在视频序列的第一帧,这样就约束了同一序列内其他图像的风格应该与第一帧保持一致。


Color Validator

文中并没有给出Color Validator的设计细节,其功能主要是通过Color Histogram Loss与Intra-Video Loss这两个损失来实现的。不过有一点可以明确的是,Color Validator与X-shape Generator一样,都是接收成对的reference和source作为输入。

Color Histogram Loss source图像与reference图像在翻译前后,他们的R, G, B三通道的直方图的相对差异应该保持一致: h i s t r c d = cat ⁡ ( h i s t R r e f , h i s t G r e f , h i s t B r e f ) − cat ⁡ ( h i s t R s r c , h i s t G s r c , h i s t s i s c ) \begin{array}{r} h i s t_{r c d}=\operatorname{cat}\left(h i s t_R^{r e f}, h i s t_G^{r e f}, h i s t_B^{r e f}\right) \\ -\operatorname{cat}\left(h i s t_R^{s r c}, h i s t_G^{s r c}, h_{i s t}^{s i s c}\right) \end{array} histrcd=cat(histRref,histGref,histBref)cat(histRsrc,histGsrc,histsisc) L hist  ( G B A , C A h i s t ) = ∥ C A h i s t ( G B A ( x B s r c ) , G B A ( x B r e f ) ) − h i s t r c d ( x B src  , x B r e f ) ∥ 1 \begin{aligned} \mathcal{L}_{\text {hist }}\left(G_{B A}, C_A^{h i s t}\right)=& \| C_A^{h i s t}\left(G_{B A}\left(x_B^{s r c}\right), G_{B A}\left(x_B^{r e f}\right)\right) \\ &-h i s t_{r c d}\left(x_B^{\text {src }}, x_B^{r e f}\right) \|_1 \end{aligned} Lhist (GBA,CAhist)=CAhist(GBA(xBsrc),GBA(xBref))histrcd(xBsrc ,xBref)1

Intra-Video Loss 原文这部分讲述的并不是很清楚(损失函数表达式都没给,个人也没看明白),感兴趣的读者可以阅读原文。


Experiment

Dataset 采用了两个视频息肉数据集,分别为CVC-ClinicDB(29个序列,612张图像)以及ETIS-Larib(29个序列,196张图像)。
Hyperparameters 和CycleGAN一致,200epoch,学习率2e-4,batch size 1。
Setting 两种实验流水线。A) transfer learning。在该设置下,CVC-ClinicDB数据集有标签,而ETIS-Larib数据集没标签。把Clinic数据翻译成ETIS的样式,据此训练一个分割模型,然后在ETIS上测试。注意这里没有选择将ETIS视为源域(源域在这里指有标签的域)是因为ETIS本身太小了不适合单独训练一个分割网络。B) data augmentation。这里翻译的顺序颠倒了过来,将ETIS翻译成Clinic的样式。然后,利用Clinic以及翻译后的ETIS训练一个新的模型,并在一个额外的Clinic数据集上测试。
Evaluation Criterion 只用了Dice,说实话比较少。不过本文的重心并不是比较分割性能(因为不同方法间的性能差异过大),所以也勉强够用。
Translation Results abcdef分别为输入、UNIT, DRIT, CycleGAN, CycleGAN改,本文(VideoGAN)。
在这里插入图片描述
这里对比的最直观差距其实就是,对比方法在某些帧都崩掉了(如图中第6,12列),没有完成最基本的翻译任务,已经超出了"逼真不逼真"的高级范畴。

除此之外,本文还做了个神奇的实验。一般来说,将翻译任务用于Domain Adaptation的一个假定在于翻译前后图像的标签不会发生变化。为此,作者"重新标注"了ETIS的原始图像,由CycleGAN翻译的图像以及由VideoGAN翻译的图像,并计算这三者与ETIS原始标注的dice。由下表可以发现,ETIS直接重新标注的dice与VideoGAN翻译后的dice是差不多,证明翻译后没有改变图像的内容(如息肉的位置):
在这里插入图片描述

Transfer Learning Results 即上面提到的流水线A,结果如下。这里使用的分割网络为很老的的ResUNet:
在这里插入图片描述
可以发现其他方法由于对图像原有语义造成了破坏,甚至还掉了比较多的点;而应用本文方法后则大约涨点了5%。
不过需要注意的是,这个结果其实与本文一开始的claim——两个数据集之间存在较大的domain gap,是矛盾的。因为直接在ETIS上训练然后在Clinic上测试性能并不差(有71%)。

Data Augmentation 即上面提到的流水线B,结果如下:
在这里插入图片描述
这里应该是玩了个概念游戏。从上面这个结果可以发现,在ETIS翻译成Clinic的情况下,掉点是比较少的;据此推测ETIS翻译成Clinic的效果要比Clinic翻译成ETIS要好。

Ablation Study 可以看到最重要的组件为所提出来的X形生成器:
在这里插入图片描述

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

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

相关文章

数据结构与算法简介

什么是数据结构 数据结构的研究对象 研究一组有特定关系的数据的存储与处理通过抽象的方法 数据结构的研究内容 数据之间的逻辑关系:存储实现(如何存储某种逻辑关系) 集合结构:数据元素放在一起,但是元素间没有关系…

Python-Flask 蓝图以及钩子函数(5)

Flask 蓝图一、初识蓝图的页面结构二、创建蓝图的步骤三、钩子函数官方解释:Blueprint 是一种组织一组相关视图及其他代码的方式。与把视图及其他 代码直接注册到应用的方式不同,蓝图方式是把它们注册到蓝图,然后在工厂函数中 把蓝图注册到应…

Git 用法指导

1. 安装 Git 1. linux 安装 Git # 试着输入git,看看系统有没有安装Git: $ git The program git is currently not installed. You can install it by typing: sudo apt-get install git# 安装命令 sudo apt-get install git 如果是其他Linux版本&#…

Vue | Vue.js 高级语法系列

🖥️ Vue.js专栏:Vue.js 高级语法系列 🧑‍💼 个人简介:一个不甘平庸的平凡人🍬 ✨ 个人主页:CoderHing的个人主页 🍀 格言: ☀️ 路漫漫其修远兮,吾将上下而求索☀️ 👉…

都说测试行业饱和了,为什么我们公司给初级测试开到了12K?

故事起因: 最近我有个刚毕业的学生问我说:我感觉现在测试行业已经饱和了,也不是说饱和了,是初级的测试根本就没有公司要,哪怕你不要工资也没公司要你,测试刚学出来,没有任何的项目经验和工作经验…

字符串c++练习(KMP等)

反转字符串 文章目录反转字符串反转字符串||替换空格翻转字符串里的单词左旋转字符串找出字符串中第一个匹配项的下标【模板】KMP字符串匹配题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1提示样例 1 解释数据规模与约定重复的字符串[BOI2009]Radio Transmission 无线…

【Linux】Linux中的环境变量及其意义

目录 一、环境变量的概念 1、让自己写的可执行程序无需路径即可执行的方法 1.1将可执行程序拷贝至/usr/bin/目录下 1.2将test的绝对路径添加至PATH中 二、环境变量相关的命令 三、getenv()(获取环境变量) 四、main函数命令行参数的解析及意义 1、…

如何基于TS在React中使用Redux Toolkit

什么是Redux Redux 是 JavaScript 应用程序的状态容器,提供可预测的状态管理.可以帮助你开发出行为稳定可预测的、运行于不同的环境(客户端、服务器、原生应用)、易于测试的应用程序。不仅于此,它还提供超爽的开发体验&#xff0…

【Pytorch with fastai】第 3 章 :数据伦理

🔎大家好,我是Sonhhxg_柒,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎 📝个人主页-Sonhhxg_柒的博客_CSDN博客 📃 🎁欢迎各位→点赞…

CentOS7安装MySQL(亲测版)

1 Yum Repository下载安装包文件 [rootlocalhost home]# wget https://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm2 使用yum安装mysql yum install mysql-server执行后报错,官方5.7版本默认没有GPG key, 需要在上述命令上 添加 --nogpgcheck …

图解计算机内部的高速公路 —— 总线系统

本文已收录到 GitHub AndroidFamily,有 Android 进阶知识体系,欢迎 Star。技术和职场问题,请关注公众号 [彭旭锐] 进 Android 面试交流群。 前言 大家好,我是小彭。 在之前的文章中,我们聊到了计算机的冯诺依曼计算…

2022-09-17青少年软件编程(C语言)等级考试试卷(五级)解析

​​​​​​T1. 城堡问题 【题目描述】 图1是一个城堡的地形图。请你编写一个程序,计算城堡一共有多少房间,最大的房间有多大。城堡被分割成mn(m≤50,n≤50)个方块,每个方块可以有0~4面墙。 【输入】 程序从标准输入设备读入数据。第1、2行每行1个整数,分别是南北向、东西…

MySQL数据库基础

文章目录一. 数据库的操作二. 数据库中常用的数据类型三.表的操作四. 总结一. 数据库的操作 1. 创建数据库 创建语法1 crate database [这里填入表名称]; 说明:当我们创建数据库没有指定字符集和校验规则时,系统使用默认字符集:utf8&#xf…

(十二)Jmeter测试dubbo接口

一、概览 先去https://github.com/thubbo/jmeter-plugins-for-apache-dubbo下载扩展jar包将下载的jar包复制到 jmeter/lib/ext/下重启Jmeter创建Dubbo取样器 二、实操 添加dubbo取样器 输入请求详情 参数类型可以在 https://github.com/thubbo/jmeter-plugins-for-apache-…

如何在Retail Link网站上与Walmart进行EDI连接测试?

本文主要介绍通过沃尔玛Walmart供应商平台Retail Link与沃尔玛Walmart建立EDI连接的流程。沃尔玛Walmart作为零售行业中最先使用AS2协议传输EDI数据的企业之一,其AS2经过多年的使用检验,具有安全连接、灵活数据传输等优点,使其经久不衰&#…

Qt Xml文件的创建和解析[xml和dom方式]

Qt Xml文件的创建和解析[xml和dom方式] 【1】Qt XML使用说明【2】Qt XML未来可期【3】Qt XML文件格式【4】Qt 读取XML文档的方法【5】Qt XML解析方式比较【6】QXmlStreamReader类说明【7】QXmlStreamWriter类说明【8】DOM说明【9】XML常用函数【10】DOM常用函数【11】XML和DOM源…

摊牌了,请各位做好一年内随时失业的准备

前两天跟一个HR朋友聊天,她表示刚在boss上发布了一个普通测试岗位,不到一小时竟然收到了几百份简历。而且简历质量极高,这是往年不敢想象的。岗位少,竞争激烈,这是今年软件测试就业的真实写照,也是所有岗位…

Python开发环境及常用Web框架

Python Python是一门易于学习、功能强大的编程语言。它提供了高效的高级数据结构,还能简单有效地面向对象编程。Python 优雅的语法和动态类型以及解释型语言的本质,使它成为多数平台上写脚本和快速开发应用的理想语言。 吉多范罗苏姆(Guido…

基于Postmate实现的跨域通信

1、Postmate 介绍 是一款基于 postMessage 来处理父子页面通信的库,轻量且好用。一个强大的、简单的、基于 promise 的 postMessage iFrame 通信库。 postmate 官方地址 https://github.com/dollarshaveclub/postmate 2、Postmate 特性 基于 promise 的 API&…

如何将数字改为千分符且保留两位小数显示?toLocaleString()和toFixed(2)踩坑

前言 基于现代Web前端框架的应用,其原理是通过浏览器向服务器发送网络请求,获取必要的index.html和打包好的JS、CSS等资源,在浏览器内执行JS,动态获取数据并渲染页面,从而将结果呈现给用户。在这个过程中,…