Kaggle-海底海星目标检测Baseline

Frankie : 目前本科在读,师从深度之眼比赛班导师-Taylor老师,刚接触图像算法竞赛半年,已经获得 IFLYTEK 1024 Challenge - X光目标检测第二名,华为云-重庆语义分割算法大赛二等奖等。

1、赛题链接

https://www.kaggle.com/c/tensorflow-great-barrier-reef

2、赛题描述

本次竞赛的目标是通过建立一个在珊瑚礁水下视频中训练的物体检测模型,实时准确地识别海星。

商业价值:帮助研究人员识别威胁澳大利亚大堡礁的物种,并采取明智的行动,为子孙后代保护珊瑚礁。

※ 比赛时间线
2021 11 月 22 日 年 - 开始日期。
2022 2 月 7 日 年 - 报名截止日期。 您必须在此日期之前接受比赛规则才能参加比赛。
2022 2 月 7 日 年 - 团队合并截止日期。 这是参与者可以加入或合并团队的最后一天。
2022 2 月 14 日 年 - 最终提交截止日期。

※ 丰厚的奖金
一等奖:30,000美元
二等奖:25,000美元
三等奖:20,000美元
四等奖:15,000美元
五等奖:10,000美元

3、数据描述

train.csv中包含了三个视频抽帧后的图片信息标注,其中几个重要参数:
video_id- 图像所属视频的 ID 号。视频 ID 没有有意义的排序。
video_frame- 视频中图像的帧数。当潜水员浮出水面时,预计会偶尔看到帧数的差距。
sequence- 给定视频的无间隙子集的 ID。序列 id 没有有意义的排序。
sequence_frame - 给定序列中的帧号。
image_id - 图像的 ID 代码,格式为“{video_id}-{video_frame}”
annotations- 边界框由其在图像内左上角的像素坐标 (x_min, y_min) 及其宽度和高度(以像素为单位)描述。

可视化标注

其中,只有4919张图片有标注

import pandas as pd
train_df = pd.read_csv('../input/tensorflow-great-barrier-reef/train.csv')
train_df = train_df[train_df['annotations'] != "[]"]
sum(train_df['video_id'] == 0), sum(train_df['video_id'] == 1), sum(train_df['video_id'] == 2)

视频0: 2143张有目标
视频1: 2099张有目标
视频2: 677张有目标

Bbox长宽比例分析

4、评价指标

F2-Score
选择F2指标目的是为了尽量不漏检允许一些FP. 因此处理FN比处理FP要重要.

5、对赛题标签的理解

划分数据集时,为了避免数据泄露,可以对0,1视频进行训练。2视频进行线下验证

5.1、筛选出有标注的数据

import pandas as pd
import sklearn
from sklearn.model_selection import train_test_split
import numpy as np
import pandas as pd
import os
import matplotlib.pyplot as plt
import json
import glob
import pycocotools
from pycocotools import mask
import random
import cv2
import re
import asttrain_df = pd.read_csv('../input/tensorflow-great-barrier-reef/train.csv')
train_df = train_df[train_df['annotations'] != "[]"]

5.2、生成bbox函数

def get_boxes(row):"""Return the bboxes for a given row as a 3D matrix """return pd.DataFrame(row['annotations'], columns=['x', 'y', 'width', 'height']).astype(float).values

5.3、生成标注文件

output_train_json_dict = {"images": [],"annotations": [],"categories": []
}
output_test_json_dict = {"images": [],"annotations": [],"categories": []
}
category_dict = {"id": 1, "name": "starfish", "supercategory": "none"}
output_train_json_dict["categories"].append(category_dict)
output_test_json_dict["categories"].append(category_dict)
annot_train_id = 0
annot_test_id = 0
annot_id = 0
from tqdm.notebook import tqdm
for f in tqdm(df_train.itertuples()):img_path = '../input/tensorflow-great-barrier-reef/train_images/video_' + str(f[1]) + '/' + f[5].split('-')[1] + '.jpg'img = cv2.imread(img_path)height, width, channels = img.shapeimg_info = {"id": f[0],"width": width,"height": height,"file_name": img_path}if f[1] != 2:output_train_json_dict["images"].append(img_info)else:output_test_json_dict["images"].append(img_info)if f[6] != '[]':bbox_list = ast.literal_eval(f[6])for bbox in bbox_list:if bbox['height'] + bbox['y'] > 720:bbox['height'] = 720 - bbox['y']annot = {"category_id": 1,"bbox": [bbox['x'], bbox['y'], bbox['width'], bbox['height']],"id": annot_id,"image_id": f[0],"area": bbox['width'] * bbox['height'],"segmentation": [],"iscrowd": 0}if f[1] != 2:output_train_json_dict["annotations"].append(annot)annot_train_id += 1annot_id = annot_train_idelse:output_test_json_dict["annotations"].append(annot)annot_test_id += 1annot_id = annot_test_idwith open('train_starfish.json', 'w') as f:output_json = json.dumps(output_train_json_dict)f.write(output_json)
with open('test_starfish.json', 'w') as f:output_json = json.dumps(output_test_json_dict)f.write(output_json)

