# ChineseDrums **Repository Path**: pmhw/ChineseDrums ## Basic Information - **Project Name**: ChineseDrums - **Description**: 科创之中国鼓智能检测设备 - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-03-16 - **Last Updated**: 2025-04-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 目录讲解 cpp arduino 代码 nodejs 读取arduino 数据代码 python 训练内容+识别程序 [MAKE SENSE 标注软件](https://www.makesense.ai/) git remote add origin https://gitee.com/pmhw/yangchenming.git ## 训练内容相关 (python目录) ### 安装环境 1.安装python (用于图像识别脚本) [python3](https://www.python.org/downloads/) 确保 Python 的安装路径和 Scripts 目录已添加到系统的 PATH 环境变量中: Python 安装路径:例如 C:\Users\电脑用户名\AppData\Local\Programs\Python\Python313 Scripts 目录:例如 C:\Users\电脑用户名\AppData\Local\Programs\Python\Python313\Scripts 2.安装nodejs v18 版本 (用于运行nodejs脚本) 只需几行代码就能加载模型、对其进行训练、评估其在验证集上的性能,甚至将其导出为ONNX 格式 3.安装标注软件 或 使用 [在线标注](http://makesense.bimant.com/) 安装过程 ```base # clone repository git clone https://gitee.com/higgs-zmc/make-sense.git # navigate to main dir cd make-sense # install dependencies cnpm install cnpm install -g node-gyp cnpm install --save-exact @tensorflow/tfjs-node@3.1.0 # serve with hot reload at localhost:3000 npm start ``` 访问: http://localhost:3000/ 进行标注 ### 训练模型 .pt 文件 #### **1.标注并导出** ![alt text](image.png) 标注完成后导出标签 yolo格式zip 解压 #### **2.整理数据集** 1. **文件结构**: - 将图片和标注文件整理为以下结构: ``` dataset/ ├── images/ │ ├── train/ │ │ ├── img1.jpg │ │ ├── img2.jpg │ │ └── ... │ └── val/ │ ├── img3.jpg │ ├── img4.jpg │ └── ... ├── labels/ │ ├── train/ │ │ ├── img1.txt │ │ ├── img2.txt │ │ └── ... │ └── val/ │ ├── img3.txt │ ├── img4.txt │ └── ... └── dataset.yaml ``` - `images/train/` 和 `images/val/` 分别存放训练集和验证集的图片。 - `labels/train/` 和 `labels/val/` 分别存放训练集和验证集的标注文件。 >将图片和标注文件划分为训练集和验证集(通常比例为 80% 训练集,20% 验证集) #### **3.启动运行** 安装 `ultralytics yml opencv-python` 库: ```bash pip install ultralytics pyyaml opencv-python pyserial pyserial openpyxl pandas ``` 启动训练 (启动训练自己pt模型时必须要完成 1 2 步骤): ```bash python xunlian.py ``` #### **4.训练好的 best.pt 放到python 目录** 示例demo 可以分析视频 分析图片 ```bash python main.py ``` 打开摄像头进行分析 ```bash python mainvc.py ``` 把训练的视频逐帧转图片 用于进行图片标注 ```bash python videoToimg.py ``` 读取串口数据并获取同一时段的视频画面 ```bash python main.py ``` ### 补充参考 如果你已经使用 **makesense** 完成了标注,并导出了 YOLO 格式的标注数据,接下来可以按照以下步骤进行模型训练和推理: --- ### **步骤 1:整理数据集** 1. **文件结构**: - 将图片和标注文件整理为以下结构: ``` dataset/ ├── images/ │ ├── train/ │ │ ├── img1.jpg │ │ ├── img2.jpg │ │ └── ... │ └── val/ │ ├── img3.jpg │ ├── img4.jpg │ └── ... ├── labels/ │ ├── train/ │ │ ├── img1.txt │ │ ├── img2.txt │ │ └── ... │ └── val/ │ ├── img3.txt │ ├── img4.txt │ └── ... └── dataset.yaml ``` - `images/train/` 和 `images/val/` 分别存放训练集和验证集的图片。 - `labels/train/` 和 `labels/val/` 分别存放训练集和验证集的标注文件。 >将图片和标注文件划分为训练集和验证集(通常比例为 80% 训练集,20% 验证集) 2. **创建 `dataset.yaml` 文件**: - 在 `dataset/` 目录下创建一个 `dataset.yaml` 文件,内容如下: ```yaml path: /path/to/dataset # 数据集路径 train: images/train # 训练集图片路径 val: images/val # 验证集图片路径 # 类别信息 names: 0: class1 # 替换为你的类别名称 1: class2 2: class3 # 根据你的标注类别填写 ``` --- ### **步骤 2:安装依赖** 1. 安装 `ultralytics` 库: ```bash pip install ultralytics ``` --- ### **步骤 3:训练模型** 1. 使用以下代码加载预训练模型并开始训练: ```python from ultralytics import YOLO # 加载预训练模型 model = YOLO("yolov8n.pt") # 可以选择 yolov8s, yolov8m, yolov8l, yolov8x # 训练模型 results = model.train( data="path/to/dataset.yaml", # 数据集配置文件路径 epochs=50, # 训练周期 imgsz=640, # 输入图片大小 batch=16, # 批量大小 name="my_custom_model" # 模型名称 ) ``` --- ### **步骤 4:验证模型** 1. 在验证集上评估模型性能: ```python results = model.val() ``` --- ### **步骤 5:使用模型进行推理** 1. 使用训练好的模型对图片或视频进行推理: ```python results = model("path/to/test_image.jpg") results.show() # 显示结果 ``` --- ### **步骤 6:导出模型** 1. 将模型导出为 ONNX 或其他格式: ```python success = model.export(format="onnx") ``` --- ### **完整代码示例** 以下是一个完整的训练和推理代码示例: ```python from ultralytics import YOLO # 加载预训练模型 model = YOLO("yolov8n.pt") # 训练模型 results = model.train( data="path/to/dataset.yaml", # 数据集配置文件路径 epochs=50, # 训练周期 imgsz=640, # 输入图片大小 batch=16, # 批量大小 name="my_custom_model" # 模型名称 ) # 验证模型 results = model.val() # 使用模型进行推理 results = model("path/to/test_image.jpg") results.show() # 显示结果 # 导出模型 success = model.export(format="onnx") ``` --- ### **总结** 1. 整理数据集并创建 `dataset.yaml` 文件。 2. 使用 `ultralytics` 加载预训练模型并开始训练。 3. 验证模型性能,并使用模型进行推理。 4. 导出模型为 ONNX 或其他格式。 如果有其他问题,欢迎随时提问! ### 流功能说明 mainvc 1. **绘制大圆和小圆**: - 用户可以通过鼠标左键点击并拖动来绘制大圆和小圆。 - 大圆用绿色 (`(0, 255, 0)`) 绘制,小圆用红色 (`(0, 0, 255)`) 绘制。 2. **移动圆圈**: - 如果用户点击已经绘制好的圆(大圆或小圆),可以拖动鼠标移动该圆的位置。 3. **实时调整半径**: - 在绘制过程中,用户可以通过拖动鼠标调整圆的半径。 4. **显示状态**: - 如果鼓槌在环形区域内,状态显示为 `yes`,并用绿色边界框和文字标注。 - 如果鼓槌不在环形区域内,状态显示为 `no`,并用红色边界框和文字标注。 5. **退出程序**: - 按下 `q` 键退出程序,并输出大圆和小圆的参数。 --- ### 运行效果 1. 打开摄像头后,用户可以通过鼠标绘制大圆和小圆。 2. 绘制完成后,可以点击并拖动圆来调整其位置。 3. 当检测到鼓槌时,会在鼓槌周围绘制边界框,并显示状态(`yes` 或 `no`)。 4. 按下 `q` 键退出程序。 --- 如果有其他需求或问题,欢迎继续提问!