Are you sure you want to delete this task? Once this task is deleted, it cannot be recovered.
NYP b4cd3cab0d | 1 year ago | |
---|---|---|
5169047.md | 1 year ago | |
README.md | 1 year ago |
油茶果由于是花果同期,在采摘时费时费力,并且由于误判,极其容易把未成熟的果子摘下,从而影响整体品质,基于此,利用计算机视觉采摘油茶果成为必然,所以本项目通过yolov3构造了一个油茶果成熟度检测模型。
油茶(Camellia oleifera) 山茶科山茶属油用物种的总称,是我国特有的木本油料树种,与油棕、油橄榄和椰子并称为世界四大木本食用油料植物。
“油茶”有两千余年的栽种历史,不饱和脂肪酸可达90%以上可抑制和预防心脑血管疾病。
本作者欲利用计算机视觉技术进行油茶果的相关操作,计算机视觉系统是一种通过计算机视觉代替人工目测的一种设备,将图像信号传递给图像处理系统对其进行分析,具有检测结果准确、检测效率高的特点。深度学习作为机器学习的重要分支,因在数据处理方面呈现出了显著的优势而飞速发展。它通过对相关模型进行预训练,自动提取并不断优化特征,可在短时间内集中、快速地处理大量数据,拥有更好的性能和更高的精度。因此,深度学习越来越受到遥感监测、农作物病害识别、物体识别、场景分割等各个领域的研究学者关注,尤其是一些研究者通过深度学习技术分析物体的RGB图像和特征成功实现对场景中农作物等的识别,并取得一系列重要研究进展。本研究将致力于将计算机视觉与深度学习神经网络相结合,并运用于油茶果的识别与成熟度监测系统上。通过该系统对油茶果进行评估并将分析结果及时反馈给相关负责人员,达到及时采摘、提高茶油果整体的出油率的目的。
基于此,为提高效率,我本人欲利用计算机视觉来识别油茶果以便后期的智能农机的高效采摘;油茶的种植和消费具有广阔前景,也是乡村振兴的支柱产业。而目前市面上对于油茶只仅仅停留于理论阶段,故本人提出——基于计算机视觉的油茶果的识别、计数及成熟度监测,聚焦于利用新科技推动整个油茶产业的发展。
本人利用yolox进行本次成熟度检测
!pip install "paddlex<=1.3.11" -i https://mirror.baidu.com/pypi/simple
友情提示:注:亲!如果版本不匹配,可以进行运行下一行代码,先不用运行此代码,后面运行不起在运行此代码。
# !pip install "paddlepaddle<=1.8.4"
这里直接解压缩数据集中的油茶儿即可
亲!底下带有解压代码,在终端运行即可。
# unzip -oq /home/aistudio/data/data180722/dataset.zip 如下图
数据集中包含了已经标注好的数据。该项目采用目标检测的标注方式,在数据集中提供了VOC数据集格式。
下载后的数据集文件夹无需更改文件名,直接用即可
dataset/
├── Annotations/
├── JPEGImages/
数据集分类情况: mature
, immature
.
paddlex --split_dataset --format VOC --dataset_dir dataset --val_value 0.1
dataset/ dataset/
├── Annotations/ --> ├── Annotations/
├── JPEGImages/ ├── JPEGImages/
├── labels.txt
├── train_list.txt
├── val_list.txt
# 设置使用0号GPU卡(如无GPU,执行此代码后仍然会使用CPU训练模型)
import matplotlib
matplotlib.use('Agg')
import os
os.environ['CUDA_VISIBLE_DEVICES'] = '0'
import paddlex as pdx
定义数据处理流程,其中训练和测试需分别定义,训练过程包括了部分测试过程中不需要的数据增强操作,如在本示例中,训练过程使用了MixupImage
、RandomDistort
、RandomExpand
、RandomCrop
和RandomHorizontalFlip
共5种数据增强方式。
from paddlex.det import transforms
train_transforms = transforms.Compose([
transforms.MixupImage(mixup_epoch=250),
transforms.RandomDistort(),
transforms.RandomExpand(),
transforms.RandomCrop(),
transforms.Resize(target_size=608, interp='RANDOM'),
transforms.RandomHorizontalFlip(),
transforms.Normalize(),
])
eval_transforms = transforms.Compose([
transforms.Resize(target_size=608, interp='CUBIC'),
transforms.Normalize(),
])
目标检测可使用VOCDetection
格式和COCODetection
两种数据集,此处由于数据集为VOC格式,因此采用pdx.datasets.VOCDetection
来加载数据集,该接口的介绍可参见文档paddlex.datasets.VOCDetection。
train_dataset = pdx.datasets.VOCDetection(
data_dir='dataset',
file_list='dataset/train_list.txt',
label_list='dataset/labels.txt',
transforms=train_transforms,
shuffle=True)
eval_dataset = pdx.datasets.VOCDetection(
data_dir='dataset',
file_list='dataset/val_list.txt',
label_list='dataset/labels.txt',
transforms=eval_transforms)
num_classes = len(train_dataset.labels)
model = pdx.det.YOLOv3(num_classes=num_classes, backbone='DarkNet53')
model.train(
num_epochs=600,
train_dataset=train_dataset,
train_batch_size=4,
eval_dataset=eval_dataset,
learning_rate=0.000125,
lr_decay_epochs=[210, 240],
save_interval_epochs=20,
save_dir='output1/yolov3_darknet53',
use_vdl=True)
使用模型进行预测,同时使用pdx.det.visualize
将结果可视化,可视化结果将保存到./output/yolov3_mobilenetv1
下,其中threshold
代表Box的置信度阈值,将Box置信度低于该阈值的框过滤不进行可视化。
此处请在AIStudio Notebook页面的右上角菜单,选择重启执行器,以释放显存,重新加载训练好的模型
import paddlex as pdx
model = pdx.load_model('output1/yolov3_darknet53/best_model')
image_name = 'dataset/JPEGImages/IMG835.jpg'
result = model.predict(image_name)
pdx.det.visualize(image_name, result, threshold=0.3, save_dir='./output1/yolov3_darknet53')
效果还是很好滴!,后续我们团队会用语义分割进行成熟度的检测!
复盘:依旧有很多可以改进的地方,可以分成多个时期!
Dear OpenI User
Thank you for your continuous support to the Openl Qizhi Community AI Collaboration Platform. In order to protect your usage rights and ensure network security, we updated the Openl Qizhi Community AI Collaboration Platform Usage Agreement in January 2024. The updated agreement specifies that users are prohibited from using intranet penetration tools. After you click "Agree and continue", you can continue to use our services. Thank you for your cooperation and understanding.
For more agreement content, please refer to the《Openl Qizhi Community AI Collaboration Platform Usage Agreement》