2019 未来杯高校AI挑战赛 区域赛作品

根据组委会提供的图像,将3张图像合成一张伪彩色图像,构造数据集。从超新星搜寻与比赛计分方式来看,应该多关注havestar部分的数据,少关注nostar部分的数据。原始训练集由1049张原始图像组成,在划分为训练集和测试集以后,以标注点为中心进行数据扩充
使用Faster R-CNN对超新星进行目标检测, 采用Resnet101作为骨干网络,对超新星图像进行特征的提取
采用了一系列方法对检测结果进行优化,如weight decay, anchor的设置,网络输入大小等

Faster R-CNN:主流的两阶段目标检测算法
Head:对超新星图像进行特征的提取,获取到feature map供RPN和RoI Pooling部分使用
RPN:实现“attention”机制,在feature map上提取到RoI 框, 主要负责定位。
Classification Network:对RoI Pooling 得到的固定尺寸的feature使用softmax 和 smooth L1 loss对分类和边框回归联合训练。

模型选择一:YOLOv3
使用YOLOv3作为目标检测算法。将提供的图像转化为VOC2007格式的数据集以后,使用YOLOv3模型进行训练以及测试,最终结果一般(mAP:10%)。
原因:超新星在图像中尺寸较小,而YOLOv3对小目标的效果一般。调整anchor大小对模型的改进提升一般。因此,放弃YOLOV3模型。

模型选择二: GAN
从使用GAN进行图像去噪角度出发。使用pix2pix和cycleGAN两种方式进行去噪,再使用Faster R-CNN进行超新星检测,最终效果没有任何提升。
由于去噪的粒度难以把控,可能将目标消除,无法将目标信息很好地保留下来。最终放弃了该方案。

模型选择三: 数据集图像切割
为了提升小目标的检测效果。在训练过程中,将图像切割成4个大小相同的部分,然后放大为原来的二倍
在测试过程中,也进行以上操作,将四部分分别进行检测
将所有检测结果合成通过nms算法后选出三个得分最高的框。在放大切割图像的过程中,噪点也被放大,导致了检测得分的下降。(得分:0.34)

模型选择四: Faster R-CNN改进
骨干网络的选取:VGG系列,ResNet系列,DenseNet系列
训练数据集扩充:旋转,中心切割放大,翻转等
超参的优化: 调整weight decay 参数防止过拟合,调整learning rate来提升模型表现,针对小目标调整anchor参数
使用Batch Normalization:减少噪点影响,加速模型收敛,提升网络泛化能力。

优化过程1- 数据集扩充方法
1049张原始图像(havestar)
以标注点为中心,裁剪100×100图像,并放大2倍,进行数据集扩充。扩充后得到总计2098张图像

优化过程2- 超新星尺寸设置
以标注点为中心设置10×10, 32×32,48×48, 56×56大小的ground truth框。
其中,48*48大小的取得了较优的性能(比其他大小的ground truth提升了10-20%),最终采用48为超新星的ground truth尺寸。

优化过程3-基础网络
VGG16,VGG19
ResNet18,ResNet50,ResNet101,ResNet152
Dense121,Dense169,Dense201,Dense161
VGG系列网络得分在0.4-0.5,ResNet系列网络得分在0.7-0.8,DenseNet系列网络得分在0.6-0.75。
由于模型res101的模型复杂度与本问题复杂度接近,所以表现最优,最终选择ResNet101作为基础网络。

优化过程4-一些技巧
anchor修改:
anchor scale设置为1,2,3
(原始scale: 8,16,32)
anchor ratio设置为0.5,1,2

针对小目标进行anchor优化,极大提升了foreground/background的比例## 概述

以Faster R-CNN为基础进行改进,包括数据预处理,运行,测试等。使用的基础网络是Resnet101。其中数据集进行了扩充,提升了检测效果。另外调整了模型的参数(如learning rateweight decay等),提高了检测的精度和模型泛化能力。

