使用AI實現(xiàn)洋蔥檢測對農(nóng)業(yè)具有以下意義:
- 提高效率:AI技術(shù)可以快速、準確地檢測出洋蔥中的缺陷和問題,從而提高了檢測效率,減少了人工檢測的時間和人力成本。
- 提高準確性:AI技術(shù)通過大量的數(shù)據(jù)學習和分析,能夠更準確地識別出有缺陷的洋蔥,降低了誤判和漏檢的可能性。
- 提高農(nóng)產(chǎn)品質(zhì)量:通過AI技術(shù)對洋蔥進行檢測,可以及時發(fā)現(xiàn)并處理有缺陷的產(chǎn)品,從而提高了農(nóng)產(chǎn)品的整體質(zhì)量。
- 提供決策支持:AI技術(shù)可以通過數(shù)據(jù)分析,預測洋蔥的品質(zhì)、產(chǎn)量和市場趨勢等,為決策者提供科學依據(jù),幫助制定更合理的生產(chǎn)和營銷策略。
- 促進農(nóng)業(yè)現(xiàn)代化:AI技術(shù)的引入可以推動農(nóng)業(yè)的現(xiàn)代化進程,提高農(nóng)業(yè)生產(chǎn)的科技含量和創(chuàng)新能力,促進農(nóng)業(yè)的可持續(xù)發(fā)展。
總之,使用AI實現(xiàn)洋蔥檢測可以提高農(nóng)業(yè)生產(chǎn)的效率和農(nóng)產(chǎn)品質(zhì)量,促進農(nóng)業(yè)現(xiàn)代化發(fā)展。
以下是此項目的一些用例:
1.雜貨庫存管理:洋蔥檢測器可用于超市和雜貨店,通過準確識別和計數(shù)存儲區(qū)域或展示架上的洋蔥,自動監(jiān)控和管理洋蔥的庫存和庫存。
2.洋蔥收獲自動化:使用洋蔥檢測器模型開發(fā)收獲自動化設(shè)備可以幫助農(nóng)民和農(nóng)業(yè)公司檢測和分離除草植物或土壤中的洋蔥,顯著提高洋蔥收獲過程的速度和效率。
3.食品工業(yè)質(zhì)量控制:洋蔥檢測儀可以集成到食品加工廠的生產(chǎn)線中,使系統(tǒng)能夠自動檢測各個加工階段的洋蔥 - 例如分類,清潔和分級 - 以確保最終產(chǎn)品的質(zhì)量一致。
4.減少洋蔥浪費:該模型可用于零售、餐廳或家庭環(huán)境,以識別可能開始變質(zhì)的洋蔥,使消費者或餐飲服務(wù)經(jīng)營者能夠在需要丟棄之前優(yōu)先使用這些洋蔥,最終限制食物浪費。
5.智能廚房輔助:通過將洋蔥檢測器集成到智能廚房電器中,用戶可以根據(jù)可用成分(包括洋蔥)接收自動食譜建議,從而更輕松地確定膳食選項,而無需手動搜索食譜數(shù)據(jù)庫。
本文介紹了基于深度學習yolov8的洋蔥檢測系統(tǒng),包括訓練過程和數(shù)據(jù)準備過程,同時提供了推理的代碼和GUI。對準備計算機視覺相關(guān)的畢業(yè)設(shè)計的同學有著一定的幫助。
檢測結(jié)果如下圖:
一、安裝YoloV8
yolov8官方文檔:主頁 - Ultralytics YOLOv8 文檔
安裝部分參考:官方安裝教程
二、數(shù)據(jù)集準備
本文使用的數(shù)據(jù)集來自https://www.cvmart.net/dataSets/detail/924。
該數(shù)據(jù)集共包含2425條訓練數(shù)據(jù),688條驗證數(shù)據(jù),363條測試數(shù)據(jù),數(shù)據(jù)集圖片示例如下:
本文提供整理后的洋蔥實例分割數(shù)據(jù)集yolov8格式,可用于yolov8的訓練,包含2425條訓練數(shù)據(jù),688條驗證數(shù)據(jù),363條測試數(shù)據(jù)。
三、模型訓練
1、數(shù)據(jù)集配置文件
在ultralytics/ultralytics/cfg/datasets目錄下添加onion.yaml,添加以下內(nèi)容(path修改為自己的路徑):
# Ultralytics YOLO ??, AGPL-3.0 license
# COCO128-seg dataset https://www.kaggle.com/ultralytics/coco128 (first 128 images from COCO train2017) by Ultralytics
# Documentation: https://docs.ultralytics.com/datasets/segment/coco/
# Example usage: yolo train data=coco128.yaml
# parent
# ├── ultralytics
# └── datasets
# └── coco128-seg ← downloads here (7 MB)
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: datasets/instance_seg/onion_yolo8 # dataset root dir
train: images/train # train images (relative to 'path') 128 images
val: images/val # val images (relative to 'path') 128 images
test: # test images (optional)
# Classes
names:
0: onion
2、修改模型配置文件
新建ultralytics/cfg/models/v8/yolov8_onion.yaml?,添加以下內(nèi)容:,添加以下內(nèi)容:
# Ultralytics YOLO ??, AGPL-3.0 license
# YOLOv8-seg instance segmentation model. For Usage examples see https://docs.ultralytics.com/tasks/segment
# Parameters
nc: 1 # number of classes
scales: # model compound scaling constants, i.e. 'model=yolov8n-seg.yaml' will call yolov8-seg.yaml with scale 'n'
# [depth, width, max_channels]
n: [0.33, 0.25, 1024]
s: [0.33, 0.50, 1024]
m: [0.67, 0.75, 768]
l: [1.00, 1.00, 512]
x: [1.00, 1.25, 512]
# YOLOv8.0n backbone
backbone:
# [from, repeats, module, args]
- [-1, 1, Conv, [64, 3, 2]] # 0-P1/2
- [-1, 1, Conv, [128, 3, 2]] # 1-P2/4
- [-1, 3, C2f, [128, True]]
- [-1, 1, Conv, [256, 3, 2]] # 3-P3/8
- [-1, 6, C2f, [256, True]]
- [-1, 1, Conv, [512, 3, 2]] # 5-P4/16
- [-1, 6, C2f, [512, True]]
- [-1, 1, Conv, [1024, 3, 2]] # 7-P5/32
- [-1, 3, C2f, [1024, True]]
- [-1, 1, SPPF, [1024, 5]] # 9
# YOLOv8.0n head
head:
- [-1, 1, nn.Upsample, [None, 2, 'nearest']]
- [[-1, 6], 1, Concat, [1]] # cat backbone P4
- [-1, 3, C2f, [512]] # 12
- [-1, 1, nn.Upsample, [None, 2, 'nearest']]
- [[-1, 4], 1, Concat, [1]] # cat backbone P3
- [-1, 3, C2f, [256]] # 15 (P3/8-small)
- [-1, 1, Conv, [256, 3, 2]]
- [[-1, 12], 1, Concat, [1]] # cat head P4
- [-1, 3, C2f, [512]] # 18 (P4/16-medium)
- [-1, 1, Conv, [512, 3, 2]]
- [[-1, 9], 1, Concat, [1]] # cat head P5
- [-1, 3, C2f, [1024]] # 21 (P5/32-large)
- [[15, 18, 21], 1, Segment, [nc, 32, 256]] # Segment(P3, P4, P5)
3、訓練模型
使用如下命令訓練模型,相關(guān)路徑更改為自己的路徑,建議絕對路徑:
yolo detect train project=deploy name=yolov8_onion exist_ok=True optimizer=auto val=True amp=True epochs=100 imgsz=640 model=ultralytics/cfg/models/v8/yolov8_onion.yaml data=ultralytics/cfg/datasets/oniono.yaml
4、驗證模型
使用如下命令驗證模型,相關(guān)路徑根據(jù)需要修改:
yolo detect val imgsz=640 model=deploy/yolov8_onion/weights/best.pt data=ultralytics/ultralytics/cfg/datasets/onion.yaml
四、推理
訓練好了模型,可以使用如下代碼實現(xiàn)推理,將權(quán)重放到同級目錄:
from PIL import Image
from ultralytics import YOLO
# 加載預訓練的YOLOv8n模型
model = YOLO('best.pt')
image_path = 'test.jpg'
results = model(image_path) # 結(jié)果列表
# 展示結(jié)果
for r in results:
im_array = r.plot() # 繪制包含預測結(jié)果的BGR numpy數(shù)組
im = Image.fromarray(im_array[..., ::-1]) # RGB PIL圖像
im.show() # 顯示圖像
im.save('results.jpg') # 保存圖像
五、界面開發(fā)
使用pyqt5開發(fā)gui界面,支持圖片、視頻、攝像頭輸入,支持導出到指定路徑,其GUI如下圖(完整GUI代碼可在下方鏈接下載):
六、代碼下載
1、洋蔥實例分割數(shù)據(jù)集yolov8格式,可用于yolov8的訓練,包含2425條訓練數(shù)據(jù),688條驗證數(shù)據(jù),363條測試數(shù)據(jù)文章來源:http://www.zghlxwxcb.cn/news/detail-814649.html
2、洋蔥檢測系統(tǒng),包含訓練好的權(quán)重和推理代碼,GUI界面,支持圖片、視頻、攝像頭輸入,支持檢測結(jié)果導出文章來源地址http://www.zghlxwxcb.cn/news/detail-814649.html
到了這里,關(guān)于【深度學習目標檢測】十七、基于深度學習的洋蔥檢測系統(tǒng)-含GUI和源碼(python,yolov8)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!