科大讯飞AI大赛:玉米雄穗识别挑战赛

科大讯飞AI大赛:玉米雄穗识别挑战赛

赛题名称:

玉米雄穗识别挑战赛

赛题类型:

计算机视觉、物体检测

赛题任务:

通过田间图像正确识别植株雄穗,并进行标注。

赛事背景

随着中国经济发展和人口增长,对农业生产的需求不断增加,玉米作为重要的粮食作物之一,一直处于国家粮食安全和生态保护的重要位置。玉米制种产业是玉米生产的基础保障。随着玉米制种技术的不断发展,不育系生产由于无需去雄,节省劳动力,已经越来越普及。在玉米种子生产过程中,母本去雄作为种子纯度保障至关重要的环节,准确识别母本去雄后残留雄穗并去除是提升种子质量的重要手段。

赛事任务

在玉米花期,通过田间图像正确识别植株雄穗,并进行标注。

数据说明

本次比赛将会为选手提供玉米处于花期阶段的图片作为数据集,选手需要根据训练集进行训练,对测试集数据进行标定。

数据集已上传至资源。

样本标注

评估指标


部分代码

python 复制代码
import os
import glob
import shutil

# 创建验证集目录
os.makedirs('val', exist_ok=True)
os.makedirs('val/labels', exist_ok=True)
os.makedirs('val/images', exist_ok=True)

# 获取训练集标签和图像路径
labels = glob.glob('./train/labels/*')
images = glob.glob('./train/images/*')

# 排序路径列表
labels.sort()
images.sort()

# 移动最后 50 个样本到验证集
for x, y in zip(labels[-50:], images[-50:]):
    shutil.move(x, 'val/labels/')  # 移动标签文件
    shutil.move(y, 'val/images/')  # 移动图像文件
python 复制代码
import os
import warnings
from pathlib import Path

from ultralytics import YOLO

if __name__ == '__main__':
    # 忽略警告
    warnings.filterwarnings('ignore')

    # 取消设置 CUDA_VISIBLE_DEVICES
    os.environ.pop("CUDA_VISIBLE_DEVICES", None)

    # 初始化模型
    model_path = Path('yolov8m.pt')

    # 确保路径正确
    if not model_path.exists():
        raise FileNotFoundError(f"Model path {model_path} does not exist.")

    model = YOLO(str(model_path))

    # 创建必要的目录
    project_dir = Path('runs/train/yolov8m_finetuned')
    project_dir.mkdir(parents=True, exist_ok=True)

    # 开始训练
    results = model.train(
        data="./yolo.yaml",
        epochs=200,  # 增加训练轮数
        device="cuda:0",
        batch=16,
        lr0=0.01,  # 初始学习率
        lrf=0.001,  # 最终学习率
        optimizer='AdamW',
        augment=True,  # 启用数据增强
        save_period=10,  # 每 10 轮保存一次模型
        patience=20,  # 早停法,连续 20 轮没有提升则停止训练
        cache=True,  # 使用缓存加速数据加载
        workers=8,  # 增加数据加载线程数
        project=str(project_dir),  # 保存结果的目录
        name='yolov8m_finetuned'  # 保存的模型名称
    )
python 复制代码
import os
import glob
from ultralytics import YOLO

# 加载最优模型
## model = YOLO("runs/detect/train/weights/best.pt")
model = YOLO("runs/train/yolov8m_finetuned/yolov8m_finetuned2/weights/best.pt")

# 创建提交目录
os.makedirs('submit', exist_ok=True)

# 获取测试图片路径
test_paths = glob.glob('test/*')

# 遍历测试图片路径
for path in test_paths:
    # 进行预测
    results = model(path, save_txt=False)  # 确保不保存预测结果为文本文件
    predictions = results[0]
    
    # 打开文件以写入预测结果
    output_path = "./submit/" + os.path.basename(path).split('.')[0] + '.txt'
    with open(output_path, 'w') as file:
        boxes = predictions.boxes
        for box in boxes:
            cls = int(box.cls.item())
            xywhn = box.xywhn[0].tolist()
            # Write line to file in YOLO label format: cls x y w h
            file.write(f"{cls} {xywhn[0]} {xywhn[1]} {xywhn[2]} {xywhn[3]}\n")

结束

仅仅提供思路,完整需要学习整体架构

相关推荐
艾上编程5 分钟前
第三章——爬虫工具场景之Python爬虫实战:学术文献摘要爬取,助力科研高效进行
开发语言·爬虫·python
Hi_kenyon14 分钟前
FastAPI+VUE3创建一个项目的步骤模板(二)
python·fastapi
Exploring15 分钟前
从零搭建使用 Open-AutoGML 搜索附近的美食
android·人工智能
阿里云大数据AI技术28 分钟前
在 DataWorks 中一键部署大模型,即刻用于数据集成和数据开发
人工智能
拉普拉斯妖10828 分钟前
DAY38 Dataset和DataLoader
python
AI科技星34 分钟前
质量定义方程常数k = 4π m_p的来源、推导与意义
服务器·数据结构·人工智能·科技·算法·机器学习·生活
机器之心1 小时前
OpenAI推出全新ChatGPT Images,奥特曼亮出腹肌搞宣传
人工智能·openai
机器之心1 小时前
SIGGRAPH Asia 2025:摩尔线程赢图形顶会3DGS挑战赛大奖,自研LiteGS全面开源
人工智能·openai
_Stellar1 小时前
从输入到输出:大语言模型一次完整推理简单解析
人工智能·语言模型·自然语言处理