美文网首页
实例分割经典之作:PointRend

实例分割经典之作:PointRend

作者: Valar_Morghulis | 来源:发表于2022-03-22 14:52 被阅读0次

PointRend: Image Segmentation as Rendering

https://arxiv.org/abs/1912.08193v2

作者:Alexander Kirillov     Yuxin Wu     Kaiming He     Ross Girshick

以上作者分别也是DETR、GroupNorm、ResNet、R-CNN、Fast R-CNN的一作

这里有个人的代码讲解:https://www.aiuai.cn/aifarm1401.html

这个人演示如何自己做数据集并用pointrend训练:https://blog.csdn.net/qq_33047753/article/details/107022058

我们提出了一种新的高效高质量的目标和场景图像分割方法。通过模拟经典的计算机图形学方法在像素标记任务中面临的过采样和欠采样挑战,我们将图像分割作为一个渲染问题,提出了一个独特的视角。从这一优势出发,我们提出了PointRend(基于点的渲染)神经网络模块:该模块基于迭代细分算法在自适应选择的位置执行基于点的分割预测。PointRend可以灵活地应用于实例和语义分割任务,方法是在现有最先进模型的基础上构建。虽然总体思想的许多具体实现是可能的,但我们表明,一个简单的设计已经取得了很好的效果。从定性上讲,PointRend在先前方法过度平滑的区域中输出清晰的对象边界。从数量上看,PointRend在COCO和城市景观方面取得了显著的收益,包括实例和语义分割。PointRend的效率使输出分辨率与现有方法相比在内存或计算方面不切实际。守则已于

1.导言

图像分割任务涉及将规则网格上采样的像素映射到同一网格上的标签图或一组标签图。对于语义分割,标签映射指示每个像素处的预测类别。在实例分割的情况下,预测每个检测到的对象的二元前景与背景地图。这些任务的现代工具选择基于卷积神经网络(CNN)[27,26]。

用于图像分割的CNN通常在规则网格上操作:输入图像是像素的规则网格,其隐藏表示是规则网格上的特征向量,其输出是规则网格上的标签映射。规则网格很方便,但在计算上不一定适合图像分割。这些网络预测的标签图应该是最平滑的,即相邻像素通常采用相同的标签,因为高频区域仅限于对象之间的稀疏边界。规则栅格将不必要地对平滑区域进行过采样,同时对对象边界进行欠采样。结果是在平滑区域和模糊轮廓中计算过多(图1,左上角)。图像分割方法通常在低分辨率规则网格上预测标签,例如,语义分割为输入[35]的1/8,例如分割为28×28[19],作为欠采样和过采样之间的折衷。

在计算机图形学中,类似抽样问题已经研究了几十年。例如,渲染器将模型(例如,3D网格)映射到光栅化图像,即像素的规则网格。当输出在常规网格上时,计算不会在网格上均匀分配。相反,常见的图形策略是在图像平面中自适应选择的点的不规则子集处计算像素值。例如,文献[48]中的经典细分技术产生了一种类似四叉树的采样模式,可以有效地渲染抗锯齿的高分辨率图像。

本文的中心思想是将图像分割视为一个渲染问题,并采用计算机图形学中的经典思想来高效地“渲染”高质量标签地图(见图1,左下角)。我们将这种计算思想封装在一个新的神经网络模块中,称为PointRend,该模块使用细分策略自适应地选择一组非均匀的点来计算标签。PointRend可以整合到流行的元架构中,用于实例分割(如Mask R-CNN[19])和语义分割(如FCN[35])。它的细分策略使用比直接密集计算少一个数量级的浮点运算有效地计算高分辨率分割图。

PointRend是一个通用模块,允许许多可能的实现。抽象地看,PointRend模块接受在规则网格上定义的一个或多个典型CNN特征映射f(xi,yi),并在更精细的网格上输出高分辨率预测p(x0i,y0i)。PointRend只对精心选择的点进行预测,而不是对输出网格上的所有点进行过度预测。为了进行这些预测,它通过插值f为选定点提取点特征表示,并使用一个小的点头子网络从点特征预测输出标签。我们将介绍一个简单有效的PointRend实现。

