辣椒病虫害图像识别挑战赛

简介: 辣椒病虫害图像识别挑战赛

一、辣椒病虫害图像识别挑战赛简介


比赛地址:challenge.xfyun.cn/topic/info?…


1.赛事背景


农作物病虫害严重制约着农业生产,因为农作物病虫害种类多、密度大,极易造成农作物大量减产。同时由于传统人眼识别病虫害的方法速度较慢、准确度较低,会导致农药的滥用,破坏自然环境。如今随着精准农业和智慧农业概念的兴起和发展,利用信息技术辅助农业生产,实现对农作物病虫害的智能识别和检测,以减少不必要的农药喷施,对保护生态系统均衡,保障农作物安全生产,提高农作物的质量方面,有着十分重要的促进作用。


2.赛事任务


最为有效的病虫害识别方法是图片识别,本次大赛提供了大量农民在田间地头拍摄的辣椒的病虫害图片,涉及病虫害种类较多,参赛选手需基于提供的样本构建模型,实现辣椒的病虫害图像识别。


3.数据介绍


本次比赛为参赛选手提供了辣椒的病虫害图像数据:包括图像及其所属病虫害标签。数据主体为农民在不同环境条件下拍摄的辣椒的农作物图像,每张图像的主体突出度,背景复杂程度、光照条件,图像清晰度均存在一定差别。 其中疾病分类:

  • 炭疽病 d1
  • 疫病 d2
  • 用药不当 d3
  • 病毒病 d4
  • 温度不适 d5
  • 螨虫 d6
  • 细菌性病害 d7
  • 根腐病 d8
  • 缺素 d9
  • 脐腐病 d10
  • 蓟马 d11


二、PaddleX环境准备


飞桨图像识别套件PaddleClas是飞桨为工业界和学术界所准备的一个图像识别任务的工具集,助力使用者训练出更好的视觉模型和应用落地。此次计划使用端到端的PaddleClas图像分类套件来快速完成分类。此次使用PaddleClas框架完成比赛。

!pip install --upgrade paddlex >log.log
!pip list|grep paddlex


三、数据准备


1.数据解压缩


#解压缩
!unzip -qoa data/data153190/辣椒病虫害图像识别挑战赛公开数据.zip -d data/
# 重命名目录
!mv data/└▒╜╖▓б│ц║ж═╝╧ё╩╢▒Ё╠Ї╒╜╚№╣л┐к╩¤╛▌ data/pepper
!mv data/pepper/└р▒Ё║м╥х.txt data/pepper/label.txt
!mv data/pepper/╠с╜╗╩╛└¤.csv data/pepper/test.csv
!head data/pepper/label.txt


2.数据集划分


!paddlex --split_dataset --format ImageNet --dataset_dir data/pepper/train --val_value 0.1


3.导入PaddleX库


# 环境变量配置,用于控制是否使用GPU
# 说明文档:https://paddlex.readthedocs.io/zh_CN/develop/appendix/parameters.html#gpu
import os
os.environ['CUDA_VISIBLE_DEVICES'] = '0'
import paddle
import paddlex as pdx
from paddlex import transforms as T


4.数据增强


# 定义训练和验证时的transforms
# API说明:https://github.com/PaddlePaddle/PaddleX/blob/develop/docs/apis/transforms/transforms.md
train_transforms = T.Compose([
    T.RandomCrop(crop_size=224),
    T.RandomHorizontalFlip(),
    T.RandomDistort(),
    T.RandomBlur(prob=0.1),
    T.Normalize()])
eval_transforms = T.Compose([
    T.ResizeByShort(short_size=256),
    T.CenterCrop(crop_size=224),
    T.Normalize()
])


5.定义数据集


# 定义训练和验证所用的数据集
# API说明:https://github.com/PaddlePaddle/PaddleX/blob/develop/docs/apis/datasets.md
train_dataset = pdx.datasets.ImageNet(
    data_dir='data/pepper/train',
    file_list='data/pepper/train/train_list.txt',
    label_list='data/pepper/train/labels.txt',
    transforms=train_transforms,
    shuffle=True)
eval_dataset = pdx.datasets.ImageNet(
    data_dir='data/pepper/train',
    file_list='data/pepper/train/val_list.txt',
    label_list='data/pepper/train/labels.txt',
    transforms=eval_transforms)
2022-06-28 18:32:02 [INFO]  Starting to read file list from dataset...
2022-06-28 18:32:02 [INFO]  6804 samples in file data/pepper/train/train_list.txt
2022-06-28 18:32:02 [INFO]  Starting to read file list from dataset...
2022-06-28 18:32:02 [INFO]  752 samples in file data/pepper/train/val_list.txt


四、模型训练


1.模型初始化


num_classes = len(train_dataset.labels)
model = pdx.cls.DarkNet53(num_classes=num_classes)
# 自定义优化器:使用CosineAnnealingDecay
train_batch_size = 256
num_steps_each_epoch = len(train_dataset) // train_batch_size
num_epochs = 100
scheduler = paddle.optimizer.lr.CosineAnnealingDecay(
    learning_rate=.001, T_max=num_steps_each_epoch * num_epochs)
warmup_epoch = 5
warmup_steps = warmup_epoch * num_steps_each_epoch
scheduler = paddle.optimizer.lr.LinearWarmup(
    learning_rate=scheduler,
    warmup_steps=warmup_steps,
    start_lr=0.0,
    end_lr=.001)
custom_optimizer = paddle.optimizer.Momentum(
    learning_rate=scheduler,
    momentum=.9,
    weight_decay=paddle.regularizer.L2Decay(coeff=.00002),
    parameters=model.net.parameters())


