科大讯飞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")

结束

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

相关推荐
Learn Beyond Limits几秒前
Mean Normalization|均值归一化
人工智能·神经网络·算法·机器学习·均值算法·ai·吴恩达
摩羯座-1856903059411 分钟前
爬坑 10 年!京东店铺全量商品接口实战开发:从分页优化、SKU 关联到数据完整性闭环
linux·网络·数据库·windows·爬虫·python
ACERT33315 分钟前
5.吴恩达机器学习—神经网络的基本使用
人工智能·python·神经网络·机器学习
韩立学长28 分钟前
【开题答辩实录分享】以《基于python的奶茶店分布数据分析与可视化》为例进行答辩实录分享
开发语言·python·数据分析
C嘎嘎嵌入式开发39 分钟前
(一) 机器学习之深度神经网络
人工智能·神经网络·dnn
Aaplloo43 分钟前
【无标题】
人工智能·算法·机器学习
大模型任我行43 分钟前
复旦:LLM隐式推理SIM-CoT
人工智能·语言模型·自然语言处理·论文笔记
tomlone1 小时前
AI大模型核心概念
人工智能
2401_831501731 小时前
Python学习之day03学习(文件和异常)
开发语言·python·学习
可触的未来,发芽的智生2 小时前
触摸未来2025.10.06:声之密语从生理构造到神经网络的声音智能革命
人工智能·python·神经网络·机器学习·架构