AI计算机视觉笔记二十 九:yolov10竹签模型,自动数竹签

简介: 本文介绍了如何在AutoDL平台上搭建YOLOv10环境并进行竹签检测与计数。首先从官网下载YOLOv10源码并创建虚拟环境,安装依赖库。接着通过官方模型测试环境是否正常工作。然后下载自定义数据集并配置`mycoco128.yaml`文件,使用`yolo detect train`命令或Python代码进行训练。最后,通过命令行或API调用测试训练结果,并展示竹签计数功能。如需转载,请注明原文出处。

若该文为原创文章,转载请注明原文出处。

原本是为部署RK3568而先熟悉yolov10流程的,采用自己的数据集,网上很多,检测竹签,并计数。

1、环境搭建

1.1 官方下载源码

官网地址:YOLOv10 gitbub官网源码
利用魔法进入GitHub官网之后点击下载源码压缩包(这里针对小白使用download,当然也可以使用git clone命令)
image.png

1.2 配置环境

使用的是AutoDL平台

image.png

创建虚拟环境

创建虚拟环境

conda create -n yolov10 python=3.9

初始化

source activate

激活

conda activate yolov10

安装前需要修改requirements.txt文件,把文件里的onnxruntime-gpu==1.18.0改成onnx

runtime-gpu==1.16.0

开始安装

pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

pip install -e . -i https://pypi.tuna.tsinghua.edu.cn/simple

2、测试

测试直接使用官方模型测试

模型下载命令

wget https://github.com/THU-MIG/yolov10/releases/download/v1.1/yolov10{n/s/m/b/l/x}.pt

这里使用的是 yolov10s.pt。

测试指令

yolo predict model=yolov10s.pt source=ultralytics/assets/bus.jpg

或是使用代码测试

from ultralytics import YOLOv10

# Load a pretrained YOLOv10n model
model = YOLOv10("./weights/zhuqian.pt")

# Perform object detection on an image
results = model.predict("./test.jpg")

# Display the results
results[0].show()
results[0].save()

image.png

3、训练

3.1下载数据集

训练的是自己的数据集,想实现的是数竹签,需要数据集自行下载。

链接:https://pan.baidu.com/s/1paB9rDH8PUBNinw8DzLPiQ?pwd=1234 
提取码:1234 复制这段内容后打开百度网盘手机App,操作更方便哦

直接把数据集解压到yolov10工程目录下。

文件结构如下

image.png

3.2 yaml文件

进入yolov10\ultralytics\cfg\datasets目录,拷贝coco128.yaml文件一份为mycoco128.yaml。

修改mycoco128.yaml, 修改后的文件,修改数据集路径和修改标签。

# Ultralytics YOLO 🚀, AGPL-3.0 license
# COCO128 dataset https://www.kaggle.com/ultralytics/coco128 (first 128 images from COCO train2017) by Ultralytics
# Documentation: https://docs.ultralytics.com/datasets/detect/coco/
# Example usage: yolo train data=coco128.yaml
# parent
# ├── ultralytics
# └── datasets
#     └── coco128  ← 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: G:/资料/嵌入式/【正点原子】RK3568开发板资料(A盘)-基础资料/01、AI例程/Ai_Code/40_yolov10/yolov10/dataset # 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: skewer

# Download script/URL (optional)
#download: https://ultralytics.com/assets/coco128.zip

3.3 训练

使用下面命令训练。

yolo detect train data=/root/yolov10/ultralytics/cfg/datasets/mycoco128.yaml model=yolov10s.pt epochs=100 batch=16 imgsz=640

或代码训练

#coding:utf-8
from ultralytics import YOLOv10
# 模型配置文件
model_yaml_path = "ultralytics/cfg/models/v10/yolov10s.yaml"
#数据集配置文件
data_yaml_path = '/root/yolov10/ultralytics/cfg/datasets/coco128_zhuqian.yaml '
#预训练模型
pre_model_name = 'yolov10s.pt'

if __name__ == '__main__':
    #加载预训练模型
    model = YOLOv10(model_yaml_path).load(pre_model_name)
    #训练模型
    results = model.train(data=data_yaml_path,
                          epochs=150,
                          batch=16,
                          name='train_v10')

