IEEE UV 2022 “Vision Meets Algae” Object Detection Challenge BaseLine

前言

上午看到天池有了一个新的Challenge,没什么精力去想方案写paper打比赛,但是花了一上午“站在巨人的肩膀上”写了一个Baseline供大家参考.

首先报名参加,下载数据集并解压,大致长这样

这里test_images下面原始是没有.cache的,是后面测试的时候再生成的.看一下比赛简介,这是关于目标检测的一个比赛,

训练集537张图片,测试集430张;里面共包含8类藻类,标注文件的格式是yolo格式,也就是txt文件每一行开头是类别,后面是坐标(center,w,h)形式

对于一些不熟悉的目标进行检测,首先就要了解待检测目标的特点,这里官方也给出了各个类别藻类的大小,可以看出在尺度上还是有一定差异的.打开下载的数据,迅速浏览一下也能看出大小差异.

大致了解比赛背景和数据内容后就可以开始动手了

开始

1. 制作数据(可选)

这里给出的train并没有切分训练集和验证集,可以切分保证每次训练验证的数据不是训练输入过的.当然也可以不切分,毕竟本身训练图片并不是很多,537张图来说数据量并不是很大可以全部训练

如果切分,可以参考下面的代码

import pathlib, shutil
import numpy as np
from sklearn.model_selection import train_test_split
import pandas as pd# before run code ,please create folders like below
src_path = '/home/shelgi/ssd/IEEEUV2022/train/'
label_val_path = '/home/shelgi/ssd/IEEEUV2022/datasets/labels/val/'
image_val_path = '/home/shelgi/ssd/IEEEUV2022/datasets/images/val/'
label_train_path = '/home/shelgi/ssd/IEEEUV2022/datasets/labels/train/'
image_train_path = '/home/shelgi/ssd/IEEEUV2022/datasets/images/train/'# find image path from src_path and get label(class)
src_image_path=[str(i).split("/")[-1].split(".")[0] for i in pathlib.Path(src_path+"images").glob("*")]# train images total 537
print(len(src_image_path))labels=[]
# get class
for i in src_image_path:with open(src_path+"labels/"+i+".txt",'r') as f:labels.append(int(f.read()[0]))f.close()data=pd.DataFrame({"path":src_image_path,"class":labels})
train_path,test_path,_,_=train_test_split(data['path'],data['class'],test_size=0.1,stratify=data['class'])# copy images and labels to create new datasets
for i in train_path:shutil.copyfile(src_path+"images/"+i+".png",image_train_path+i+".png")shutil.copyfile(src_path + "labels/" + i + ".txt", label_train_path + i + ".txt")for i in test_path:shutil.copyfile(src_path+"images/"+i+".png",image_val_path+i+".png")shutil.copyfile(src_path + "labels/" + i + ".txt", label_val_path + i + ".txt")

这里每一个txt里面只有一类,然后为了切分后类别均衡,加了stratify.使用切分数据集应该会有下面的结构

同样的,忽略掉.cache

2.训练

训练这里我选择的就是直接用目前SOTA yoloV7

根据官网的介绍,下载预训练权重,然后修改自己data下的yaml路径,cfg中training的yaml修改一下nc=8,然后开始训练

python train_aux.py --workers 8 --device 0 --batch-size 16 --data data/custom.yaml --img 640 640 -cfg cfg/training/yolov7-e6e-custom.yaml --weights 'yolov7-e6e_training.pt' --name yolov7-e6e --hyp data/hyp.scratch.p6.yaml

因为是Baseline,所以我没进行任何调参完全用原有的参数,这个时候只需要调一下风扇转速,然后去干点其他事(因为是在我自己电脑上跑的,所以batchsize最大只有16,图片大小也只能640)

3.测试并提交结果

差不多十点多开始训,然后中午吃饭回来训练结束,300个epoch训了差不多1.9个小时

训练好了模型,利用模型对测试集图片进行推理,得到结果

python test.py --weights runs/train/exp/weights/best.pt --save-json --data data/custom.yaml --task test

然后runs/test下就有best_predictions.json,去官网提交

mAP[@.5:.95]在测试集上0.4,排名131(居然不是垫底),没有任何调参优化,没引入任何对于小目标检测的trick,感觉这个效果还是非常满意的,只能说yoloV7牛皮!!!

最后

今天正好是1024总得发点什么,上午正愁着没东西发突然逛着找到这个比赛正好水一篇Blog出来.要说改进想法当然也是有的,不过看到要小paper和视频介绍果断放弃,实在没精力.

  • 感觉图片大小可以用1024来训练,毕竟原图(2048,2880)并不小,大图片训练可以对小目标更清晰
  • 加点常用的注意力
  • 多尺度和上下文学习
  • 仔细观察训练图片对象本身找找特点


