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
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
Metadata Files
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进行半自动化标注
- (1)
conda create --name=labelme python=3.8conda activate labelmepip install labelme - (2) 下载evethings找到labelme/ai所在目录。
- (3)参考Labelme加载AI(Segment-Anything)模型进行图像标注中从二(2)开始。(文件modelfile)
- (4) 接着
在labelme\ai\segment_anything_model.py文件中修改。
③制作自己数据集以及对应yolov8训练格式
在命令行中输入labelme(如果是conda请切换环境)
创建mydatasets,数据集图像文件放置在mydatasets目录下
打开目录(自己的图片文件夹mydatasets)。
编辑(create-AI-Polygon或者编辑多边形)。
制作数据集。 标注后生成json文件 分验证和测试集(在mydatasets中挑选一部分的图片和对应的json放到glass_val文件夹(自己创建)下)
注: 玻璃破碎数据集有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)改动如下

- 修改文件2:
D:\ultralytics\ultralytics\nn\modules\head.py中
class Detect(nn.Module)改动如下

- 修改文件3:
D:\ultralytics\ultralytics\nn\modules\head.py

具体请参考改项目中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的版本选择不要太高

②android studio编译问题
您可能需要这个
参照该教程放置所需文件,参考我的目录修改。以及该教程可能会给您一点灵感。
我的文件:https://pan.baidu.com/s/1VGfMw8Bjmn0Utlj2nJWLMQ?pwd=tpqa
:camera_flash:最终实时检测效果以及我们修改后的效果是(左上角有角度)

apk: :https://pan.baidu.com/s/16LtEqdpjhlTXz_jzZE72dQ?pwd=o4dz
## 图片检测 注意:图像检测时候jni yoloncnn.cpp 需要改图像尺寸
:link: 相关链接
:question: 帮助
Owner
- Login: jhlucc
- Kind: user
- Repositories: 2
- Profile: https://github.com/jhlucc
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
- pytorch/pytorch 2.0.0-cuda11.7-cudnn8-runtime build
- 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