glass_yolov8_andorid

玻璃破碎yolov8ncnn实时监测及图像检测

https://github.com/jhlucc/glass_yolov8_andorid

Science Score: 44.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (4.4%) to scientific vocabulary
Last synced: 6 months ago · JSON representation ·

Repository

玻璃破碎yolov8ncnn实时监测及图像检测

Basic Info
  • Host: GitHub
  • Owner: jhlucc
  • License: mit
  • Language: Python
  • Default Branch: main
  • Size: 3.34 MB
Statistics
  • Stars: 3
  • Watchers: 1
  • Forks: 1
  • Open Issues: 0
  • Releases: 0
Created almost 2 years ago · Last pushed almost 2 years ago
Metadata Files
Readme Contributing License Citation Security

README.md

GlassYOLOv8 Android: 玻璃破碎实时监测与图像检测

本项目使用YOLOv8-seg-Ncnn实现了对玻璃破碎的实时监测及图像检测,支持在Android设备上运行。以下是项目的详细指南。

:sparkles: 特性

  • 现实世界中玻璃破碎的实时检测。
  • 支持自定义数据集训练。
  • Android端部署,便于移动应用。
  • 包含详细的安装和配置指南。

1. 训练自己的数据集

① 安装cuda,cudnn,torch, torchvison

  • (1).首先要在设备管理器中查看你的显卡型号,然后去NVIDIA 驱动下载驱动。 驱动
  • (2)完成之后,在cmd中输入执行:nvidia-smi 驱动验证 注:图中的 CUDA Version是当前Driver版本能支持的最高的CUDA版本。

  • (3) 安装cuda,cudnn。(我的CUDA用的是11.8版本) 请参考CUDA安装教程(超详细)该教程安装。 (4) 离线安装torch, torchvision

② 安装labelme+sam进行半自动化标注

③制作自己数据集以及对应yolov8训练格式