我们使用COCO[29]和Cityscapes[9]基准评估实例和语义分割任务上的PointRend。定性上,PointRend有效地计算对象之间的尖锐边界,如图2和图8所示。我们还观察到定量的改进,即使这些任务(mask AP和mIoU)基于联合的度量的标准交集偏向于对象内部像素,并且对边界改进相对不敏感。PointRend显著提高了强Mask RCNN和DeepLabV3[5]模型的性能。

2.相关工作

计算机图形学中的渲染算法输出一个规则的像素网格。然而,他们通常在一组不均匀的点上计算这些像素值。细分[48]和自适应采样[38,42]等高效程序在像素值方差较大的区域细化粗光栅化。光线跟踪渲染器通常使用过采样[50],这是一种比输出栅格更密集地采样某些点的技术,以避免锯齿效果。在这里,我们将经典细分应用于图像分割。

非均匀网格表示。

规则网格上的计算是2D图像分析的主要范例,但其他视觉任务并非如此。在三维形状识别中,由于立方体缩放,大型三维网格是不可行的。大多数基于CNN的方法都没有超出粗略的64×64×64网格[12,8]。相反,最近的作品考虑更有效的非均匀表示,例如网格(47, 14)、符号距离函数[37 ]和八叉树[46 ]。与有符号距离函数类似,PointRend可以计算任意点的分割值。

最近,Marin等人[36]提出了一种有效的语义分割网络,该网络基于在使用标准语义分割网络进行处理之前对输入图像进行非均匀子采样。相反,PointRend侧重于输出端的非均匀采样。这两种方法可以结合使用,尽管[36]目前还没有得到证实,例如分割。

基于Mask-RCNN元架构的实例分割方法[19]在最近的挑战中占据领先地位[32,3]。这些基于区域的架构通常预测28×28网格上的遮罩,而与对象大小无关。这对于小对象来说已经足够了,但是对于大对象,它会产生不需要的“块状”输出,从而过度平滑大对象的精细级别细节(参见图1,左上角)。另外,自下而上的方法将像素分组以形成对象遮罩[31,1,25]。这些方法可以产生更详细的输出,但是,它们落后于大多数实例分割基准上基于区域的方法[29,9,40]。TensorMask[7]是另一种滑动窗口方法,它使用复杂的网络设计来预测大型物体的高分辨率锐化mask ,但其精度也稍落后。在本文中,我们展示了一个基于区域的分割模型,该模型配备了PointRend,可以生成具有精细细节的mask ,同时提高了基于区域的方法的准确性。

语义分割。

全卷积(FCNS)〔35〕是现代语义分割方法的基础。他们通常预测分辨率低于输入网格的输出,并使用双线性上采样恢复残差的8-16×分辨率。结果可以通过扩大/萎缩卷积来改善,这种卷积可以取代一些子采样层[4,5],但要牺牲更多的内存和计算。

替代方法包括编码器-解码器实现结构[6,24,44,45],该结构在编码器中对网格表示进行子采样,然后在解码器中对其进行上采样,使用跳过连接[44]来恢复滤波的细节。当前的方法将扩展卷积与编码器结构相结合[6,30],在应用双线性插值之前,在比输入网格更稀疏的4倍网格上产生输出。在我们的工作中,我们提出了一种方法,可以有效地预测与输入网格一样密集的网格上的精细细节。

3.方法

我们将计算机视觉中的图像分割(对象和/或场景)类比为计算机图形学中的图像渲染。渲染是将模型(例如,3D网格)显示为像素的规则网格,即图像。虽然输出表示为规则网格,但底层物理实体(如3D模型)是连续的,可以使用物理和几何推理(如光线跟踪)在图像平面上的任何实际值点查询其物理占用和其他属性。

类似地,在计算机视觉中,我们可以将图像分割视为底层连续实体的占用图,分割输出(预测标签的规则网格)从中“渲染”。实体编码在网络的特征图中,可以通过插值在任意点访问。参数化函数是物理和几何推理的对应物,通过这些插值的逐点特征表示来预测占用率。

