add experimental nanodet object detection

master
Vladimir Mandic 2021-03-17 11:32:26 -04:00
parent c4a3b6f1f9
commit 5c012ed4cc
5 changed files with 28 additions and 2 deletions

@ -154,8 +154,8 @@ config = {
},
embedding: {
enabled: false, // to improve accuracy of face embedding extraction it is recommended
// to enable detector.rotation and mesh.enabled
enabled: false, // to improve accuracy of face embedding extraction it is
// highly recommended to enable detector.rotation and mesh.enabled
modelPath: '../models/mobileface.json',
},
},
@ -199,6 +199,16 @@ config = {
modelPath: '../models/handskeleton.json',
},
},
object: {
enabled: false,
modelPath: '../models/nanodet.json',
minConfidence: 0.15, // threshold for discarding a prediction
iouThreshold: 0.25, // threshold for deciding whether boxes overlap too much
// in non-maximum suppression
maxResults: 10, // maximum number of objects detected in the input
skipFrames: 13, // how many frames to go without re-running the detector
},
};
```

@ -9,6 +9,7 @@
- Age & Gender Prediction: [**SSR-Net**](https://github.com/shamangary/SSR-Net)
- Emotion Prediction: [**Oarriaga**](https://github.com/oarriaga/face_classification)
- Face Embedding: [**BecauseofAI MobileFace**](https://github.com/becauseofAI/MobileFace)
- ObjectDetection: [**NanoDet**](https://github.com/RangiLyu/nanodet)
- Image Filters: [**WebGLImageFilter**](https://github.com/phoboslab/WebGLImageFilter)
- Pinto Model Zoo: [**Pinto**](https://github.com/PINTO0309/PINTO_model_zoo)

@ -12,6 +12,7 @@ Default models in Human library are:
- **Age Detection**: SSR-Net Age IMDB
- **Body Analysis**: PoseNet
- **Face Embedding**: BecauseofAI MobileFace Embedding
- **Object Detection**: NanoDet
## Notes
@ -50,6 +51,7 @@ Default models in Human library are:
| Sirius-AI MobileFaceNet | 125K | mobilefacenet.json | 5.0M | mobilefacenet.bin | 139 |
| BecauseofAI MobileFace | 33K | mobileface.json | 2.1M | mobileface.bin | 75 |
| FaceBoxes | 212K | faceboxes.json | 2.0M | faceboxes.bin | N/A |
| NanoDet | 255K | nanodet.json | 1.9M | nanodet.bin | 524 |
<br>

@ -57,6 +57,18 @@ result = {
annotations, // <array of 3D landmarks [ landmark: <array of points> ]> 5 annotated landmakrs
}
],
object: // <array of detected objects>
[
{
score, // <number>
class, // <number> class id based on coco labels
label, // <string> class label based on coco labels
center, // [<number>, <number>] x,y coordinates of the object center
box, // [<number>, <number>, <number>, <number>] x1, y1, x2, y2 coordinates of the box around the detected object
centerRaw, // same as center but normalized to range 0..1
boxRaw, // same as box, but normalized to range 0..1
}
],
gesture: // <array of objects object>
[
{

@ -70,6 +70,7 @@ Additional helper functions inside `human.draw`:
human.draw.face(canvas, results.face) // draw face detection results to canvas
human.draw.body(canvas, results.body) // draw body detection results to canvas
human.draw.hand(canvas, result.hand) // draw hand detection results to canvas
human.draw.object(canvas, result.object) // draw object detection results to canvas
human.draw.gesture(canvas, result.gesture) // draw detected gesture results to canvas
```