这里有个疑问,训练时好像不是使用yolov10s.pt模型,而是会下载yolov8n.pt模型。

image.png

4 结果测试

命令测试

yolo predict model=weights/zhuqian_no.pt source=test.py
命令测试比较方便,但如果想自己写,还是要使用API。

主要还是要学习怎么使用API

import cv2
from  ultralytics import YOLOv10
import os

model = YOLOv10(model="./weigths/best_zq.pt")

def predict(chosen_model, img, classes=[], conf=0.5):
    if classes:
        results = chosen_model.predict(img, classes=classes, conf=conf)
    else:
        results = chosen_model.predict(img, conf=conf)

    return results

def predict_and_detect(chosen_model, img, classes=[], conf=0.5, rectangle_thickness=2, text_thickness=1):
    results = predict(chosen_model, img, classes, conf=conf)
    count = 0
    for result in results:
        for box in result.boxes:
            cv2.rectangle(img, (int(box.xyxy[0][0]), int(box.xyxy[0][1])),
                          (int(box.xyxy[0][2]), int(box.xyxy[0][3])), (255, 0, 0), rectangle_thickness)

            #cv2.putText(img, f"{result.names[int(box.cls[0])]}",
            #            (int(box.xyxy[0][0]), int(box.xyxy[0][1]) - 10),
            #           cv2.FONT_HERSHEY_PLAIN, 1, (255, 0, 0), text_thickness)
            count += 1

    # 在图像上显示计数
    font = cv2.FONT_HERSHEY_SIMPLEX
    text = f"Count: {count}"
    cv2.putText(img, text, (10, 160), font, 5, (00, 00, 255), 4, cv2.LINE_AA)

    return img, results

image_folder = './dataset/images/train/'  # 图片文件夹路径
for image_name in os.listdir(image_folder):
    if image_name.endswith('.jpg') or image_name.endswith('.png'):
        image_path = os.path.join(image_folder, image_name)
        # read the image
        image = cv2.imread(image_path)
        result_img, _ = predict_and_detect(model, image, classes=[], conf=0.4)

        cv2.namedWindow("Image", cv2.WINDOW_NORMAL)
        cv2.moveWindow("Image", 400, 100)

        cv2.imshow("Image", result_img)
        #cv2.imwrite("result.jpg", result_img)
        cv2.waitKey(240)  # 每张图片显示500毫秒

cv2.waitKey(0)  

"""
output_filename = "YourFilename"
writer = create_video_writer(cap, output_filename)
video_path = r"YourVideoPath"
cap = cv2.VideoCapture(video_path)
while True:
    success, img = cap.read()
    if not success:
        break
    result_img, _ = predict_and_detect(model, img, classes=[], conf=0.5)
    writer.write(result_img)
    cv2.imshow("Image", result_img)

    cv2.waitKey(1)
writer.release()
"""

代码比较简单,基本和yolo其他版本差不多。

测试结果

image.png