基于这种类比,我们提出了PointRend(基于点的渲染)作为一种使用点表示的图像分割方法。PointRend模块接受C通道f的一个或多个典型CNN特征图∈ RC×H×W,每个都在规则网格上定义(通常比图像网格粗4×到16×),并输出K类标签p的预测∈ RK×H0×W0在不同(可能更高)分辨率的规则网格上。PointRend模块由三个主要组件组成:(i)点选择策略选择少量实值点进行预测,避免对高分辨率输出网格中的所有像素进行过度计算。(ii)对于每个选定点,提取逐点特征表示。实值点的特征通过f的双线性插值计算,使用f规则网格上点的4个最近邻。因此,它能够利用f通道维度中编码的亚像素信息来预测具有比f更高分辨率的分割。(iii)点头:一个经过训练的小型神经网络,用于根据该点特征表示预测标签,独立于每个点。

PointRend架构可应用于实例分割(例如,在Mask R-CNN[19]上)和语义分割(例如,在FCNs[35]上)任务。例如,分割,PointRend应用于每个区域。它通过对一组选定点进行预测,以从粗到精的方式计算遮罩(见图3)。对于语义分割,可以将整个图像视为单个区域,因此在不丧失通用性的情况下,我们将在实例分割的上下文中描述PointRend。接下来我们将更详细地讨论这三个主要组件。

3.1. 推理和训练的点选择

该方法的核心思想是在图像平面上灵活、自适应地选择点来预测分割标签。直观地说,这些点应该更密集地位于高频区域附近,例如对象边界,类似于光线跟踪中的抗锯齿问题。我们将此想法用于推理和训练。

推论

我们的推理选择策略受到计算机图形学中经典的自适应细分技术[48]的启发。该技术用于高效地渲染高分辨率图像(例如,通过光线跟踪),方法是仅在该值很可能与其邻居显著不同的位置进行计算;对于所有其他位置,通过插值已计算的输出值(从粗网格开始)获得值。

对于每个区域,我们以从粗到精的方式迭代“渲染”输出Mask 。在规则网格上的点上进行最粗级别预测(例如,通过使用标准粗分割预测头)。在每次迭代中,PointRend使用双线性插值对其先前预测的分割进行上采样,然后在该密度更大的网格上选择N个最不确定的点(例如,对于二元Mask ,概率最接近0.5的点)。PointRend然后计算这N个点中每个点的逐点特征表示(见§3.2),并预测其标签。重复此过程,直到分割上采样到所需的分辨率。该过程的一个步骤在图4中的玩具示例上示出。

在期望的输出分辨率为M×M像素和起始分辨率为M0×M0的情况下,PointRend需要的点预测不超过N log2 MM0。这比M×M小得多,允许PointRend更有效地进行高分辨率预测。例如,如果M0为7且所需分辨率为M=224,则执行5个细分步骤。如果我们在每一步选择N=282个点,PointRend只预测282·4.25个点,比2242小15倍。请注意,由于在第一个细分步骤中只有142个点可用,因此选择的总点数小于N log2 MM0。不下雨。

在训练期间,PointRend还需要选择点,在这些点上构建点特征以训练点头。原则上,点选择策略可以类似于推理中使用的细分策略。然而,细分引入了顺序步骤,这些步骤对使用反向传播训练神经网络不太友好。相反,对于训练,我们使用基于随机抽样的非迭代策略。

采样策略在特征图上选择N个点进行训练。1它的设计目的是使选择偏向不确定区域,同时使用三个原则保持一定程度的均匀覆盖。(i) 过度生成:我们通过从均匀分布中随机抽样kN点(k>1),过度生成候选点。(ii)重要性抽样:我们通过插值所有kN点的粗略预测值并计算特定任务的不确定性估计值(定义见§4和§5),重点关注粗略预测不确定的点。最不确定的βN点(β∈ [0,1])是从kN候选者中选择的。(iii)覆盖范围:残差(1)− β) N个点从均匀分布中采样。我们用不同的设置来说明这个过程,并将其与常规网格选择进行比较,如图5所示。

在训练时,预测和损失函数仅在N个采样点上计算(除了粗分割),这比通过细分步骤的反向传播更简单、更有效。该设计类似于快速R-CNN系统中RPN+快速R-CNN的并行训练[13],其推理是顺序的。

3.2. 点表示与点头

PointRend通过组合(例如,连接)两种特征类型(细粒度和粗预测特征),在选定点构建逐点特征,如下所述。

细粒度特征。

