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

结束

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

相关推荐
阿坡RPA12 小时前
手搓MCP客户端&服务端:从零到实战极速了解MCP是什么?
人工智能·aigc
用户277844910499312 小时前
借助DeepSeek智能生成测试用例:从提示词到Excel表格的全流程实践
人工智能·python
机器之心12 小时前
刚刚,DeepSeek公布推理时Scaling新论文,R2要来了?
人工智能
算AI14 小时前
人工智能+牙科:临床应用中的几个问题
人工智能·算法
JavaEdge在掘金14 小时前
ssl.SSLCertVerificationError报错解决方案
python
我不会编程55515 小时前
Python Cookbook-5.1 对字典排序
开发语言·数据结构·python
凯子坚持 c15 小时前
基于飞桨框架3.0本地DeepSeek-R1蒸馏版部署实战
人工智能·paddlepaddle
老歌老听老掉牙15 小时前
平面旋转与交线投影夹角计算
python·线性代数·平面·sympy
满怀101515 小时前
Python入门(7):模块
python
无名之逆15 小时前
Rust 开发提效神器:lombok-macros 宏库
服务器·开发语言·前端·数据库·后端·python·rust