6、Baseline流程

Baseline以简单的Faster-RCNN入手 (详细见baseline README文件)
安装编译mmdet
定义数据
修改配置文件
添加测试脚本
调参提交

7、赛题难点思考

1、如何利用无目标图片
2、如何有效利用连续帧中目标处理(如下两图为连续帧)


Kaggle-海底海星目标检测Baseline相关推荐

  1. 基于ppyoloe-sod海星目标检测

    0 赛事背景说明 澳大利亚令人惊叹的美丽大堡礁是世界上最大的珊瑚礁,拥有 1,500 种鱼类.400 种珊瑚.130 种鲨鱼.鳐鱼和种类繁多的其他海洋生物. 不幸的是,珊瑚礁正受到威胁,部分原因是一种 ...

  2. 机器学习笔记 - Kaggle竞赛 帮助保护大堡礁,棘冠海星目标检测参赛经历

    一.Kaggle竞赛 在上一篇中说明了Kaggle的开放式比赛的参加和提交结果,然后最近参加并了解了非开放式代码竞赛的过程,从中也收获不少. 机器学习笔记 - 参加Kaggle手写体数字识别(MNIS ...

  3. kaggle往期赛 | 海星目标检测比赛银牌经验分享

    来源:投稿 作者:摸奖成功 编辑:学姐 比赛经验 此次比赛名次: 最终获得前2%的成绩,简单点就是银牌

  4. Kaggle——海星目标检测比赛

    文章目录 一.

  5. 奇怪的知识增加了!声呐图像的成像原理及目标检测baseline

    最近,我们举办了一个水下目标检测算法赛(声学图像赛项) 声学好懂,那啥叫声学图像?刚看到数据集的图片,我也是懵的 唯一的感觉是"金色的,怪好看的

  6. 初学者必看,提供海星检测项目从零开始小目标检测sota算法(ppyoloe-sod)

    我以我的一个项目进行介绍,各位如果想运行这些程序的话,可以跳转到相应的百度的页面,我放到底下啦.基于ppyoloe-sod海星目标检测(小目标检测) - 飞桨AI Studio 0 赛事背景说明 澳大 ...

  7. CVPR2020 | MAL:联合解决目标检测中的定位与分类问题,自动选择最佳anchor

    点击上方"AI算法修炼营",选择"星标"公众号 精选作品,第一时间送达 本文是收录于CVPR2020的工作,其实文章在去年就挂在了网上,整体思路还算不错.具体来 ...

  8. Kaggle竞赛中使用YOLOv5将目标检测的性能翻倍的心路历程

    导语:本文的原作者是一位名叫Mostafa Ibrahim的外国友人,简要记录了其在参加kaggle目标检测比赛中,从建立基线到一步一步的优化过程,最终将performance提升了一倍,我觉得是一篇 ...

  9. mmdetection水下海鲜目标检测

    向AI转型的程序员都关注了这个号???????????? 人工智能大数据与深度学习  公众号:datayx 任务:在真实海底图片数据中检测出不同海产品(海参.海胆.扇贝.海星)的位置 数据描述 训练集 ...

最新文章

  1. 重磅直播|基于激光雷达的感知、定位导航应用
  2. 昊天善圈浅谈比特币这个类型区块链应用技术的特点及作用
  3. DIV+CSS 网页布局之:三列布局
  4. python 机器学习 爬取关键字_5行Python就能爬取 3000+ 上市公司的信息?
  5. JEE_Ajax技术
  6. 【转载】Android编译系统Makefile(Android.mk)写法
  7. 【免费毕设】ASP.NET 网上选课系统的设计与实现(源代码+lunwen)
  8. java线程同步: synchronized详解(转)
  9. 12年高级工程师的“飞升之路”,android嵌入式开发实战pdf
  10. 隐私问题不想用自己手机收验证码怎么办?
  11. 超标量处理器设计 姚永斌 第2章 Cache 摘录
  12. 用易语言开发的ffmpeg转码工具
  13. 【Java】日期格式化的三种方式
  14. 基于echarts的数据可视化模板[开箱即用]
  15. 《自抗扰控制技术》——第一遍阅读
  16. Boomzap一个虚拟游戏开发工作室的成功经验
  17. Java集合基础:2. List接口和Set接口
  18. Win系统EPUB阅读软件评测
  19. 龙芯+银河麒麟QT环境配置+fpm打包
  20. 【删除重复数据,仅保留一条-mysql】

热门文章

  1. Markdown画流程图、时序图(顺序图)、甘特图
  2. git --- git tag用法
  3. 动态 obj 的 key 值设置 {key1:key1}
  4. 【Java二十周年】爱上Java无法自拔
  5. 不愧是腾讯出来的,太厉害了...
  6. 关于VS2010中键盘加速键无效的问题
  7. 微软副总裁尤瑟夫·梅赫迪对必应和“病”同音的解释
  8. React路由 简单实现一个导航
  9. python过去电脑网关不可用怎么办_电脑显示默认网关不可用的解决技巧
  10. MYSQL 一行数据拆分成多行数据