优化过程4-一些技巧
采用dropout进行防止过拟合,但是效果不理想(res101上得分为0.602)。
weight decay 是正则项前的一个系数,主要用于控制模型的复杂度,从原来的0.0005提升到0.0007,这样可以控制模型的复杂度,防止过拟合。提升了大致3个百分点(res101上得分为0.73)。

summery:
针对超新星检测,基于Faster R-CNN进行模型的提升。
提出一种数据集扩充的方法
采用ResNet101作为骨干网络
使用了一系列tricks来提升小目标的检测效果

系统要求

硬件环境要求

  • CPU:4核以上
  • GPU:TITAN Xp 尽量在12G以上
  • 内存:8G以上
  • 硬盘:50G以上
  • 其他:无

软件环境要求

  • 操作系统:Ubuntu16.04
  • anaconda 4.6.9
  • pytorch0.4.0
  • cython
  • cffi
  • opencv-python
  • scipy
  • msgpack
  • easydict
  • matplotlib
  • pyyaml
  • tensorboardX
  • cuda 9.0
  • cudnn 7.5
  • tensorflow
  • tqdm

需要进行编译:

# 到code主目录下,然后运行以下程序进行编译
conda create -n pytorch python=3.6# pytorch必须是0.4.0,可以从官网下载,然后离线安装
conda install pytorch torchvision cudatoolkit=9.0 -c pytorch=0.4.0# 以上大部分需要软件都可以通过该命令执行
pip install -r requirements.txt
cd lib# 在此处进行编译,如果遇到问题,修改CUDA_ARCH对应的参数即可
sh make.sh

数据集

没有使用官方提供的数据集以外的数据。

数据预处理

方法概述

  • 将提供的图片分为两类,分别为存在疑似星体与非星体的图片,将疑似星体类别中以"_a"、"_b"、"_c"为后缀的三张图片作为三个通道(依次对应R、G、B分量),合成一张图片,共计1049张,如下图所示。

  • 将上述处理的图片,以疑似星体目标坐标为中心切割100*100的区域,然后使用双三次差值方法放大2倍得到200*200的图片,共计1049张,如下图所示。

  • 将上述两类图片合并得到最终数据集,共2098张图片,全部用于训练。

  • 数据集标注文件使用pascal_voc格式,其中xml标注文件中ground truth以目标坐标为中心,大小设为48*48(经测试尺寸为48*48时检测效果最好)。

操作步骤

  1. 使用moveFile()mergeImg()函数将提供的数据集移到一个文件夹下且生成三通道的图片。
  2. 使用makeVOCdevkit2007()make_voc()generateVOC()函数生成2098张图片的训练数据,格式为pascal_voc。
  3. 以上函数代码均已集成至训练脚本train_net.py中。

模型

训练后的模型存储地址:可以用--model参数进行指定,默认位置为models

模型文件大小:377.5M

使用我们提供的训练好的权重:faster_rcnn_1_10_499.pth, 其位置在 models/res101/pascal_voc/下,运行demo.py时候,使用--model models即可

训练

训练方法概述

  • 基础网络选择resnet101
  • RPN部分anchor设置:base_size=16,ratios=[0.5,1,2],scales=2*np.arrange(3,6)(当前网络经测试取得的最好效果)
  • 学习率设置为learning_rate=0.001,learning_rate_decay_ratio=0.2,step_to_do_learning_rate_decay=5epoch
  • 训练优化方法为随机梯度下降stochastic gradient descent
  • 区域特征聚集方式使用roi_align
  • 训练动量train.momentum=0.9
  • 将所有图片按照比例缩放至600*1000的范围内
  • batch_size=3
  • weight_decay=0.0001

训练操作步骤

python trainval_net.py \--net res101 \--bs 3  \--cuda \--training-dataset=./af2019-cv-training-20190312 \--model=model_dir

参数解释:

–net 选择基础网络,我们使用的是res101

