Duplicate from Enos-123/smoking-detection
Browse filesCo-authored-by: Uppada Enos <Enos-123@users.noreply.huggingface.co>
- .gitattributes +51 -0
- BoxF1_curve.png +3 -0
- BoxPR_curve.png +0 -0
- BoxP_curve.png +3 -0
- BoxR_curve.png +3 -0
- README.md +98 -0
- best.pt +3 -0
- confusion_matrix.png +0 -0
- confusion_matrix_normalized.png +3 -0
- labels.jpg +3 -0
- labels_correlogram.jpg +3 -0
- results.csv +19 -0
- results.png +3 -0
- train.py +21 -0
- train_batch0.jpg +3 -0
- train_batch1.jpg +3 -0
- train_batch2.jpg +3 -0
- val_batch0_labels.jpg +3 -0
- val_batch0_pred.jpg +3 -0
- val_batch1_labels.jpg +3 -0
- val_batch1_pred.jpg +3 -0
- val_batch2_labels.jpg +3 -0
- val_batch2_pred.jpg +3 -0
.gitattributes
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
*.7z filter=lfs diff=lfs merge=lfs -text
|
| 2 |
+
*.arrow filter=lfs diff=lfs merge=lfs -text
|
| 3 |
+
*.bin filter=lfs diff=lfs merge=lfs -text
|
| 4 |
+
*.bz2 filter=lfs diff=lfs merge=lfs -text
|
| 5 |
+
*.ckpt filter=lfs diff=lfs merge=lfs -text
|
| 6 |
+
*.ftz filter=lfs diff=lfs merge=lfs -text
|
| 7 |
+
*.gz filter=lfs diff=lfs merge=lfs -text
|
| 8 |
+
*.h5 filter=lfs diff=lfs merge=lfs -text
|
| 9 |
+
*.joblib filter=lfs diff=lfs merge=lfs -text
|
| 10 |
+
*.lfs.* filter=lfs diff=lfs merge=lfs -text
|
| 11 |
+
*.mlmodel filter=lfs diff=lfs merge=lfs -text
|
| 12 |
+
*.model filter=lfs diff=lfs merge=lfs -text
|
| 13 |
+
*.msgpack filter=lfs diff=lfs merge=lfs -text
|
| 14 |
+
*.npy filter=lfs diff=lfs merge=lfs -text
|
| 15 |
+
*.npz filter=lfs diff=lfs merge=lfs -text
|
| 16 |
+
*.onnx filter=lfs diff=lfs merge=lfs -text
|
| 17 |
+
*.ot filter=lfs diff=lfs merge=lfs -text
|
| 18 |
+
*.parquet filter=lfs diff=lfs merge=lfs -text
|
| 19 |
+
*.pb filter=lfs diff=lfs merge=lfs -text
|
| 20 |
+
*.pickle filter=lfs diff=lfs merge=lfs -text
|
| 21 |
+
*.pkl filter=lfs diff=lfs merge=lfs -text
|
| 22 |
+
*.pt filter=lfs diff=lfs merge=lfs -text
|
| 23 |
+
*.pth filter=lfs diff=lfs merge=lfs -text
|
| 24 |
+
*.rar filter=lfs diff=lfs merge=lfs -text
|
| 25 |
+
*.safetensors filter=lfs diff=lfs merge=lfs -text
|
| 26 |
+
saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
| 27 |
+
*.tar.* filter=lfs diff=lfs merge=lfs -text
|
| 28 |
+
*.tar filter=lfs diff=lfs merge=lfs -text
|
| 29 |
+
*.tflite filter=lfs diff=lfs merge=lfs -text
|
| 30 |
+
*.tgz filter=lfs diff=lfs merge=lfs -text
|
| 31 |
+
*.wasm filter=lfs diff=lfs merge=lfs -text
|
| 32 |
+
*.xz filter=lfs diff=lfs merge=lfs -text
|
| 33 |
+
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
+
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
+
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
| 36 |
+
BoxF1_curve.png filter=lfs diff=lfs merge=lfs -text
|
| 37 |
+
BoxP_curve.png filter=lfs diff=lfs merge=lfs -text
|
| 38 |
+
BoxR_curve.png filter=lfs diff=lfs merge=lfs -text
|
| 39 |
+
confusion_matrix_normalized.png filter=lfs diff=lfs merge=lfs -text
|
| 40 |
+
labels_correlogram.jpg filter=lfs diff=lfs merge=lfs -text
|
| 41 |
+
labels.jpg filter=lfs diff=lfs merge=lfs -text
|
| 42 |
+
results.png filter=lfs diff=lfs merge=lfs -text
|
| 43 |
+
train_batch0.jpg filter=lfs diff=lfs merge=lfs -text
|
| 44 |
+
train_batch1.jpg filter=lfs diff=lfs merge=lfs -text
|
| 45 |
+
train_batch2.jpg filter=lfs diff=lfs merge=lfs -text
|
| 46 |
+
val_batch0_labels.jpg filter=lfs diff=lfs merge=lfs -text
|
| 47 |
+
val_batch0_pred.jpg filter=lfs diff=lfs merge=lfs -text
|
| 48 |
+
val_batch1_labels.jpg filter=lfs diff=lfs merge=lfs -text
|
| 49 |
+
val_batch1_pred.jpg filter=lfs diff=lfs merge=lfs -text
|
| 50 |
+
val_batch2_labels.jpg filter=lfs diff=lfs merge=lfs -text
|
| 51 |
+
val_batch2_pred.jpg filter=lfs diff=lfs merge=lfs -text
|
BoxF1_curve.png
ADDED
|
Git LFS Details
|
BoxPR_curve.png
ADDED
|
BoxP_curve.png
ADDED
|
Git LFS Details
|
BoxR_curve.png
ADDED
|
Git LFS Details
|
README.md
ADDED
|
@@ -0,0 +1,98 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
license: mit
|
| 3 |
+
base_model:
|
| 4 |
+
- Ultralytics/YOLO11
|
| 5 |
+
pipeline_tag: object-detection
|
| 6 |
+
tags:
|
| 7 |
+
- english
|
| 8 |
+
- YOLO
|
| 9 |
+
- Ultralytics
|
| 10 |
+
- Smoking
|
| 11 |
+
---
|
| 12 |
+
# 🚬 Smoke Detection with YOLOv11-Medium
|
| 13 |
+
|
| 14 |
+
This repository contains a custom-trained **YOLOv11-Medium** object detection model designed to detect **cigarette smoke** in images and videos. It is ideal for use in **surveillance systems**, **public safety**, and **smoking zone enforcement**.
|
| 15 |
+
|
| 16 |
+
---
|
| 17 |
+
|
| 18 |
+
## 📊 Model Performance
|
| 19 |
+
|
| 20 |
+
| Metric | Value |
|
| 21 |
+
| ----------------- | ------ |
|
| 22 |
+
| **Precision** | 85.62% |
|
| 23 |
+
| **Recall** | 76.92% |
|
| 24 |
+
| **mAP\@0.5** | 82.90% |
|
| 25 |
+
| **mAP\@0.5:0.95** | 44.69% |
|
| 26 |
+
|
| 27 |
+
> Evaluated on a custom Roboflow dataset using YOLOv11 medium variant trained for optimal balance of accuracy and speed.
|
| 28 |
+
|
| 29 |
+
---
|
| 30 |
+
|
| 31 |
+
## 🧟♂️ Model Details
|
| 32 |
+
|
| 33 |
+
* **Model**: YOLOv11-Medium
|
| 34 |
+
* **Task**: Object Detection
|
| 35 |
+
* **Classes**: `cigarette`
|
| 36 |
+
* **Framework**: [Ultralytics YOLOv11](https://github.com/ultralytics/ultralytics)
|
| 37 |
+
* **Training Source**: Roboflow Universe
|
| 38 |
+
|
| 39 |
+
---
|
| 40 |
+
|
| 41 |
+
## 📁 Dataset
|
| 42 |
+
|
| 43 |
+
* **Name**: Cigarette Smoke Detection
|
| 44 |
+
* **Source**: [Roboflow Dataset](https://universe.roboflow.com/yolo-pdvpx/cigarette-h2p1m)
|
| 45 |
+
* **Format**: YOLO
|
| 46 |
+
* **Annotations**: Bounding Boxes
|
| 47 |
+
|
| 48 |
+
---
|
| 49 |
+
|
| 50 |
+
## 💡 Usage
|
| 51 |
+
|
| 52 |
+
### 1. Load the Model
|
| 53 |
+
|
| 54 |
+
```python
|
| 55 |
+
from ultralytics import YOLO
|
| 56 |
+
|
| 57 |
+
model = YOLO("path/to/best.pt") # Replace with your model path
|
| 58 |
+
```
|
| 59 |
+
|
| 60 |
+
### 2. Run Inference on an Image
|
| 61 |
+
|
| 62 |
+
```python
|
| 63 |
+
results = model("your_image.jpg", save=True)
|
| 64 |
+
results.show()
|
| 65 |
+
```
|
| 66 |
+
|
| 67 |
+
### 3. Run Inference on a Video
|
| 68 |
+
|
| 69 |
+
```python
|
| 70 |
+
results = model("your_video.mp4", stream=True)
|
| 71 |
+
for r in results:
|
| 72 |
+
r.show()
|
| 73 |
+
```
|
| 74 |
+
|
| 75 |
+
---
|
| 76 |
+
|
| 77 |
+
```python
|
| 78 |
+
model.export(format="onnx")
|
| 79 |
+
```
|
| 80 |
+
|
| 81 |
+
---
|
| 82 |
+
|
| 83 |
+
## 📜 License
|
| 84 |
+
|
| 85 |
+
This model is available under the MIT License. Refer to the LICENSE file for more details.
|
| 86 |
+
|
| 87 |
+
---
|
| 88 |
+
|
| 89 |
+
## 🤖 Author
|
| 90 |
+
|
| 91 |
+
Uploaded and maintained by: **\[Uppada Enos]**
|
| 92 |
+
Contact: \[[enosuppada2005@gmail.com](enosuppada2005@gmail.com)]
|
| 93 |
+
|
| 94 |
+
---
|
| 95 |
+
|
| 96 |
+
## 🌐 Model Hub
|
| 97 |
+
|
| 98 |
+
You can access and test this model directly via Hugging Face Spaces or API once published.
|
best.pt
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:0ef558d3cf049d0acbb3f2322bc9e4e53db1a107426e3669622176c30c054d82
|
| 3 |
+
size 40509349
|
confusion_matrix.png
ADDED
|
confusion_matrix_normalized.png
ADDED
|
Git LFS Details
|
labels.jpg
ADDED
|
Git LFS Details
|
labels_correlogram.jpg
ADDED
|
Git LFS Details
|
results.csv
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
epoch,time,train/box_loss,train/cls_loss,train/dfl_loss,metrics/precision(B),metrics/recall(B),metrics/mAP50(B),metrics/mAP50-95(B),val/box_loss,val/cls_loss,val/dfl_loss,lr/pg0,lr/pg1,lr/pg2
|
| 2 |
+
1,61.6575,2.55441,4.17021,2.19689,0.54002,0.41393,0.39968,0.19368,1.74455,2.10085,1.5602,0.0673235,0.000330065,0.000330065
|
| 3 |
+
2,119.92,2.24661,2.57943,1.9466,0.58516,0.55128,0.59652,0.27811,1.70036,1.52985,1.47648,0.0343016,0.000641507,0.000641507
|
| 4 |
+
3,178.5,2.05606,2.20276,1.73122,0.76701,0.57692,0.67426,0.33289,1.72325,1.42233,1.42857,0.00125775,0.000930948,0.000930948
|
| 5 |
+
4,236.78,1.96381,1.9806,1.62264,0.73032,0.57286,0.70852,0.33878,1.81984,1.28831,1.42777,0.000901,0.000901,0.000901
|
| 6 |
+
5,295.481,1.9155,1.8592,1.58705,0.76849,0.64103,0.73533,0.36815,1.68015,1.17613,1.34742,0.000868,0.000868,0.000868
|
| 7 |
+
6,353.902,1.85223,1.6956,1.53948,0.83522,0.71482,0.79398,0.39368,1.66345,1.10963,1.33195,0.000835,0.000835,0.000835
|
| 8 |
+
7,411.908,1.82862,1.64859,1.51253,0.78807,0.66667,0.75795,0.36738,1.70381,1.1189,1.33361,0.000802,0.000802,0.000802
|
| 9 |
+
8,470.188,1.77525,1.53503,1.48176,0.73839,0.76282,0.80984,0.41311,1.64764,1.09401,1.2848,0.000769,0.000769,0.000769
|
| 10 |
+
9,528.329,1.74982,1.51936,1.44099,0.9057,0.67723,0.81205,0.41097,1.61583,1.02473,1.29448,0.000736,0.000736,0.000736
|
| 11 |
+
10,586.372,1.74603,1.49073,1.4562,0.80603,0.75641,0.81043,0.4065,1.67276,1.06711,1.33151,0.000703,0.000703,0.000703
|
| 12 |
+
11,644.238,1.70258,1.3957,1.41809,0.86302,0.72699,0.82452,0.40202,1.68068,1.03815,1.31049,0.00067,0.00067,0.00067
|
| 13 |
+
12,702.568,1.66178,1.39864,1.40042,0.86215,0.73718,0.81874,0.40936,1.66186,1.03966,1.33055,0.000637,0.000637,0.000637
|
| 14 |
+
13,760.768,1.64503,1.2869,1.3756,0.85704,0.77564,0.829,0.44806,1.57708,0.92028,1.2834,0.000604,0.000604,0.000604
|
| 15 |
+
14,818.707,1.60885,1.29068,1.36613,0.89087,0.72436,0.83831,0.43034,1.64164,0.98011,1.32385,0.000571,0.000571,0.000571
|
| 16 |
+
15,876.849,1.59296,1.24734,1.36747,0.84863,0.76282,0.84048,0.42416,1.64199,0.95917,1.30569,0.000538,0.000538,0.000538
|
| 17 |
+
16,934.82,1.55322,1.18723,1.33105,0.89017,0.72736,0.84142,0.4201,1.65433,0.98758,1.2875,0.000505,0.000505,0.000505
|
| 18 |
+
17,993.074,1.52138,1.16113,1.30727,0.88073,0.78205,0.85747,0.43186,1.65453,0.93064,1.29296,0.000472,0.000472,0.000472
|
| 19 |
+
18,1053.66,1.49663,1.13472,1.29007,0.89096,0.74359,0.83689,0.44117,1.61746,0.94731,1.28846,0.000439,0.000439,0.000439
|
results.png
ADDED
|
Git LFS Details
|
train.py
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from ultralytics import YOLO
|
| 2 |
+
model = YOLO('yolo11m.pt')
|
| 3 |
+
|
| 4 |
+
model.train(
|
| 5 |
+
data='/content/cigarette-3/data.yaml',
|
| 6 |
+
epochs=30,
|
| 7 |
+
imgsz=640,
|
| 8 |
+
batch=16,
|
| 9 |
+
patience=5,
|
| 10 |
+
optimizer="SGD",
|
| 11 |
+
lr0=0.001,
|
| 12 |
+
lrf=0.01,
|
| 13 |
+
momentum=0.937,
|
| 14 |
+
weight_decay=0.0005,
|
| 15 |
+
warmup_epochs=3,
|
| 16 |
+
hsv_h=0.015, hsv_s=0.7, hsv_v=0.4,
|
| 17 |
+
translate=0.1, scale=0.5,
|
| 18 |
+
fliplr=0.5, mosaic=1.0, mixup=0.1,
|
| 19 |
+
device=0,
|
| 20 |
+
cache=True
|
| 21 |
+
)
|
train_batch0.jpg
ADDED
|
Git LFS Details
|
train_batch1.jpg
ADDED
|
Git LFS Details
|
train_batch2.jpg
ADDED
|
Git LFS Details
|
val_batch0_labels.jpg
ADDED
|
Git LFS Details
|
val_batch0_pred.jpg
ADDED
|
Git LFS Details
|
val_batch1_labels.jpg
ADDED
|
Git LFS Details
|
val_batch1_pred.jpg
ADDED
|
Git LFS Details
|
val_batch2_labels.jpg
ADDED
|
Git LFS Details
|
val_batch2_pred.jpg
ADDED
|
Git LFS Details
|