天池竞赛-津南数字制造算法挑战赛【赛场二】解决方案分享

一、前言

竞赛页面

团队名BugFlow,最终排名35/2157

虽然成绩一般,但是作为一支目标检测领域的新手队伍,仅仅有一块1070显卡,从零开始拿到这个排名,也算有一些经验可以拿出来分享,包括一些针对这个比赛我们想出的一些idea,算是抛砖引玉吧,期待能够和排名靠前的大佬多多交流。

源码下载

二、框架选择

这个比赛实际上就是一个目标检测比赛,初赛要求对图像中的违禁品出现的位置进行检测,复赛在有效检测目标的同时要求输出高质量的实例分割。

对于框架选择,如我们的队名BugFlow一样,由于我们队伍的成员都是以tensorflow作为工具的,我们最初选择的框架是google开源的Tensorflow Object Detection API, 无奈训练效果一直不理想。后面果断切换了FaceBook开源的Detectron, 成绩一下就上升不少,也是体会了一回判教一时爽,一直判教一直爽的感觉。

所以这里不得不说一下,一个好的目标检测框架真的是事半功倍,从我们组的经历来说,Detectron无论从准确性、易用性还是扩展性来说都是一个不错的框架。不知道排名前5的大佬使用的是什么框架,望赐教!很想学习一下~

三、解决方案概述

3.1 模型选择

复赛我们的选择的是 End-to-End Mask R-CNN 作为的baseline, backbone 选择的是 resnet101-FPN

之所以选择FPN结构是因为本竞赛中,待检测违禁品的尺度大小不一,且包含很多小物体,我们认为feature pyramid networks能够更好的解决这个问题。

3.2 数据增强

在我训练分类网络的经验中,在合理的范围内尽可能的进行丰富的数据增强能够大幅提升模型的性能。

显然,这个技能同样能应用于目标检测中,唯一的问题时,在变换图像的同时,需要同时对 bounding box 或 mask 进行相应的变换。当然,这仅仅是一个稍有难度的编程任务,难不倒大家的。

需要注意的是,Detectron自带了水平翻转的数据增强。

我们的数据增强文件实现在/path/to/project/code/second_round_pyfile/data_augmentation_position_bak.py,其中实现了水平、竖直翻转,放大(相当于crop操作),缩小这四个最基本的数据增强方法。

此外,我们还尝试了两种独特的数据增强,一种是类似于随机拼接两种图的增强,一种是随机贴图的增强,效果如下:

随机拼接两种图的效果示例:

随机使用违禁品进行贴图的示例:

遗憾的是,虽然这两种方法表面上极大的丰富了样本集的规模,但并没有取得很好的效果,我们认为这可能和一定程度的破坏了样本原有的数据分布有关。最终我们也没有使用这两种方法。

3.3 使用二分类网络辅助

比赛的过程中,我们发现有两个类型,蓝色小电池和大个的绿色铁壳打火机,特征不太清晰,很容易混淆。

如果单纯使用mask rcnn,模型会变得相对激进,将很多长相相似的物体误判为违禁品,造成成绩很低。

因此,为了权衡这个问题,我们考虑使用一个二分类网络,首先对待检测图片进行判别,若认为包含违禁品,再交给mask rcnn模型进行预测。

有了这个想法之后,我直接使用之前积累的Keras实现的resnet50 demo进行验证。

经过阈值的调试后,二分类能够达到100%召回,98%准确率。这样,大概率不会漏掉含违禁品的图片的情况下,mask rcnn 虚警的概率大大的降低了,成绩也提高了很多。

3.4 预处理

我们还对数据集进行了简单的分析,发现我们的目标场景的图片的像素值普遍偏高,类似下面这样:

因此我们认为可以对数据进行预处理,大体思路是对像素值进行调整,使其更均匀的分布在0-255的范围内。

为此,我设计了3种不同的预处理方法,其中最简单的一个就是类似下图的一个简单映射:

它达到的效果类似下面这样:

三种预处理的效果示例:

原图:

预处理1:

预处理2:

预处理3:

其中,通过不断地尝试和提交测试分数,我们发现预处理1对于二分类的accuracy提升有明显帮助,预处理3对mask rcnn的性能有微弱提升(也可能是随机因素导致,还不敢确定)

至此,我已经将我们认为所有可能值得分享的信息介绍了,还望排名靠前的大佬不吝赐教~~~

对于大多数伙伴,读到这里就可以了~

如果你对我们代码的详细信息甚至复现感兴趣,请继续往下看,我简单的介绍一下。

四、安装

我们代码的运行环境及主要依赖为:

Ubuntu/Centos + CUDA9 + CUDNN7 + NCCL + Anaconda2 + Keras2.2.4 + PyTorch

初赛我们使用的显卡是可怜的NVIDIA GTX1070,复赛有了阿里云代金卷使用的是P100

运行如下命令,自动安装依赖环境及深度学习框架

$ cd /path/to/project/code/install
$ ./install_requirements.sh

详见project/code/README.md,若由于各种没有考虑到的情况安装不能顺利进行,还请大家简单分析安装脚本自行安装环境。

五、复现

初赛时还处于摸索阶段,成绩也只有89名,初赛的复现就不做介绍了。大家有兴趣可以看下初赛提交时我们编写的 ROUND1_README,我们对如何复现我们的结果进行了说明。

复赛阶段的代码位于project/code/second_round_pyfile中,相应的运行脚本位于project/code/second_round_shell中,我们对这些脚本进行了编号,简单的阅读确定参数并依次执行即可~

六、联系方式