–bs batch size , 每次放进网络三张图

–cuda 使用GPU

–training-dataset 训练集位置,只需要跟官方提供的训练集一致即可,即该文件夹下有许多子文件夹,子文件夹中放置所有的数据图片,该文件夹下需要有list.csv文件

–model 生成模型的位置,默认地址是models

训练结果保存与获取

训练结果直接保存在--model指定的文件夹中,该文件夹结构如下:

- models- res101- pascal_voc- faster_rcnn_1_1_499.pth- faster_rcnn_1_1_698.pth- faster_rcnn_1_2_499.pth- faster_rcnn_1_2_698.pth- faster_rcnn_1_3_499.pth- ...- faster_rcnn_1_10_499.pth- faster_rcnn_1_10_698.pth

训练权重格式为faster_rcnn_x_y_z.pth,其中,x代表checksession,y代表checkepoch,z代表checkpoint。

指定文件夹存储了许多checkpoint, 一般选择faster_rcnn_1_10_499.pth,经测试与其他模型相比效果更好。

测试

方法概述

--image_dir 对应的文件夹中的图片进行测试(即testB所在路径),使用demo.py文件进行测试,最终目的是得到submit.csv文件。

  • RPN_NMS_THRESH=0.7,RPN_POST_NMS_TOP_N=500,RPN_PRE_NMS_TOP_N=10000
  • 区域特征聚集方式使用roi_align

测试最优权重的选择参考TensorboardX展示的Loss,Train/Accuracy及权重直方图三者综合确定。最优权重的Loss变化缓慢,Accuracy值较高,权重稳定。同时过拟合因素也考虑在内,未选择最后一个权重,所以最终选择的权重文件为faster_rcnn_1_10_499.pth。

操作步骤

如果当前有submit.csv文件,先删除上一次得到的submit.csv

python demo.py --net res101 --cuda \--checksession 1 \--checkepoch 10 \--checkpoint 499 \--prediction-file=./submit.csv \--model=models \--test-dataset=./af2019-cv-testB-20190408/ \--image_dir ./images/

参数解释:

–net 选择基础网络为res101

–cuda 使用GPU

–checksession , --checkepoch , --checkpoint 三个参数分别对应上述checkpoint文件的命名,如faster_rcnn_1_10_499.pth对应 --checksession 1 --checkepoch 10 --checkpoint 499

–prediction-file 测试结果的csv文件及其路径

–test-dataset 指定测试集图片,与训练集类似,都会进行自动化处理,只需要解压testB,并且指向该目录即可。

–image_dir 指定处理后图片的输出位置

