Datawhale干货
方向:计算机视觉,科大讯飞赛事
赛题名称:遥感图像倾斜舰船小目标检测挑战赛
赛题类型:计算机视觉、物体检测
捡漏赛题:8月31截止,目前提交人数14人,目前拿奖率71%
赛题举办:上海海事大学
赛题链接👇:
https://challenge.xfyun.cn/topic/info?type=tilting-ship&ch=vWxQGFU
赛题背景
遥感图像中的小目标检测也是面临重大挑战的问题之一。随着遥感技术的发展和遥感图像数据的大量获取,小目标检测成为了遥感图像处理的重要研究方向。然而,由于小目标物体通常尺寸较小、形状复杂、背景复杂多变,目标检测的精度和效率很难得到保证。
目前,基于深度学习的小目标检测技术逐渐成熟,但在实际应用中,面临着许多挑战。比如,小目标物体数量多、目标尺寸小、背景复杂、光照条件差、噪声干扰大等问题。这些问题给小目标检测的精度和效率带来了很大的影响。
赛事任务
针对这些挑战,可以通过提高算法的鲁棒性和可靠性,改善数据质量、优化算法参数等方式来提升小目标检测的性能。同时,通过引入多种检测手段、加强数据清洗等措施来防止小目标检测中的误检和漏检问题。
赛题数据集
在给定的遥感图像数据集上,参赛者需要使用目标检测算法对图像中的倾斜舰船目标进行检测和识别,输出目标的类别和检测框信息。
初赛数据集:数据集包含遥感图像,图像中可能会包含多个小目标,每个目标的类别和位置信息都有对应的标注文件。
复赛数据集:数据集包含多种成像模式、多种极化方式、多种分辨率切片,通过自动标注和人工修正相结合的方式高效标注,具有旋转方向任意、长宽比大、小目标占比高和场景丰富的特点。
评价指标
本模型依据提交的结果文件,采用mAP@.5:0.95进行评价。
赛题思路
赛题是一个典型的物体检测任务,且赛题已经处理好了数据集为YOLO格式。接下来只需要定义YOLO 配置文件,就可以训练。
dataset.yaml
# Train/val/test sets as
## 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
#path: ../datasets/coco128 # dataset root dir
train: /home/lyz/work/kaggle/科大讯飞2023/遥感图像倾斜舰船小目标检测挑战赛/yolo-dataset/images/train # train images (relative to 'path') 128 images
val: /home/lyz/work/kaggle/科大讯飞2023/遥感图像倾斜舰船小目标检测挑战赛/yolo-dataset/images/val # val images (relative to 'path') 128 images
# test: # test images (optional)
# Classes
nc: 1 # number of classes
names: ['ship'] # class names
训练代码
from ultralytics import YOLO
model = YOLO("./yolov8m.pt")
results = model.train(data="./yolo-dataset/dataset.yaml", epochs=20, batch=3, imgsz=1280, device='0')
预测代码
from ultralytics import YOLO
import glob
model = YOLO("./best.pt")
for path in glob.glob('/work/data/object-detection-for-tilting-ships-test-set/*'):
predictions = model.predict(path, imgsz=640)
with open("/work/output/" + path.split('/')[-1][:-4] + '.txt', 'w') as file:
for idx, prediction in enumerate(predictions[0].boxes.data):
cls = int(predictions[0].boxes.cls[idx].item())
cls = 'ship'
score = predictions[0].boxes.conf[idx].item()
file.write(f"{cls} {score} {int(prediction[0].item())} {int(prediction[1].item())} {int(prediction[2].item())} {int(prediction[3].item())}\n")
模型打包和提交
!tar -cvzf tilting-ship.tar.gz tilting-ship
!s3cmd put tilting-ship.tar.gz s3://ai-competition/0fs76epw/tilting-ship.tar.gz
完整代码见👇:
https://github.com/datawhalechina/competition-baseline/tree/master/competition/%E7%A7%91%E5%A4%A7%E8%AE%AF%E9%A3%9EAI%E5%BC%80%E5%8F%91%E8%80%85%E5%A4%A7%E8%B5%9B2023
干货学习,点赞三连↓