【论文笔记】Weakly Supervised Learning Based on Coupled Convolutional Neural Networks for Aircraft Detecti

本文介绍了使用耦合卷积神经网络(Coupled Convolutional Neural Networks, CCNNs)进行飞机检测的弱监督学习方法。CRPNet作为候选区域提议网络,通过预训练、迭代训练和候选区域生成来定位飞机。随后,LOCNet进一步精确定位。该方法在缺乏大量精确边界框标注的情况下,仍能有效检测飞机。" 113513628,10538855,Python Seaborn:数据分布可视化详解,"['Python可视化', '数据可视化', 'Seaborn']

Weakly Supervised Learning Based on Coupled Convolutional Neural Networks for Aircraft Detection

基于耦合卷积神经网络的弱监督学习用于飞机检测

Fan Zhang, Bo Du, Senior Member, IEEE, Liangpei Zhang, Senior Member, IEEE, and Miaozhong Xu
IEEE TRANSACTIONS ON GEOSCIENCE AND REMOTESENSING, VOL. 54, NO. 9, SEPTEMBER201

【abstract】

本文的目标是使用基于耦合卷积神经网络的弱监督学习来进行高分辨率遥感图像(VHR)中的机场检测。
目前已存方法存在一下几个弊端:
(1)难以提取高级特征和分层特征代表;
(2)对大型图像进行人工注释代价昂贵,且不可信;
(3)在大型图像上进行小区域定位非常耗时。

【Overview of The Proposed Method】

论文提出的方法,是基于耦合CNN模型的弱监督学习方法,下面分为三个部分介绍该方法:弱监督、耦合CNN中的CRPNet和LOCNet。

弱监督

弱监督学习同样基于CNN模型,它只需要弱标签,例如图像级标签来作为训练样本。若标签只需说明图像中有无包含目标,并且弱监督可以挖掘相关数据(见下),因此,弱监督学习在训练过程中只需要少量的人工注释工作。

CRPNet(candidate region proposal network)

候选区提议网络,用于进行大尺寸的高分辨率遥感图像(VHR)的特征提取工作,方法如下:

1.预训练

使用辅助数据来进行预训练,辅助数据来自California大学的Merced数据集。该数据集包含21个场景类,每个场景类中包含100个图像样本。
预训练过程中,使用Merced数据集中包含飞机的图片为正样本,不包含飞机的图片为负样本(辅助数据),并将负样本加入训练数据集。

2.迭代训练

对于给定的VHR图像,从中标记飞机作为正样本,使用辅助数据作为负样本进行训练。在每一次迭代过程中,CRPNet产生一张候选区域图,并且从原始图像中自动挖掘负样本组成背景数据集,并更新训练样本集。自动挖掘负样本,指的是在迭代过程中收集背景类中获得高分(可能性大于0.5)的难样本,并添加近负样本当中。难样本(hard example)指的是CRPNet在背景中检测到的包含飞机的区域,但背景中实际上不可能包含飞机,所以将这一类候选区域作为难样本,添加到负样本中。

3.候选区域生成

当CRPNet训练完毕后,我们使用候选区域图来产生用于机场检测的候选区域。
要复现《Online Easy Example Mining for Weakly - supervised Gland Segmentation from Histology Images》论文的研究内容,可从以下几个方面着手: ### 环境搭建 首先需搭建合适的运行环境,通常要安装深度学习框架,如 PyTorch 或 TensorFlow。以 PyTorch 为例,可使用以下命令安装: ```python pip install torch torchvision ``` 同时,还需安装其他必要的库,像 NumPy、OpenCV 等: ```python pip install numpy opencv-python ``` ### 数据集准备 该论文主要针对组织学图像进行腺体分割,要获取对应的数据集。一般来说,数据集应包含组织学图像以及相应的标注信息。若数据集有公开版本,可直接下载;若没有,则需自行收集和标注。在准备数据集时,要对数据进行预处理,如调整图像大小、归一化等: ```python import cv2 import numpy as np def preprocess_image(image): # 调整图像大小 image = cv2.resize(image, (256, 256)) # 归一化 image = image / 255.0 return image ``` ### 模型构建 依据论文中的描述构建模型。论文可能提出了特定的网络架构,需使用深度学习框架实现该架构。以下是一个简单的 PyTorch 模型示例: ```python import torch import torch.nn as nn class GlandSegmentationModel(nn.Module): def __init__(self): super(GlandSegmentationModel, self).__init__() # 定义模型的层 self.conv1 = nn.Conv2d(3, 64, kernel_size=3, padding=1) self.relu1 = nn.ReLU() # 可根据论文添加更多层 def forward(self, x): x = self.conv1(x) x = self.relu1(x) return x ``` ### 训练模型 按照论文中的训练方法对模型进行训练。这包括选择合适的损失函数、优化器,以及设置训练参数,如学习率、训练轮数等: ```python import torch.optim as optim model = GlandSegmentationModel() criterion = nn.CrossEntropyLoss() optimizer = optim.Adam(model.parameters(), lr=0.001) # 模拟训练数据 train_images = torch.randn(10, 3, 256, 256) train_labels = torch.randint(0, 2, (10, 256, 256)) for epoch in range(10): optimizer.zero_grad() outputs = model(train_images) loss = criterion(outputs, train_labels) loss.backward() optimizer.step() print(f'Epoch {epoch+1}, Loss: {loss.item()}') ``` ### 模型评估 使用测试数据集对训练好的模型进行评估,计算相关的评估指标,如 Dice 系数、交并比(IoU)等: ```python from sklearn.metrics import f1_score test_images = torch.randn(5, 3, 256, 256) test_labels = torch.randint(0, 2, (5, 256, 256)) model.eval() with torch.no_grad(): test_outputs = model(test_images) test_outputs = (test_outputs > 0.5).float() f1 = f1_score(test_labels.flatten(), test_outputs.flatten()) print(f'F1 Score: {f1}') ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值