浦口区城乡建设集团网站,我要做网站,网络营销外包合同模板,网站建设带数据库模板发表时间: 2018年 项目地址#xff1a;https://arxiv.org/abs/1712.07629 论文地址#xff1a;https://github.com/magicleap/SuperPointPretrainedNetwork
本文提出了一种用于训练计算机视觉中大量多视点几何问题的兴趣点检测器和描述符的自监督框架。与patch-based的神经网…
发表时间: 2018年 项目地址https://arxiv.org/abs/1712.07629 论文地址https://github.com/magicleap/SuperPointPretrainedNetwork
本文提出了一种用于训练计算机视觉中大量多视点几何问题的兴趣点检测器和描述符的自监督框架。与patch-based的神经网络相比我们的全卷积模型处理全尺寸的图像并在一次前向传播中计算像素级的特征点和特征描述符。我们引入单应性自适应这是一种多尺度、多单应性方法用于提高兴趣点检测重复性并执行跨域自适应例如合成到真实。我们的模型在使用同态的MS-COCO通用图像数据集自适应能够重复检测更丰富的集合与初始预适应深度模型相比以及任何其他传统的角检测器。最终系统结果与LIFT、SIFT和ORB相比产生了最先进的单应性估计。
1、 关键点
一种使用自我训练的自监督self-training解决方案而不是使用人类监督来定义真实图像中的兴趣点。不需要人工标记数据仅依赖于模型的迭代提升性能。
1.1 训练机制
通过对单个图像进行单适应性变化透视变化形成Image Pair以孪生网络的机制进行训练
1.2 训练步骤
所有的训练都是使用PyTorch [19]完成的默认参数为lr 0.001和β 0.9,0.999的ADAM求解器0.999。我们还使用了标准的数据增强技术如随机高斯噪声、运动模糊、亮度水平的变化以提高网络对照明和视点变化的鲁棒性。
1、兴趣点预训练
先基于点和线等基本图形伪造了一个基本数据集synthetic data然后使用该数据集训练模型。synthetic data包含上百万的合成形状的数据集形状都是由简单的几何图形多边形、弧形、圆等图形组成在兴趣点角点、定点上是没有争议的如。该步骤训练出来的模型称之为MagicPoint只能提取特征点在该步骤进行了超过 200,000次的迭代训练实时动态训练数据不重复
synthetic data
基本形状四边形、三角形、线和椭圆的合成数据渲染由简化的二维几何组成歧义消除使用Y连接、T连接、L连接、椭圆中心点、线条端点为特征点以此消除歧义鲁棒性增强对每个随机样本进行单适应变化数据全为动态生成不重复
数据集示意如下
2、兴趣点自监督
MagicPoint在shape上效果较好但是域适应能力有限在伪数据上训练在真实数据上测试与经典检测器相比遗失了不少兴趣点。 为此提出一种多尺度、多变换技术–Homographic Adaptation方法。将多尺度变化、仿射变化所生成的伪标签还原到原始图像中用于生成最终的伪标签用于提升检测器的特征点提取能力。该步骤训练出来的模型为SuperPoint只能提取特征点,在COCO 2014数据集上训练约80000多个图像读取为灰度图size为240x320自监督时数据单适应变化参数NhN_hNh100该操作重复了两次。
方法的具体运算流程如下
3、联合训练
在检测到鲁棒和可重复的兴趣点后最常见的步骤是在每个点上附加一个固定的维度描述符向量用于更高层次的语义任务例如图像匹配。最后将SuperPoint与一个描述符子网络结合起来参见图2c。由于超级点架构由一个深层的卷积层组成它可以提取多尺度特征因此可以直接将兴趣点网络与一个计算兴趣点描述符的附加子网络结合起来。该步骤训练出来的模型为SuperPoint在提取提取特征点的基础上增加了特征描述符。
2、网络结构
SuperPoint在全尺寸的图像上运行一次前向传播即可输出特征点和特征描述符以往的方法需要两次特征点与描述符要分开计算缺乏共享网络结构如下图所示有一个共享的encoder部分。
2.1 实现代码
实现代码如下所示是一个vgg风格的模型
class SuperPointNet(torch.nn.Module): Pytorch definition of SuperPoint Network. def __init__(self):super(SuperPointNet, self).__init__()self.relu torch.nn.ReLU(inplaceTrue)self.pool torch.nn.MaxPool2d(kernel_size2, stride2)c1, c2, c3, c4, c5, d1 64, 64, 128, 128, 256, 256# Shared Encoder.self.conv1a torch.nn.Conv2d(1, c1, kernel_size3, stride1, padding1)self.conv1b torch.nn.Conv2d(c1, c1, kernel_size3, stride1, padding1)self.conv2a torch.nn.Conv2d(c1, c2, kernel_size3, stride1, padding1)self.conv2b torch.nn.Conv2d(c2, c2, kernel_size3, stride1, padding1)self.conv3a torch.nn.Conv2d(c2, c3, kernel_size3, stride1, padding1)self.conv3b torch.nn.Conv2d(c3, c3, kernel_size3, stride1, padding1)self.conv4a torch.nn.Conv2d(c3, c4, kernel_size3, stride1, padding1)self.conv4b torch.nn.Conv2d(c4, c4, kernel_size3, stride1, padding1)# Detector Head.self.convPa torch.nn.Conv2d(c4, c5, kernel_size3, stride1, padding1)self.convPb torch.nn.Conv2d(c5, 65, kernel_size1, stride1, padding0)# Descriptor Head.self.convDa torch.nn.Conv2d(c4, c5, kernel_size3, stride1, padding1)self.convDb torch.nn.Conv2d(c5, d1, kernel_size1, stride1, padding0)def forward(self, x): Forward pass that jointly computes unprocessed point and descriptortensors.Inputx: Image pytorch tensor shaped N x 1 x H x W.Outputsemi: Output point pytorch tensor shaped N x 65 x H/8 x W/8.desc: Output descriptor pytorch tensor shaped N x 256 x H/8 x W/8.# Shared Encoder.x self.relu(self.conv1a(x))x self.relu(self.conv1b(x))x self.pool(x)x self.relu(self.conv2a(x))x self.relu(self.conv2b(x))x self.pool(x)x self.relu(self.conv3a(x))x self.relu(self.conv3b(x))x self.pool(x)x self.relu(self.conv4a(x))x self.relu(self.conv4b(x))# Detector Head.cPa self.relu(self.convPa(x))semi self.convPb(cPa)# Descriptor Head.cDa self.relu(self.convDa(x))desc self.convDb(cDa)dn torch.norm(desc, p2, dim1) # Compute the norm.desc desc.div(torch.unsqueeze(dn, 1)) # Divide by norm to normalize.output {semi: semi, desc: desc}self.output outputreturn output2.2 Shared Encoder
SuperPoint使用了一个VGG风格的[27]编码器来降低图像的size。该编码器由卷积层、池化空间降采样和非线性激活函数组成。编码器使用三个最大池层其输出的特征图size在长宽上均为原图的1/8及输出图的一个坐标点对应原图8x8的区域.此时特征图的channel为256相比于原图具有更小的空间维度和更大的通道深度。
2.3 Interest Point Decoder
对于兴趣点检测输出的每个像素对应于输入中该像素的“关键点”概率。head为两个conv的堆叠实现代码为self.convPb(self.relu(self.convPa(x)))具体输出的特征维度为65维即特征图上的一个像素点有65维其中有64维对应着原图中一个不重叠的8x8区域第65维作为垃圾桶表示该区域没有特征点。在后续步骤中可以通过reshape操作即可得到原图大小的特征点概率图具体运算步骤如下 HcH/8RHc×Wc×64⇒RH×WH_cH/8 \\ \mathbb{R}^{H_{c} \times W_{c} \times 64} \Rightarrow \mathbb{R}^{H \times W} HcH/8RHc×Wc×64⇒RH×W
2.4 Descriptor Decoder
特征描述符的提取与特征点提取类似也为两个conv的堆叠head实现代码为desc self.convDb( self.relu(self.convDa(x)))。该head输出的特征图最终为N x 256 x H/8 x W/8可以理解为原图8x8的区域像素都共用一个特征描述符。在输出时对desc进行了L2归一化整体值除以某个维度的2范数。计算过程中shape变化如下:
import torch
desctorch.rand((8,256,40,40)) # 模拟Descriptor Head的输出
dn torch.norm(desc, p2, dim1) #torch.Size([8, 40, 40]) 计算desc在第一个维度的二范数
dn torch.unsqueeze(dn, 1) #torch.Size([8, 1, 40, 40])
desc desc.div(dn) #torch.Size([8, 256, 40, 40])3、loss设计
最终的损失是两个中间损失的和一个用于兴趣点检测器Lp另一个用于描述符Ld。使用成对的合成扭曲图具有两个伪标签(兴趣点位置)和来自图像随机扭曲中的单应性矩阵H。这允许我们同时优化两个损失给出一对图像。我们使用λ 0.0001来平衡最终损失为 L(X,X′,D,D′;Y,Y′,S)Lp(X,Y)Lp(X′,Y′)λLd(D,D′,S)\begin{array}{l} \mathcal{L}\left(\mathcal{X}, \mathcal{X}^{\prime}, \mathcal{D}, \mathcal{D}^{\prime} ; Y, Y^{\prime}, S\right) \\ \quad \mathcal{L}_{p}(\mathcal{X}, Y)\mathcal{L}_{p}\left(\mathcal{X}^{\prime}, Y^{\prime}\right)\lambda \mathcal{L}_{d}\left(\mathcal{D}, \mathcal{D}^{\prime}, S\right) \end{array} L(X,X′,D,D′;Y,Y′,S)Lp(X,Y)Lp(X′,Y′)λLd(D,D′,S) 最终的输入有X、D、Y、S、X’、D’、Y’两组XDY和单适应矩阵H其中X为输入特征点Y为特征点标签D为输出的特征描述符S为特征点的对应性(在特征描述符loss中会描述)。 兴趣点检测器loss Lp的计算公式如下,其代码实质就是在输出chanel上做了一次softmax激活。 Lp(X,Y)1HcWc∑h1w1Hc,Wclp(xhw;yhw)wherelp(xhw;y)−log(exp(xhwy)∑k165exp(xhwk)).\mathcal{L}_{p}(\mathcal{X}, Y)\frac{1}{H_{c} W_{c}} \sum_{\substack{h1 \\ w1}}^{H_{c}, W_{c}} l_{p}\left(\mathbf{x}_{h w} ; y_{h w}\right) \\ where \\ l_{p}\left(\mathbf{x}_{h w} ; y\right)-\log \left(\frac{\exp \left(\mathbf{x}_{h w y}\right)}{\sum_{k1}^{65} \exp \left(\mathbf{x}_{h w k}\right)}\right) . Lp(X,Y)HcWc1h1w1∑Hc,Wclp(xhw;yhw)wherelp(xhw;y)−log(∑k165exp(xhwk)exp(xhwy)). 特征描述符loss Ld的计算公式如下可以看到是一个加权的hinge loss因为正样本对数量与负样本对的数量是不一样的故对正样本用λd\lambda_{d}λd250进行加权其中s1表示为正样本。dTd′d^{T}ddTd′表示两个特征描述符的乘积当描述符正交垂直时乘积为0即两个描述符不相似时【反向时】乘积-1相似时乘积接近1mpm_pmp1,mnm_nmn0.2。该loss的本意就是空间通过仿射变化后位置接近的点所提取的特征描述符应该是相似的空间位置远的点所提取的特征描述符应该是不同的。 Ld(D,D′,S)1(HcWc)2∑h1w1Hc,Wc∑h′1w′1Hc,Wcld(dhw,dh′w′′;shwh′w′)whereld(d,d′;s)λd∗s∗max(0,mp−dTd′)(1−s)∗max(0,dTd′−mn)\begin{array}{l} \mathcal{L}_{d}\left(\mathcal{D}, \mathcal{D}^{\prime}, S\right) \frac{1}{\left(H_{c} W_{c}\right)^{2}} \sum_{\substack{h1 w1}}^{H_{c}, W_{c}} \sum_{\substack{h^{\prime}1 w^{\prime}1}}^{H_{c}, W_{c}} l_{d}\left(\mathbf{d}_{h w}, \mathbf{d}_{h^{\prime} w^{\prime}}^{\prime} ; s_{h w h^{\prime} w^{\prime}}\right) \\ \text{where} \\ l_{d}\left(\mathbf{d}, \mathbf{d}^{\prime} ; s\right)\lambda_{d} * s * \max \left(0, m_{p}-\mathbf{d}^{T} \mathbf{d}^{\prime}\right) (1-s) * \max \left(0, \mathbf{d}^{T} \mathbf{d}^{\prime}-m_{n}\right) \end{array} Ld(D,D′,S)(HcWc)21∑h1w1Hc,Wc∑h′1w′1Hc,Wcld(dhw,dh′w′′;shwh′w′)whereld(d,d′;s)λd∗s∗max(0,mp−dTd′)(1−s)∗max(0,dTd′−mn) s的计算方式如下所示主要是用于区分样本对。当特征描述符1坐标*单适应矩阵即还原到原坐标系下- 特征描述符2坐标小于8时则构成正样本对否则为负样本对。
4、实验报告
4.1 MagicPoint
将MagicPoint与其他传统的角检测方法进行评估时如FAST [21]、Harris角[8]和Shi-Tomasi的“跟踪合成形状数据集上的良好特征”[25]时作者发现了一个巨大的性能差距作者测量了合成形状数据集的1000张保留图像的平均平均精度mAP并将结果报告在表2中。经典探测器在存在成像噪声下挣扎的定性例子如图4所示MagicPoint特征点对于噪声鲁棒性更好。 更详细的实验方法见附录B即下图其中MLE为平均定位误差(Mean Localization Error)。
噪声强度测试
通过改变噪声的大小来更仔细地研究它的影响。我们很好奇我们添加到图像上的噪声对于一个点探测器来说是否过于极端和不合理。为了验证这一假设我们在干净图像s 0和有噪声图像s 1之间进行线性插值。为了将探测器推到极限我们还在噪声图像和随机噪声s 2之间进行插值。随机噪声图像不包含几何形状因此对所有检测器的mAP评分为0.0。下图显示了不同程度噪声的例子和图示。
噪声类型测试
我们把噪音分为八类。我们单独研究这些噪声类型的影响以更好地了解哪一种对点探测器的影响最大。散斑噪声对于传统的探测器来说尤其困难。结果总结在图12中从中可以看出MagicPoint所提取的特征点在loss上基本上不受噪声类型的影响其loss直方图[最前面两个柱形]在不同噪声下变化很小
Blob检测
我们实验了我们的模型检测形状中心的能力如四边形和椭圆。我们使用了MagicPoint的架构并增强了合成形状训练集除了角落外还包括斑点中心。我们观察到只要整个形状不太大我们的模型就能够检测到这些斑点。然而为这种“斑点检测”产生的干扰通常低于角落的干扰这使得将两种检测集成到一个系统中有些麻烦。在本文的主要实验中除了下面的实验外我们省略了用斑点进行的训练。
我们在白色背景上创建了96×96的黑色正方形图像。我们将方块的宽度从3到91像素并报告输出两个不同输入图heatmap的一致性中心像素斑点的位置和方块的左上角像素一个易于检测的角。本实验的MagicPoint的角置信图如图13所示。我们观察到我们可以自信地检测斑点的中心当size宽为11到43像素是图13中红色区域检测较低的信心当广场43和71像素宽黄色区域并且无法检测中心斑点当广场大于71图13中的蓝色区域。
整体实验效果较好但该实验带来的问题是人工形状效果能推广到真实的图像吗
总结我们稍后在7.2节中介绍的一个结果答案是肯定的但没有作者希望的那么好。作者惊讶地发现魔法点在现实世界的图像上表现得相当好特别是在那些具有强大的角状结构的场景中如桌子、椅子和窗户。不幸的是在所有自然图像的空间中与相同的经典探测器相比它在视点变化下的可重复性方面表现不佳。这激发了作者训练真实世界图像的自我监督方法作者称之为 Homographic Adaptation。
4.2 Homographic Adaptation
SuperPoint从一个基本的兴趣点检测器和来自目标域的大量未标记图像如MS-COCO引导自己。在自我监督范式也称为self-training中我们首先为目标域中的每个图像生成一组伪地面真实兴趣点位置然后使用传统的监督学习机制。方法的核心是一个数据增强过程将随机单适应变化应用用于输入图像的副本并将结果还原到原图上累加——我们称之为同质自适应。
并不是所有随机生成的3x3单适应矩阵都是同质自适应的好选择。对好的同型性进行抽样以表示看似合理的相机转换我们将一个潜在的同构性分解成更简单表达力较差的转换类。我们在预先确定的范围内采样的平移、尺度、平面内旋转和对称透视失真使用截断的正态分布。这些转换与初始的根中心作物一起组成以帮助避免边界工件。具体的单适应图像变化可以拆解为以下步骤
所进行的单适应变化也应该是有限的作者表明一个图在进行100次单适应变化后它的增益会递减。且在训练过程中图像仅是有概率进行单适应变化并非都变化。
迭代提升
我们在训练时应用Homographic Adaptation技术来提高MagicPoint在真实图像上的泛化能力。该过程可以反复重复以不断地自我监督和改进兴趣点检测器。在我们所有的实验中我们在应用Homographic Adaptation后将结果模型命名为SuperPoint并显示了图7中来自HPatches的图像的定性进展。
尺度变化
区分尺度内聚合和跨尺度聚合是很重要的。现实世界的图像通常包含不同尺度的特征因为一些在高分辨率图像中被认为是有趣的点通常甚至在更粗糙、更低分辨率的图像中都不可见。然而在单一尺度内图像的转换如旋转和平移不应该使兴趣点出现/消失。图像的这种潜在的多尺度性质对于尺度内和跨尺度的聚合策略具有不同的含义。尺度内聚合应该类似于计算集合的交集而跨尺度聚合应该类似于集合的并集。此外我们还可以使用跨尺度的平均响应作为兴趣点置信度的多尺度度量。当兴趣点在所有尺度上都可见时跨尺度的平均响应将被最大化而这些很可能是跟踪应用程序的最强大的兴趣点。 尺度内的聚合 我们使用了对输入图像的大量均形扭曲的平均响应。在选择随机同态时应该注意因为不是所有的同态都是真实的图像变换。同形扭曲的数量Nh是我们的方法的一个超参数。我们通常强制第一个同等性相等这样在我们的实验中Nh 1对应于不做同等性或等价地应用恒等同等性。我们的实验范围从“小”Nh 10到“中”Nh 100和“大”Nh 1000。 跨尺度的聚合 考虑的尺度的数量是我们方法的一个超参数。Ns 1的设置对应于没有多尺度聚合或只是跨大的图像大小聚合。对于Ns 1我们将被处理的多尺度图像集称为“多尺度图像金字塔”。我们考虑加权方案加权金字塔的水平不同给更高分辨率的图像一个更大的权重。这一点很重要因为在较低分辨率下检测到的兴趣点具有较差的定位能力而且我们希望最终的聚合点尽可能精准定位。我们在MS-COCO图像的持续测试中进行了尺度内和跨尺度聚合的实验。结果总结在图14中。我们发现尺度内聚合对可重复性的影响最大
5、论文总结
我们提出了一种全卷积神经网络架构用于兴趣点检测和描述使用自形自适应的自监督域适应框架。我们的实验表明(1)可以转移知识从一个合成数据集到现实世界的图像(2)稀疏兴趣点检测和描述可以作为一个有效的卷积神经网络和(3)产生的系统适用于几何计算机视觉匹配任务等同质估计。
未来的工作将研究同质自适应是否可以提高模型的性能如用于语义分割如SegNet [1]和目标检测如SSD [14]。它还将仔细研究兴趣点检测和描述以及潜在的其他任务对彼此有益的方式。
最后我们相信我们的超级点网络可以用于解决3D计算机视觉问题中的所有视觉数据关联如SLAM和SfM并且基于学习的视觉SLAM前端将在机器人技术和增强现实中实现更健壮的应用 文章转载自: http://www.morning.bbtn.cn.gov.cn.bbtn.cn http://www.morning.kjsft.cn.gov.cn.kjsft.cn http://www.morning.prgnp.cn.gov.cn.prgnp.cn http://www.morning.phlrp.cn.gov.cn.phlrp.cn http://www.morning.kaakyy.com.gov.cn.kaakyy.com http://www.morning.trrd.cn.gov.cn.trrd.cn http://www.morning.addai.cn.gov.cn.addai.cn http://www.morning.wmgjq.cn.gov.cn.wmgjq.cn http://www.morning.rhqn.cn.gov.cn.rhqn.cn http://www.morning.lkcqz.cn.gov.cn.lkcqz.cn http://www.morning.tfwr.cn.gov.cn.tfwr.cn http://www.morning.shangwenchao4.cn.gov.cn.shangwenchao4.cn http://www.morning.ycpnm.cn.gov.cn.ycpnm.cn http://www.morning.bgqqr.cn.gov.cn.bgqqr.cn http://www.morning.fbzyc.cn.gov.cn.fbzyc.cn http://www.morning.ypnxq.cn.gov.cn.ypnxq.cn http://www.morning.lfcnj.cn.gov.cn.lfcnj.cn http://www.morning.frcxx.cn.gov.cn.frcxx.cn http://www.morning.kgqpx.cn.gov.cn.kgqpx.cn http://www.morning.yzsdp.cn.gov.cn.yzsdp.cn http://www.morning.rnmmh.cn.gov.cn.rnmmh.cn http://www.morning.wdwfm.cn.gov.cn.wdwfm.cn http://www.morning.trrd.cn.gov.cn.trrd.cn http://www.morning.lhxkl.cn.gov.cn.lhxkl.cn http://www.morning.pnmgr.cn.gov.cn.pnmgr.cn http://www.morning.smpb.cn.gov.cn.smpb.cn http://www.morning.nwqyq.cn.gov.cn.nwqyq.cn http://www.morning.skbkq.cn.gov.cn.skbkq.cn http://www.morning.kjdxh.cn.gov.cn.kjdxh.cn http://www.morning.ggnfy.cn.gov.cn.ggnfy.cn http://www.morning.hqwcd.cn.gov.cn.hqwcd.cn http://www.morning.rkxqh.cn.gov.cn.rkxqh.cn http://www.morning.hmbxd.cn.gov.cn.hmbxd.cn http://www.morning.fhxrb.cn.gov.cn.fhxrb.cn http://www.morning.lwmzp.cn.gov.cn.lwmzp.cn http://www.morning.mqmmc.cn.gov.cn.mqmmc.cn http://www.morning.rfwgg.cn.gov.cn.rfwgg.cn http://www.morning.rppf.cn.gov.cn.rppf.cn http://www.morning.ljzqb.cn.gov.cn.ljzqb.cn http://www.morning.lztrt.cn.gov.cn.lztrt.cn http://www.morning.rfxg.cn.gov.cn.rfxg.cn http://www.morning.zsthg.cn.gov.cn.zsthg.cn http://www.morning.qjsxf.cn.gov.cn.qjsxf.cn http://www.morning.npgwb.cn.gov.cn.npgwb.cn http://www.morning.pqxjq.cn.gov.cn.pqxjq.cn http://www.morning.nhrkl.cn.gov.cn.nhrkl.cn http://www.morning.mfbzr.cn.gov.cn.mfbzr.cn http://www.morning.pszw.cn.gov.cn.pszw.cn http://www.morning.yltyr.cn.gov.cn.yltyr.cn http://www.morning.srgsb.cn.gov.cn.srgsb.cn http://www.morning.rqpgk.cn.gov.cn.rqpgk.cn http://www.morning.fjtnh.cn.gov.cn.fjtnh.cn http://www.morning.brkrt.cn.gov.cn.brkrt.cn http://www.morning.mbhdl.cn.gov.cn.mbhdl.cn http://www.morning.mwjwy.cn.gov.cn.mwjwy.cn http://www.morning.pxlsh.cn.gov.cn.pxlsh.cn http://www.morning.xmwdt.cn.gov.cn.xmwdt.cn http://www.morning.smkxm.cn.gov.cn.smkxm.cn http://www.morning.pprxs.cn.gov.cn.pprxs.cn http://www.morning.lhwlp.cn.gov.cn.lhwlp.cn http://www.morning.qcrhb.cn.gov.cn.qcrhb.cn http://www.morning.hysqx.cn.gov.cn.hysqx.cn http://www.morning.qcztm.cn.gov.cn.qcztm.cn http://www.morning.flqkp.cn.gov.cn.flqkp.cn http://www.morning.rqxmz.cn.gov.cn.rqxmz.cn http://www.morning.bnlch.cn.gov.cn.bnlch.cn http://www.morning.qhvah.cn.gov.cn.qhvah.cn http://www.morning.qqrqb.cn.gov.cn.qqrqb.cn http://www.morning.zyrp.cn.gov.cn.zyrp.cn http://www.morning.wtcyz.cn.gov.cn.wtcyz.cn http://www.morning.wcgfy.cn.gov.cn.wcgfy.cn http://www.morning.cmzgt.cn.gov.cn.cmzgt.cn http://www.morning.xqgtd.cn.gov.cn.xqgtd.cn http://www.morning.hxrg.cn.gov.cn.hxrg.cn http://www.morning.wqhlj.cn.gov.cn.wqhlj.cn http://www.morning.oioini.com.gov.cn.oioini.com http://www.morning.zwgrf.cn.gov.cn.zwgrf.cn http://www.morning.ftdlg.cn.gov.cn.ftdlg.cn http://www.morning.kpcky.cn.gov.cn.kpcky.cn http://www.morning.xqtqm.cn.gov.cn.xqtqm.cn