2019 未来杯高校AI挑战赛 区域赛作品相关推荐

  1. 2019 未来杯高校 AI 挑战赛 图像-发现超新星

    2019 未来杯高校 AI 挑战赛 > 图像-发现超新星 1. 任务目标 设计一个目标检测模型,从天文望远镜拍摄到的影像中发现疑似新星.超新星. 2. 规则说明 参赛选手需要基于给定的数据集,设 ...

  2. 2019未来杯高校AI挑战赛-跨设备说话人识别

    赛事简介 语音可以作为一种生物识别的形式,通过对说话人语音的采样,我们对说话的身份进行验证,在语音助手.安防等领域有着广泛的应用场景.相对于基于文本内容的说话人识别,文本无关的验证因减少了变化的约束, ...

  3. 着眼未来!2019未来杯高校AI挑战赛圆满落幕

    在目前地产行业不断向大数据智能化转型的背景下,作为行业领先的房地产大数据应用服务商,2019克而瑞再度延伸,参与了第二届"未来杯高校AI挑战赛".在此次的大赛中,克而瑞一览当代高校 ...

  4. 2019未来杯高校AI挑战赛之图像-发现超新星

    1. 参赛网址 https://ai.futurelab.tv/contest_detail/1 2. 背景知识介绍 http://psp.china-vo.org/article/sysaquiz1 ...

  5. 2019蓝桥杯B组C++省赛题目及感受

    2019年第十届蓝桥杯大赛软件类省赛C/C++大学B组 试题 A:组队 本题总分:5分 [问题描述] 作为篮球队教练,你需要从以下名单中选出 1号位至 5号位各一名球员, 组成球队的首发阵容. 每位球 ...

  6. 未来杯区域赛奖项争夺进入倒计时,专家评审团阵容揭晓

    由中软国际教育科技集团旗下睡前Futurelab携手中国青少年发展基金会和华为手机,面向海内外高校在读学生举办的"2020未来杯高校AI挑战赛"区域赛已接近尾声.经过历时1个多月的 ...

  7. 未来杯区域赛临近收官,多家高校队伍共同挑战人工智能领域的难题

    由中软国际教育科技集团旗下睡前Futurelab携手中国青少年发展基金会.DeepTech和华为手机共同主办,清华语音和语言技术中心.北京希尔贝壳科技有限公司和厦门大学海洋与地球学院共同协办的&quo ...

  8. 2020未来杯区域赛之赛区划分及正式提交时间公布

    由中软国际教育科技集团旗下睡前Futurelab携手中国青少年发展基金会.DeepTech和华为手机共同主办的"2020未来杯高校AI挑战赛"自开启报名以来,已收到来自海内外近20 ...

  9. 学术联赛 | 运用知识图谱技术,赋能多领域应用 ——“未来杯”AI学术联赛总决赛暨颁奖典礼圆满落幕...

    本文转载自公众号:AI学习社. 由北京大学软件工程国家工程研究中心主办,华为终端有限公司及中软国际教育科技集团全程战略支持,STEER TECH科技平台.北京乐智元素科技有限公司.艾肯文化传媒(北京) ...

最新文章

  1. OSPF的LSA类型 ——连载一路由器LSA
  2. kafka监控linux脚本,zabbix监控kafka
  3. Java Web——文件上传(Apache Commons FileUpload实现上传图片DEMO)
  4. Nginx 内置绑定变量的介绍
  5. CS229 6.5 Neurons Networks Implements of Sparse Autoencoder
  6. oracle first_rows怎么用,优化模式区别(all_rows first_rows_n)
  7. 计算机东大计算机三在线作业,东大16秋学期《计算机基础》在线作业3
  8. Android 8.0 linux内核,在Ubuntu上为Android增加硬件抽象层(HAL)模块访问Linux内核驱动程序---Android8.0版本实现-对照老罗版本...
  9. 《程序设计技术》第二章例程
  10. 如何选择数据分析工具
  11. 百度网盘提取码_百度网盘无提取码分享方法
  12. java web学习步骤,javaweb学习路线有哪些?如何学习?
  13. Typora文档添加水印
  14. 周伯通招聘发现频道之追梦网
  15. BlackBerry 模拟器上网
  16. 深入分析 RTPS协议
  17. 射击末世--建造者模式
  18. qt4 鼠标卡顿问题QBasicAtomicInt死锁导致的
  19. 微信浏览器禁止下载APK文件 微信扫描二维码 下载app的方法
  20. Oracle 数据统计计算

热门文章

  1. 如何用Python爬取2019抖音歌曲排行榜(标题党,听歌的可以来)
  2. Jenkins Docker 持续集成实践
  3. Android常用的第三方组件
  4. Windows命令操作
  5. Centos7 安装GPU驱动(rpm包方式安装) 亲测,出坑 NVIDIA-SMI has failed because it couldn’t communicate...
  6. 2020·RDC·RT-Thread开发者大会圆满落幕!
  7. 嵌入式外行好学吗_对于外行来说,什么是分布式系统? (第1部分)
  8. 微信小程序——关于图片
  9. WEBGIS实现限制地图拖动范围及缩放比例及extent()参数说明
  10. uln2003 的COM端主要有两种用途:(可悬空)