2.开始训练


model.train(
    num_epochs=num_epochs,
    train_dataset=train_dataset,
    train_batch_size=train_batch_size,
    eval_dataset=eval_dataset,
    optimizer=custom_optimizer,
    save_dir='output/darknet53',
    save_interval_epochs=2,
    use_vdl=True)


五、预测并提交


重启环境,释放现存,预测结果

# test_images文件夹批量预测
import pathlib
import os
import paddlex as pdx
# 载入模型
model = pdx.load_model('output/darknet53/best_model')
# 结果文件
f=open("result.csv","w")
f.write('image,label\n')
# 遍历文件夹
test_data_dir = pathlib.Path('data/pepper/test')
# 不带目录,直接图片
test_files=list(test_data_dir.glob('*.jpg'))
for myfile in test_files:    
    result = model.predict(str(myfile))
    filename=os.path.basename(myfile)
    # 写入文件
    f.write(f"{filename},{result[0]['category']}\n")
f.close()
2022-06-29 07:11:53 [INFO]  Model[DarkNet53] loaded.
Corrupt JPEG data: 114 extraneous bytes before marker 0xd9
Invalid SOS parameters for sequential JPEG

下载提交即可获得成绩

image.png


目录
相关文章
|
机器学习/深度学习 编解码 算法
【YOLO系列】YOLOv1论文超详细解读(翻译 +学习笔记)
【YOLO系列】YOLOv1论文超详细解读(翻译 +学习笔记)
2933 0
【YOLO系列】YOLOv1论文超详细解读(翻译 +学习笔记)
|
4月前
|
机器学习/深度学习 人工智能 算法
无人机植物病害目标检测数据集(1500 张图片已划分、已标注)| AI训练适用于目标检测任务
本数据集含1500+张无人机航拍农田图像,已划分训练/验证/测试集并精准标注“healthy”与“stressed”两类目标,支持YOLO等主流检测模型。覆盖杂草、阴影、水渍等复杂场景,适用于农业病害识别、作物健康评估与智能巡检系统开发。
|
8月前
|
机器学习/深度学习 人工智能 监控
番茄叶片病害检测数据集(千张图片已划分)| AI训练适用于目标检测任务
在农业领域,植物病害检测是确保作物健康和提高农业生产效率的关键任务之一。随着计算机视觉技术的快速发展,基于深度学习的目标检测方法成为了病害识别的主流手段。为此,专门针对番茄叶片病害检测任务,我们推出了一个经过精心设计的番茄叶片病害检测数据集。该数据集包含了10,853张带标签的图像,覆盖了10种常见的番茄叶片病害类型,支持YOLO等先进的目标检测模型训练,旨在帮助研究人员和开发者提高农作物病害自动化检测的能力。
1356 40
番茄叶片病害检测数据集(千张图片已划分)| AI训练适用于目标检测任务
|
8月前
|
数据采集 缓存 搜索推荐
实战:用Elasticsearch构建爬虫数据搜索引擎
互联网时代,数据即生产力。本文手把手教你用Elasticsearch构建高效爬虫搜索引擎,解决海量网页数据检索难题。从环境搭建、索引设计到数据导入,涵盖全文搜索、多条件查询、高亮排序等核心功能,并分享分片优化、缓存策略、冷热分离等性能秘籍,结合电商比价实战案例,助你实现毫秒级响应的智能搜索系统。
409 0
实战:用Elasticsearch构建爬虫数据搜索引擎
|
10月前
|
机器学习/深度学习 人工智能 机器人
目标检测数据集 — 田间杂草检测数据集(4000张图片已划分、已标注)
未来,随着数据量的进一步扩充,可以细分更多类别,如不同种类的杂草与不同生长阶段的作物,从而实现更精细化的识别与管理。通过该数据集,研究人员与开发者可以为 农业现代化与智慧农业 提供坚实的数据基础,加速农业 AI 技术在实际生产中的落地。
|
机器学习/深度学习 人工智能 自然语言处理
详解人工智能(概念、发展、机遇与挑战)
详解人工智能(概念、发展、机遇与挑战)
|
人工智能 自然语言处理 PyTorch
Sa2VA:别再用PS抠图了!字节跳动开源Sa2VA:一句话自动分割视频,连头发丝都精准
Sa2VA 是由字节跳动等机构联合推出的多模态大语言模型,结合 SAM2 和 LLaVA 实现对图像和视频的精确分割和对话功能。
1428 15
Sa2VA:别再用PS抠图了!字节跳动开源Sa2VA:一句话自动分割视频,连头发丝都精准
|
机器学习/深度学习 算法 文件存储
RT-DETR改进策略【模型轻量化】| MoblieNetV3:基于搜索技术和新颖架构设计的轻量型网络模型
RT-DETR改进策略【模型轻量化】| MoblieNetV3:基于搜索技术和新颖架构设计的轻量型网络模型
584 4
RT-DETR改进策略【模型轻量化】| MoblieNetV3:基于搜索技术和新颖架构设计的轻量型网络模型
|
存储 安全 数据安全/隐私保护
如何快速部署 ERPNext 多版本?
本文介绍了 ERPNext 多版本快速部署的几种方法,包括基于 Docker 的容器化部署、使用 websoft9 工具的一键部署以及虚拟机部署方案。每种方法适用于不同场景,如功能测试、非技术用户操作或高隔离需求环境。同时涵盖多版本使用的典型场景,如升级测试、团队并行使用和插件兼容性验证,并强调资源分配、数据备份、安全防护等注意事项,助力企业高效管理 ERPNext 多版本应用。