在命令行中输入labelme(如果是conda请切换环境)

  • 创建mydatasets,数据集图像文件放置在mydatasets目录下

  • 打开目录(自己的图片文件夹mydatasets)。

  • 编辑(create-AI-Polygon或者编辑多边形)。

  • 制作数据集。 标注后生成json文件 分验证和测试集(在mydatasets中挑选一部分的图片和对应的json放到glass_val文件夹(自己创建)下) labelme操作简述 注: 玻璃破碎数据集有2个类别:"inner","outer"

  • 图像标注格式转换 json->coco->yolo

    • 把labelme标注的json数据格式转换成COCO数据格式的参考该项目
    • COCO格式标注数据转换成YOLO格式 参考[该项目][def]中general_json2yolo.py 文件 其中修改代码

    python if source == 'COCO': convert_coco_json('../mydatasets/annotations', #创建annotations把生成的json文件放进去 directory with *.json use_segments=True,cls91to80=False)

    在def convertcocojson(jsondir='../coco/annotations/', usesegments=False, cls91to80=False): 中修改一句

    ```python

    cls = coco80[ann['categoryid'] - 1] if cls91to80 else ann['categoryid'] - 1

    cls = coco80[ann['categoryid'] - 1] if cls91to80 else ann['categoryid'] # ```

    执行 python general_json2yolo.py 生成labels 和images文件夹,images中没有数据 把转成的YOLO数据格式(labels中的txt文件)的数据的目录结构准备成YOLO目录结构格式。 - 创建对应yolo的工作目录 工作目录

④ 基于自己的数据训练yolov8

  • 安装ultralytics,目前YOLOv8核心代码都封装在这个依赖包里面,可通过以下命令安装 pip install ultralytics
  • 下载预训练权重文件 下载yolov8s-seg.pt权重文件,并放置在创建的weights文件夹下 下载链接:https://docs.ultralytics.com/tasks/segment/

例如: D:\ultralytics\ultralytics\weights

  • 安装测试 执行

python yolo segment predict model=D:/ultralytics/ultralytics/weights/ yolov8-seg.pt source=D:/ultralytics/ultralytics/assets/bus.jpg

摄像头

```python yolo segment predict model=D:/ultralytics/ultralytics/weights/

yolov8s-seg.pt source=0 show ```

  • 把制作好的mydatasets-seg数据集放到ultralytics\ultralytics\datasets下

  • 修改配置文件

    • 修改文件datasets/coco8-seg.yaml

    ```bash path: D:/ultralytics/ultralytics/datasets/mydatasets-seg # dataset root dir train: images/train # train images (relative to 'path')
    val: images/val # val images (relative to 'path')
    test: # test images (optional)

    Classes

    names: 0: inner 1: outer ``` - 修改文件ultralytics/models/v8/seg/yolov8-seg.yaml

    bash nc: 80 # number of classes 改为自己的类别 我的是nc=2

  • 基于yolov8训练数据集

python yolo detect train data=D:\ultralytics\ultralytics\datasets\coco8-seg.yaml model=D:\ultralytics\ultralytics\weights\yolov8s-seg.pt epochs=100 imgsz=640 batch=16 workers=4

  • 训练结果的查看 查看D:\ultralytics\runs\segment\train\weights目录下的文件
  • 测试训练出的网络模型

    • 测试图片

```python

yolo segment predict model=D:\ultralytics\runs\segment\train\weights\best.pt data=D:\ultralytics\ultralytics\datasets\coco8-seg.yaml source=D:\ultralytics\ultralytics\mydatasets-seg\images\val\img_val001.jpg

```

  • 批量测试图片

python yolo segment predict model=D:\ultralytics\runs\segment\train\weights\best.pt data=D:\ultralytics\ultralytics\datasets\coco8-seg.yaml source=D:\ultralytics\ultralytics\mydatasets-seg\images\val

2.导出修改网络结构导出onnx

  • 修改文件1: D:\ultralytics\ultralytics\nn\modules\block.py中 class C2f(nn.Module)改动如下 C2f
  • 修改文件2: D:\ultralytics\ultralytics\nn\modules\head.py中 class Detect(nn.Module)改动如下 Detect
  • 修改文件3: D:\ultralytics\ultralytics\nn\modules\head.py seg

具体请参考改项目中1·1-1.4 导出onnx

① 自动onnx转换成NCNN文件

使用该网站一键生成ncnn: 一键生成

② 手工对于 yolov8l-x无法使用①生成

请参考该教程

判断生成的ncnn是否适合编译

在 %s.param中查看是否有这两层编译

3. yolov8语义分割部署安卓手机

①安装Android Studio

官网:https://developer.android.google.cn/studio/

安装时会提示安装SDK 同意licenses 注意:Android SDK安装路径中不要有空格 注意配置: File->Settings->Appearance & Behavior ->System Settings->Android SDK SDK Platforms选中面向手机的Android版本 SDK Tools选中NDK, CMake 注意:cmake的版本选择不要太高

sdk

②android studio编译问题

您可能需要这个

参照该教程放置所需文件,参考我的目录修改。以及该教程可能会给您一点灵感。

目录 我的文件:https://pan.baidu.com/s/1VGfMw8Bjmn0Utlj2nJWLMQ?pwd=tpqa

:camera_flash:最终实时检测效果以及我们修改后的效果是(左上角有角度)

Success

apk: :https://pan.baidu.com/s/16LtEqdpjhlTXz_jzZE72dQ?pwd=o4dz

## 图片检测 注意:图像检测时候jni yoloncnn.cpp 需要改图像尺寸

:link: 相关链接

:question: 帮助

如遇到问题,请参考FAQ或提交Issue

Owner

  • Login: jhlucc
  • Kind: user

zz

Citation (CITATION.cff)

cff-version: 1.2.0
preferred-citation:
  type: software
  message: If you use this software, please cite it as below.
  authors:
  - family-names: Jocher
    given-names: Glenn
    orcid: "https://orcid.org/0000-0001-5950-6979"
  - family-names: Chaurasia
    given-names: Ayush
    orcid: "https://orcid.org/0000-0002-7603-6750"
  - family-names: Qiu
    given-names: Jing
    orcid: "https://orcid.org/0000-0003-3783-7069"
  title: "YOLO by Ultralytics"
  version: 8.0.0
  # doi: 10.5281/zenodo.3908559  # TODO
  date-released: 2023-1-10
  license: AGPL-3.0
  url: "https://github.com/ultralytics/ultralytics"

GitHub Events

Total
Last Year

Dependencies

docker/Dockerfile docker
  • pytorch/pytorch 2.0.0-cuda11.7-cudnn8-runtime build
requirements.txt pypi
  • Pillow >=7.1.2
  • PyYAML >=5.3.1
  • matplotlib >=3.2.2
  • opencv-python >=4.6.0
  • pandas >=1.1.4
  • psutil *
  • requests >=2.23.0
  • scipy >=1.4.1
  • seaborn >=0.11.0
  • torch >=1.7.0
  • torchvision >=0.8.1
  • tqdm >=4.64.0
setup.py pypi