相关文章
|
1月前
|
人工智能 API 开发者
用Qwen3+MCPs实现AI自动发布小红书笔记!支持图文和视频
魔搭自动发布小红书MCP,是魔搭开发者小伙伴实现的小红书笔记自动发布器,可以通过这个MCP自动完成小红书标题、内容和图片的发布。
749 41
|
20天前
|
人工智能 PyTorch TensorFlow
AI界的"翻译官":ONNX如何让各框架模型和谐共处
还在为不同框架间的模型转换头疼?ONNX让你在PyTorch训练的模型可以无缝在TensorFlow部署,甚至能让模型在手机上飞速运行。本文带你了解这个AI领域的'瑞士军刀',轻松实现跨平台高性能模型部署。
121 12
|
22天前
|
人工智能 小程序 计算机视觉
AI不只有大模型,小模型也蕴含着大生产力
近年来,AI大模型蓬勃发展,从ChatGPT掀起全球热潮,到国内“百模大战”爆发,再到DeepSeek打破算力壁垒,AI技术不断刷新认知。然而,在大模型备受关注的同时,许多小而精的细分模型却被忽视。这些轻量级模型无需依赖强大算力,可运行于手机、手持设备等边缘终端,广泛应用于物体识别、条码扫描、人体骨骼检测等领域。例如,通过人体识别模型衍生出的运动与姿态识别能力,已在AI体育、康复训练、线上赛事等场景中展现出巨大潜力,大幅提升了相关领域的效率与应用范围。本文将带您深入了解这些高效的小模型及其实际价值。
|
23天前
|
人工智能 数据安全/隐私保护 Docker
短短时间,疯狂斩获1.9k star,开源AI神器AingDesk:一键部署上百模型,本地运行还能联网搜索!
AingDesk 是一款开源的本地 AI 模型管理工具,已获 1.9k Star。它支持一键部署上百款大模型(如 DeepSeek、Llama),适配 CPU/GPU,可本地运行并联网搜索。五大核心功能包括零门槛模型部署、实时联网搜证、私人知识库搭建、跨平台共享和智能体工厂,满足学术、办公及团队协作需求。相比 Ollama 和 Cherry Studio,AingDesk 更简单易用,适合技术小白、团队管理者和隐私敏感者。项目地址:https://github.com/aingdesk/AingDesk。
171 3
|
22天前
|
机器学习/深度学习 人工智能 大数据
特征越多模型越好?这个AI领域的常识可能是错的
特征选择是机器学习中的"减肥秘方",它能帮助模型去除冗余特征,提高性能并降低计算成本。本文深入浅出地介绍特征选择的概念、方法与实践技巧,带你掌握这门让AI模型更高效的"瘦身术"。
49 1
|
27天前
|
人工智能 负载均衡 API
长连接网关技术专题(十二):大模型时代多模型AI网关的架构设计与实现
随着 AI 技术快速发展,业务对 AI 能力的渴求日益增长。当 AI 服务面对处理大规模请求和高并发流量时,AI 网关从中扮演着至关重要的角色。AI 服务通常涉及大量的计算任务和设备资源占用,此时需要一个 AI 网关负责协调这些请求来确保系统的稳定性与高效性。因此,与传统微服务架构类似,我们将相关 API 管理的功能(如流量控制、用户鉴权、配额计费、负载均衡、API 路由等)集中放置在 AI 网关层,可以降低系统整体复杂度并提升可维护性。 本文要分享的是B站在大模型时代基于多模型AI的网关架构设计和实践总结,希望能带给你启发。
98 4
|
29天前
|
SQL 人工智能 自然语言处理
阿里云 AI 搜索开放平台新功能发布:新增GTE自部署模型
阿里云 AI搜索开放平台正式推出 GTE 多语言通用文本向量模型(iic/gte_sentence-embedding_multilingual-base)
131 4
|
27天前
|
机器学习/深度学习 人工智能 算法
Python+YOLO v8 实战:手把手教你打造专属 AI 视觉目标检测模型
本文介绍了如何使用 Python 和 YOLO v8 开发专属的 AI 视觉目标检测模型。首先讲解了 YOLO 的基本概念及其高效精准的特点,接着详细说明了环境搭建步骤,包括安装 Python、PyCharm 和 Ultralytics 库。随后引导读者加载预训练模型进行图片验证,并准备数据集以训练自定义模型。最后,展示了如何验证训练好的模型并提供示例代码。通过本文,你将学会从零开始打造自己的目标检测系统,满足实际场景需求。
283 0
Python+YOLO v8 实战:手把手教你打造专属 AI 视觉目标检测模型
|
1月前
|
Web App开发 人工智能 JSON
Windows版来啦!Qwen3+MCPs,用AI自动发布小红书图文/视频笔记!
上一篇用 Qwen3+MCPs实现AI自动发小红书的最佳实践 有超多小伙伴关注,同时也排队在蹲Windows版本的教程。
323 1
|
2月前
|
人工智能 开发工具
阿里云AI Stack全量适配Qwen3模型,企业级部署效率全面升级
2025年4月29日的凌晨5点,阿里全新一代模型通义千问Qwen3正式发布并全部开源8款「混合推理模型」,包含: 6款Dense模型:0.6B、1.7B、4B、8B、14B、32B。 2款MoE模型:Qwen3-30B-A3B和旗舰版Qwen3-235B-A22B。 阿里云AI Stack已适配全量Qwen3模型,可快速部署实现Qwen3模型的开箱即用!
168 4
下一篇
oss创建bucket