参加比赛也是一个交流的过程,本人现在作业帮的反作弊团队担任算法工程师,期待和各位算法从业者进行技术上的交流~

加好友、技术交流、内推请联系我,本人邮箱anshengmath@163.com。

此外,我们团队一位靠谱的小伙伴正在打算找博导,希望大家帮忙推荐呀,他的联系方式zhaoyh@ncepu.cn

天池竞赛-津南数字制造算法挑战赛【赛场二】解决方案分享相关推荐

  1. 阿里天池—2022江苏气象预测AI算法挑战赛

    文章目录 摘要 一.数据分析 二.MAE简介 三.Transformer简介 四.模型搭建(还未写......) 摘要 This is a meteorological forecasting com ...

  2. 【竞赛分享】2022天池江苏气象AI算法挑战赛 思路分享 (初赛暂排第3)

    2022天池江苏气象AI算法挑战赛 思路分享 (初赛暂排第3) 赛题理解 比赛任务为标准的时空预测问题,输入输出都为图片的序列.在本赛题中为输入过去20帧图片,预测未来20帧.每小时包含10帧数据,因 ...

  3. TIANCHI天池-OGeek算法挑战赛-完整方案及代码(亚军)

    首先很幸运拿到TIANCHI天池-OGeek算法挑战赛大赛的亚军,同时非常感谢大佬队友的带飞,同时希望我的分享与总结能给大家带来些许帮助,并且一起交流学习.(作者:王贺,知乎:鱼遇雨欲语与余) 赛题链 ...

  4. 2020天池 “数字人体”视觉挑战赛_VNNI赛道_冠军_方案分享

    文章目录 0. 团队信息 1. 赛题分析 1.1 任务 1.2 指标 1.3 数据 1.4 难点 2. 整体方案 2.1 模型训练 2.1.1 数据增强 2.1.2 模型结构 2.1.3 训练策略 2 ...

  5. ‘数字人体’视觉挑战赛 - 算法赛道亚军比赛攻略_LLLLC

    '数字人体'视觉挑战赛 - 算法赛道亚军比赛攻略_LLLLC 比赛主页:数字人体"视觉挑战赛--宫颈癌风险智能诊断 相关代码:github 0 赛题内容 本次比赛分为初赛和复赛两个阶段,比赛 ...

  6. 智源杯天文数据算法挑战赛开赛,前沿AI技术助力天文科学研究

    由北京智源人工智能研究院主办,国家天文台.数据评测平台biendata联合举办的天体分类数据竞赛于2020年1月开赛.本次比赛旨在鼓励大众参与到天文学的探索当中,利用最新的人工智能算法分析望远镜收集到 ...

  7. 百万奖金池!2022 全球人工智能技术创新大赛—算法挑战赛火热开启

    由中国人工智能学会和杭州市余杭区人民政府主办,杭州未来科技城管委会和京东零售联合承办的"2022全球人工智能技术创新大赛-算法挑战赛"(以下简称"大赛")报名通 ...

  8. arduino控制点阵屏与蜂鸣器_数字制造讲义08-Arduino声音应用2

    数字制造讲义01-成为数字世界的建造者 数字制造讲义02-Arduino入门 数字制造讲义03-电路基础 数字制造讲义04-负责输入和输出的智能元件 数字制造讲义05-软硬件数据通信 数字制造讲义06 ...

  9. 天池又上工业视觉检测算法大赛:瓶装白酒疵品质检

    点击我爱计算机视觉标星,更快获取CVML新技术 昨天跟大家推荐了一本Halcon的新书 如何开展工业视觉检测?Halcon 圣经告诉你答案 ,不少朋友对工业视觉检测这个方向很感兴趣,恰好天池最近又新上 ...

最新文章

  1. 多店铺多用户商城可以用来干嘛?适合什么样的商业模式?
  2. 基于Java的Selenium学习笔记——Assert
  3. Web前端的学习路线,你真的知道吗?
  4. [2-sat]HDOJ3622 Bomb Game
  5. 投资赚钱发财, 财务自由,需要如下几个因素
  6. LeetCode 134. Gas Station
  7. 福州计算机专业的大学的校徽,如此好看的大学LOGO,有你的母校吗?
  8. 打喷嚏喉咙痛流鼻涕英文说呢?
  9. php简述微信支付接口开发流程,php微信支付接口开发程序(流程已通)
  10. 完美解决Sudo doesn‘t work: “/etc/sudoers is owned by uid 1000, should be 0”
  11. 航空网的几个航班查询题:
  12. 日常pytho3练习脚本之--彩票自动选号机
  13. 酷派删除android系统升级,酷派手机怎么升级系统 酷派系统升级操作方法
  14. 使用JSON-Schema验证数据,第1部分
  15. 睡袋检测标准要求介绍
  16. 创造与魔法台更新维护服务器,创造与魔法27日更新维护公告 数据互通交流不愁...
  17. 什么是720°全景照片?如何制作720全景图
  18. 眼睛卫士Linux版
  19. USB无线网卡导致耳机电流声很大
  20. Windows Subsystem for Linux安装与使用

热门文章

  1. 国科大高级人工智能5-RNN/LSTM/GRU/集束搜索/attention
  2. CSS每日学习笔记(0)
  3. maven tomcat1.7环境下构建javaweb 项目
  4. web面试常见问题补充
  5. 翻译题(map使用)
  6. python-文件和流
  7. Leetcode--15. 三数之和
  8. php java 通信_PHP与Java进行通信的实现方法
  9. jdbc获取结果行数,如何获取JDBC中的行数?
  10. 体育测试数据绘图软件,原创健身运动体育测试数据统计app界面