更新

用所有数据训练,增大训练图片大小(640->960),仅仅这么简单的操作直接提升到0.4688.

碍于自己电脑显卡显存限制,无法尝试更大图片大小进行训练.这次训练放着训了一晚上,后续准备弄服务器上去等他自己跑

IEEE UV 2022 “Vision Meets Algae” Object Detection Challenge BaseLine相关推荐

  1. 【目标检测竞赛总结】IEEE UV 2022 “Vision Meets Algae” Object Detection Challenge

    比赛地址 https://tianchi.aliyun.com/competition/entrance/532036/introduction?spm=5176.12281957.0.0.54963 ...

  2. IEEE UV 2022 “Vision Meets Algae” 目标检测竞赛正式启动!

    VisAlgae 2022 简介    第一届国际"Vision Meets Algae"比赛和研讨会2022将与IEEE UV 2022新型智慧城市国际会议同时举行.该研讨会的重 ...

  3. ViTDet:Exploring Plain Vision Transformer Backbonesfor Object Detection(arXiv 2022)

    最前面是论文翻译,中间是背景+问题+方法步骤+实验过程,最后是文中的部分专业名词介绍(水平线分开,能力有限,部分翻译可能不太准确) 探索用于目标检测的普通视觉Transformers骨干 在本文中,& ...

  4. [读论文]Referring Camouflaged Object Detection

    摘要 In this paper, we consider the problem of referring camouflaged object detection (Ref-COD), a new ...

  5. object detection

    原地址:https://handong1587.github.io/deep_learning/2015/10/09/object-detection.html Object Detection Pu ...

  6. Object Detection(目标检测神文)

    目标检测神文,非常全而且持续在更新.转发自:https://handong1587.github.io/deep_learning/2015/10/09/object-detection.html,如 ...

  7. Object Detection经典代码与文章

    转载自Object Detection Papers Deep Neural Networks for Object Detection paper: http://papers.nips.cc/pa ...

  8. Lidar Object detection

    OpenPcdet Backbone 2d & RPN 3d object detection的一般的pipeline Anchor based vs Center based RPN SEC ...

  9. 点云 3D 天气数据增强 - LiDAR Snowfall Simulation for Robust 3D Object Detection (CVPR 2022)

    点云 3D 天气数据增强 - LiDAR Snowfall Simulation for Robust 3D Object Detection - 用于鲁棒3D目标检测的激光雷达降雪模拟(CVPR 2 ...

最新文章

  1. 8E1转10M/100M以太网===协转
  2. 容易答错的java面试题_Java程序员面试中最容易答错的8道面试题,你中招了吗?...
  3. 利用Pytorch的C++前端(libtorch)读取预训练权重并进行预测
  4. ROS中使用Eigen库[不定期更新]
  5. 苹果公布WWDC20大会安排、Snapchat上线小程序功能、QUIC和HTTP/3 将定稿|Decode the Week...
  6. 山东理工大学计算机学院学号,计算机组成原理课程设计--山东理工大学计算机学院...
  7. 红橙Darren视频笔记 状态栏设置颜色 获取高度 设置全屏
  8. 在C#中对列表/数组进行碎片整理——关闭所有空白
  9. 将“早期版本的Windows”改名
  10. 编程基本功:BUG测试步骤尽可能用文档简化,突出重点
  11. 数据挖掘导论(一):数据挖掘的定义,方法,用途
  12. PowerDesigner 反向工程获取数据库表结构
  13. 卸载精灵 v4.2 是什么
  14. Cropper使用(图片裁切)
  15. java 读取zip文件_JAVA实现zip文件内容读取及解压
  16. pandas结合matplotlib将excel数据可视化
  17. 一个简单的自定义alert方法
  18. 计算机网络-无线网络
  19. es拼音分词 大帅哥_elasticsearch 拼音+ik分词,spring data elasticsearch 拼音分词
  20. riak mysql_Riak安装

热门文章

  1. ScaleFlux加入阿里云PolarDB开源数据库社区
  2. 想过个浪漫情人节?不妨先看看这些城市和图书
  3. 程序设计题目:合影效果_C++参考解法
  4. 黄金螺旋黄金比例下载_什么是黄金形象?
  5. 戴尔插电源对计算机电池,dell笔记本电脑电池在充满电量的时候能否一直插电使用...
  6. ![CDATA[说说cnBeta的“文明用语”]]
  7. merge java方法_Java HashMap merge() 方法
  8. perl 数组引用_Perl中数组引用的魔力
  9. 三、连接MOBA建文件夹配置jdk环境变量,hadoop环境变量。hadoop的本地部署使用
  10. Photoshop 什么是位图?什么是矢量图?它们二者间有什么区别,不妨来看看