为了使PointRend能够呈现精细的分割细节,我们从CNN特征图中的每个采样点提取一个特征向量。因为一个点是一个实值2D坐标,我们在特征地图上执行双线性插值来计算特征向量,遵循标准实践[22,19,10]。可以从单个特征图中提取特征(例如,ResNet中的res2);它们也可以从多个特征图(例如,res2到res5,或其特征金字塔[28]对应物)中提取,并按照超列方法进行连接[17]。

粗预测特征。

细粒度特性可以解析细节,但在两个方面也存在不足。首先,它们不包含特定于区域的信息,因此由两个实例的边界框重叠的同一点将具有相同的细粒度特征。然而,这一点只能出现在一个实例的前景中。因此,对于实例分割任务,不同的区域可能预测同一点的不同标签,需要额外的区域特定信息。

其次,根据细粒度特征使用的特征映射,这些特征可能只包含相对较低级别的信息(例如,我们将在DeepLabV3中使用res2)。在这种情况下,具有更多上下文和语义信息的特征源可能会有所帮助。这个问题会影响实例分割和语义分割。

基于这些考虑,第二特征类型是来自网络的粗分割预测,即,区域(框)中每个点处的K维向量表示K类预测。通过设计,粗略解析提供了更全球化的上下文,而通道传递语义类。这些粗略的预测与现有架构的输出类似,并且在训练期间以与现有模型相同的方式进行监督。例如,分割,粗略预测可以是,例如,mask R-CNN中的轻型7×7分辨率mask 头的输出。对于语义分割,它可以是,例如,来自Stride16特征图的预测。

尖头。

给定每个选定点的逐点特征表示,PointRend使用简单的多层感知器(MLP)进行逐点分割预测。该MLP在所有点(和所有区域)上共享权重,类似于图卷积[23]或点网[43]。由于MLP预测每个点的分割标签,因此可以通过标准任务特定分割损失(如§4和§5所述)对其进行训练。

4.实验:实例分割

数据集。

我们使用两个标准的实例分割数据集:COCO[29]和Cityscapes[9]。我们使用COCO的3次运行中位数和城市景观的5次运行中位数报告标准面具AP指标[29](其具有更高的方差)。

COCO有80个类别,带有实例级注释。我们在2017年的火车上训练(∼118k图像)并报告2017年val2017的结果(5k图像)。如[16]所述,COCO基本事实通常是粗糙的,数据集的AP可能无法充分反映mask 质量的改善。因此,我们使用LVI的80 COCO类别子集[16]测量的AP补充COCO结果,用AP?表示。LVIS注释具有显著更高的质量。注意,对于AP?我们使用在COCO上训练的相同模型,并使用LVIS评估API根据高质量LVIS注释重新评估其预测。Cityscapes是一个以自我为中心的街道场景数据集,包含8个类别、2975张火车图像和500张验证图像。与COCO(1024×2048像素)相比,这些图像具有更高的分辨率,并且具有更精细、更精确的地面实况实例分割。

架构

我们的实验使用带有ResNet-50[20]+FPN[28]主干的Mask R-CNN。mask R-CNN中的默认mask 头是区域性FCN,我们用“4×conv”表示。2我们使用它作为比较基准。对于PointRend,我们对该基线进行适当的修改,如下所述。

轻巧、粗糙的面具预测头。

为了计算粗略预测,我们将4×convmask 头替换为更轻的设计,类似于mask R-CNN的盒式头,并生成7×7mask 预测。具体而言,对于每个边界框,我们使用双线性插值从FPN的P2级别提取14×14特征映射。特征是在边界框内的常规栅格上计算的(此操作可以看作是RoIAlign的简单版本)。接下来,我们使用带有256个输出通道的跨步2×2卷积层,后跟ReLU[39],这将空间大小减少到7×7。最后,与Mask R-CNN的盒式头部类似,使用一个具有两个1024宽隐藏层的MLP为每个K类生成7×7的mask 预测。ReLU用于MLP的隐藏层,sigmoid激活功能应用于其输出。

点伦德。

在每个选定点,使用双线性插值从粗预测头的输出中提取K维特征向量。PointRend还从FPN的P2级别插值256维特征向量。该级别的步幅为输入图像的4 w.r.t。将这些粗预测和细粒度特征向量连接起来。我们使用3个隐藏层和256个通道的MLP在选定点进行K类预测。在MLP的每一层中,我们用K个粗略预测特征来补充256个输出信道,以生成下一层的输入向量。我们在MLP中使用ReLU,并将sigmoid应用于其输出。

