IEEE UV 2022 “Vision Meets Algae” Object Detection Challenge BaseLine
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相关推荐
- 【目标检测竞赛总结】IEEE UV 2022 “Vision Meets Algae” Object Detection Challenge
比赛地址 https://tianchi.aliyun.com/competition/entrance/532036/introduction?spm=5176.12281957.0.0.54963 ...
- IEEE UV 2022 “Vision Meets Algae” 目标检测竞赛正式启动!
VisAlgae 2022 简介 第一届国际"Vision Meets Algae"比赛和研讨会2022将与IEEE UV 2022新型智慧城市国际会议同时举行.该研讨会的重 ...
- ViTDet:Exploring Plain Vision Transformer Backbonesfor Object Detection(arXiv 2022)
最前面是论文翻译,中间是背景+问题+方法步骤+实验过程,最后是文中的部分专业名词介绍(水平线分开,能力有限,部分翻译可能不太准确) 探索用于目标检测的普通视觉Transformers骨干 在本文中,& ...
- [读论文]Referring Camouflaged Object Detection
摘要 In this paper, we consider the problem of referring camouflaged object detection (Ref-COD), a new ...
- object detection
原地址:https://handong1587.github.io/deep_learning/2015/10/09/object-detection.html Object Detection Pu ...
- Object Detection(目标检测神文)
目标检测神文,非常全而且持续在更新.转发自:https://handong1587.github.io/deep_learning/2015/10/09/object-detection.html,如 ...
- Object Detection经典代码与文章
转载自Object Detection Papers Deep Neural Networks for Object Detection paper: http://papers.nips.cc/pa ...
- Lidar Object detection
OpenPcdet Backbone 2d & RPN 3d object detection的一般的pipeline Anchor based vs Center based RPN SEC ...
- 点云 3D 天气数据增强 - LiDAR Snowfall Simulation for Robust 3D Object Detection (CVPR 2022)
点云 3D 天气数据增强 - LiDAR Snowfall Simulation for Robust 3D Object Detection - 用于鲁棒3D目标检测的激光雷达降雪模拟(CVPR 2 ...
最新文章
- 8E1转10M/100M以太网===协转
- 容易答错的java面试题_Java程序员面试中最容易答错的8道面试题,你中招了吗?...
- 利用Pytorch的C++前端(libtorch)读取预训练权重并进行预测
- ROS中使用Eigen库[不定期更新]
- 苹果公布WWDC20大会安排、Snapchat上线小程序功能、QUIC和HTTP/3 将定稿|Decode the Week...
- 山东理工大学计算机学院学号,计算机组成原理课程设计--山东理工大学计算机学院...
- 红橙Darren视频笔记 状态栏设置颜色 获取高度 设置全屏
- 在C#中对列表/数组进行碎片整理——关闭所有空白
- 将“早期版本的Windows”改名
- 编程基本功:BUG测试步骤尽可能用文档简化,突出重点
- 数据挖掘导论(一):数据挖掘的定义,方法,用途
- PowerDesigner 反向工程获取数据库表结构
- 卸载精灵 v4.2 是什么
- Cropper使用(图片裁切)
- java 读取zip文件_JAVA实现zip文件内容读取及解压
- pandas结合matplotlib将excel数据可视化
- 一个简单的自定义alert方法
- 计算机网络-无线网络
- es拼音分词 大帅哥_elasticsearch 拼音+ik分词,spring data elasticsearch 拼音分词
- riak mysql_Riak安装
热门文章
- ScaleFlux加入阿里云PolarDB开源数据库社区
- 想过个浪漫情人节?不妨先看看这些城市和图书
- 程序设计题目:合影效果_C++参考解法
- 黄金螺旋黄金比例下载_什么是黄金形象?
- 戴尔插电源对计算机电池,dell笔记本电脑电池在充满电量的时候能否一直插电使用...
- ![CDATA[说说cnBeta的“文明用语”]]
- merge java方法_Java HashMap merge() 方法
- perl 数组引用_Perl中数组引用的魔力
- 三、连接MOBA建文件夹配置jdk环境变量,hadoop环境变量。hadoop的本地部署使用
- Photoshop 什么是位图?什么是矢量图?它们二者间有什么区别,不妨来看看