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

结束

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

相关推荐
港股研究社11 分钟前
凌雄科技打造DaaS模式,IT设备产业链由内而外嬗变升级
大数据·人工智能
MJ绘画中文版14 分钟前
灵动AI:科技改变未来
人工智能·ai·ai视频
大模型算法和部署25 分钟前
构建生产级的 RAG 系统
人工智能·机器学习·ai
思通数科大数据舆情1 小时前
开源AI助力医疗革新:OCR系统与知识图谱构建
人工智能·目标检测·机器学习·计算机视觉·目标跟踪·ocr·知识图谱
DuoRuaiMiFa1 小时前
探索 Surya:一款强大的开源 OCR 工具,支持 90 多种语言识别
人工智能·ocr
正义的彬彬侠2 小时前
《近似线性可分支持向量机的原理推导》 拉格朗日函数 公式解析
人工智能·机器学习·支持向量机·svm·近似线性可分支持向量机
x66ccff2 小时前
【python】flash-attn安装
开发语言·python
AI完全体3 小时前
【AI日记】24.10.29 调整战略:做项目,先入行,循序渐进,顺势而为
人工智能·日记
萧鼎3 小时前
Python日志系统详解:Logging模块最佳实践
python·logging·日志