训练

默认情况下,我们使用Detectron2[49]的标准1×训练计划和数据扩充(完整细节见附录)。对于PointRend,我们使用§3.1中所述的偏置采样策略对142个点进行采样,k=3,β=0.75。我们使用0.5和从粗略预测中插值的地面真值类概率之间的距离作为逐点不确定性度量。对于具有地面真值类别c的预测盒,我们对142个点上第c个MLP输出的二元交叉熵损失求和。轻型粗略预测头使用c类预测的mask 的平均交叉熵损失,即与基线4×conv头相同的损失。我们将所有损失相加,不重新加权。

在训练期间,Mask R-CNN平行应用box和面具头部,而在推理期间,它们作为级联运行。我们发现,级联训练并不能改善基线Mask R-CNN,但PointRend可以通过在更精确的框中采样点而受益,略微改善整体性能(∼0.2%AP(绝对值)。

推论对于具有预测类别c的长方体的推断,除非另有规定,否则我们使用自适应细分技术将类别c的粗略7×7预测细化为224×224,分5步进行。在每个步骤中,我们根据预测值与0.5之间的绝对差值选择并更新(最多)N=282个最不确定点。

4.1. 主要结果

我们将PointRend与表1中Mask R-CNN中默认的4×conv头进行比较。PointRend在这两个数据集上都优于默认head。使用LVIS注释(AP?)评估COCO类别时,差距更大对于城市景观,我们将其归因于这些数据集中卓越的注释质量。即使输出分辨率相同,PointRend也优于基线。28×28和224×224之间的差异相对较小,因为AP使用联合上的交集[11],因此严重偏向对象内部像素,对边界质量不太敏感。然而,从视觉上看,边界质量的差异是明显的,见图6。

细分推断允许PointRend使用比默认的4×conv头输出相同分辨率所需的计算(FLOPs)和内存少30倍的计算(基于采用112×112 ROIALING输入),生成高分辨率224×224预测,见表2。PointRend通过忽略粗略预测足够的对象区域(例如,远离对象边界的区域),使高分辨率输出在Mask R-CNN框架中可行。在挂钟运行时方面,我们未优化的实现在每个时钟周期输出224×224个Mask ∼13 fps,与修改为输出56×56mask 的4×conv头的帧速率大致相同(通过将默认ROIALING大小加倍),与28×28 4×conv头相比,该设计的COCO AP实际上更低(34.5%对35.2%)。

表3显示了具有不同输出分辨率和在每个细分步骤中选择的点数的PointRend细分推断。以更高的分辨率预测mask 可以改善结果。尽管AP饱和,但当从较低(例如56×见图56)分辨率输出移动到较高(例如224×224)分辨率输出7时,视觉改善仍然明显。AP还随着每个细分步骤中采样的点数饱和,因为首先在最模糊的区域中选择点。在粗略预测已经足够的区域,额外的点可以进行预测。但是,对于具有复杂边界的对象,使用更多点可能是有益的。

4.2. 烧蚀实验

我们进行了多次烧蚀来分析PointRend。一般来说,我们注意到它对点头MLP的精确设计具有鲁棒性。在我们的实验中,其深度或宽度的变化没有显示出任何显著的差异。训练中的选点。

在训练期间,我们按照有偏采样策略(§3.1)为每个对象选择142个点。仅采样142个点可以提高训练的计算效率和记忆效率,我们发现使用更多的点并不能改善结果。令人惊讶的是,尽管我们观察到AP的变异性增加,但每盒仅采样49点仍然保持AP。

表4显示了训练期间不同选择策略下的PointRend绩效。规则网格选择可获得与均匀采样类似的结果。而偏向模棱两可区域的采样则改善了AP。然而,过于偏向粗预测边界的采样策略(k>10,β接近1.0)会降低AP。总的来说,我们发现广泛的参数2<k<5和0.75<β<1.0提供了类似的结果。

型号越大,训练时间越长。

训练ResNet-50+FPN(表示为R50-FPN),在COCO上按1×计划进行。在表5中,我们显示了PointRend相对于基线的改进在更长的训练计划和更大的模型中都有效(详情见附录)。

5.实验:语义分割

PointRend不仅限于实例分割,还可以扩展到其他像素级识别任务。在这里,我们证明了PointRend可以受益于两种语义分割模型:DeeplabV3[5],它使用扩展卷积在更密集的网格上进行预测;SemanticFPN[24],一种简单的编解码器架构。

数据集。

我们使用Cityscapes[9]语义分割集,其中包含19个类别、2975张训练图像和500张验证图像。我们报告了5次试验的中位mIoU。

实施细节。

我们根据各自的论文重新实现了DeeplabV3和SemanticFPN。SemanticFPN使用标准的ResNet-101[20],而DeeplabV3使用[5]中提出的ResNet-103。3我们遵循原始论文的训练计划和数据扩充(详情见附录)。

我们使用与实例分割相同的PointRend架构。粗略的预测特征来自语义分割模型(已经粗略)的输出。对于DeeplabV3,细粒度特征从res2插值,对于SemanticFPN,细粒度特征从P2插值。在训练期间,我们对输入的STERIDE 16特征图上的点进行采样(deeplabV3为2304,SemanticFPN为2048)。我们使用相同的k=3,β=0.75点选择策略。在推断过程中,细分使用N=8096(即1024×2048图像的跨步16图中的点数),直到达到输入图像分辨率。为了测量预测不确定性,我们在训练和推理过程中使用相同的策略:最自信和第二自信类别概率之间的差异。

DeeplabV3。

在表6中,我们将DeepLabV3与带有PointRend的DeepLabV3进行了比较。如[5]所述,通过在res4级中使用扩展卷积,输出分辨率也可以提高2倍。与两者相比,PointRend具有更高的mIoU。质量改进也很明显,见图8。通过自适应采样点,PointRend通过仅对32k点进行预测达到1024×2048分辨率(即2M点),见图9。

语义。

表7显示,与不带PointRend的8倍和4倍输出步幅变体相比,带PointRend的SemanticFPN都有所改善。

附录A。

实例分割详细信息

我们使用0.9动量的新加坡元;应用线性学习率预热[15],从学习率0.001开始,超过1000次更新;应用权重衰减0.0001;水平翻转和缩放列车时间数据扩充;来自ImageNet预训练模型的批量归一化(BN)[21]层被冻结(即,未使用BN);没有使用测试时间扩展。

COCO[29]:每小批量16张图像;训练计划为60k/20k/10k更新,学习率分别为0.02/0.002/0.0002;训练图像随机调整为640到800像素的较短边缘,步长为32像素,推理图像调整为800像素的较短边缘。

城市景观[9]:每小批量8张图片训练计划为18k/6k更新,学习率分别为0.01/0.001;训练图像以32像素的步长随机调整为800到1024像素的较短边缘,推理图像调整为1024像素的较短边缘。

较长的时间表:

COCO的3×时间表为210k/40k/20k,学习率分别为0.02/0.002/0.0002;所有其他细节与上述设置相同。附录B.语义分割详细信息

DeeplabV3[5]:我们使用动量为0.9的SGD,每个小批量16幅图像裁剪为固定的768×768大小;训练计划为90k更新,采用poly learning rate[34]更新策略,从0.01开始;应用线性学习率预热[15],从学习率0.001开始,超过1000次更新;ASPP和预测卷积的学习速率乘以10;采用0.0001的权重衰减;使用随机水平翻转和0.5×到2.0×的缩放以及32像素的步长作为训练数据增强;BN应用于16幅图像的小批量处理;没有增加测试时间;

SemanticFPN[24]:我们使用0.9动量的SGD,每个小批量剪切32个图像,大小固定为512×1024;训练计划为40k/15k/10k更新,学习率分别为0.01/0.001/0.0001;应用线性学习率预热[15],从学习率0.001开始,超过1000次更新;应用权重衰减0.0001;训练中使用水平翻转、色彩增强[33]和作物引导[2];scale traintime数据增强以32像素的步长将输入图像的大小从0.5×调整到2.0×;冻结BN层(即不使用BN);没有使用测试时间增加。

附录C.AP?计算

本文关于arXiv的第一版(v1)根据LVIS注释[16](AP?)评估COCO mask AP时存在错误。旧版本使用了每个评估图像中不存在的不正确类别列表,这导致AP较低?价值观

相关文章

网友评论

      本文标题:实例分割经典之作:PointRend

      本文链接:https://www.haomeiwen.com/subject/hbufjrtx.html