Learn about our RFC process, Open RFC meetings & more.Join in the discussion! »

@vapi/node-yolo

2.1.5 • Public • Published

node-yolo

This Node.js C++ addon allow you to use a state-of-the-art, real-time object detection system called Yolo.
This addon came out from a computer engineering final project, VAPi, guided by Patrício Domingues at Institute Polytechnic of Leiria.
The version 1.x.x was developed by Rúben Caceiro and Ricardo Maltez during the final project.
The version 2.x.x was sponsored by Instituto de Telecomunicações developed by Rúben Caceiro and guided by Patrício Domingues.

Pre-requirements

  • C/C++ Compiler (tested with gcc & g++)
  • nVidia graphic card (Only if you want to use GPU acceleration):
  • Node.js (tested on node.js>= 8)
  • node-gyp
  • OpenCV

Note 1: Before any update please see the changelog.
Note 2: The versions prior 2.0.0 of the module has the ImageMagick as a dependency, but with OpenCV we can archive the desired goal. And by this we remove one dependency of the project.

Recommended* hardware requirements

  • Quad-core processor**
  • 10 GB to run node-yolo
  • At least 4GB of GPU memory***, if you want use GPU acceleration

Minimum* hardware requirements

  • Dual-core processor**
  • 8 GB to run node-yolo
  • At least 4GB of GPU memory***, if you want use GPU acceleration

Installation

npm i @vapi/node-yolo --save

How To Use

const Yolo = require('@vapi/node-yolo');
const detector = new Yolo("darknet_configs", "cfg/coco.data", "cfg/yolov3.cfg", "yolov3.weights");
detector.detectImage(path,threshold,frames_to_process)
        .then(detections =>
        {
         // here you receive the detections
        })
        .catch(error =>
        {
         // here you can handle the errors. Ex: Out of memory
        });
    
detector.detectVideo(path,threshold,frames_to_process)
        .then(detections =>
        {
         // here you receive the detections
        })
        .catch(error =>
        {
         // here you can handle the errors. Ex: Out of memory
        });

path, required, represents the path to the file

threshold, not required, default behaviour is 0.5, represents the threshold to yolo filter the detections

frames_to_process, not required, default behaviour is 1/1, represents the number of frames that developer wants to process, this means 1/3 process 1 frame for each 3.

darknet_configs is a folder where you should put the Yolo weights, cfg and data files. You need to create two folder, cfg and data and put the files for each one. Like this:

.
├── darknet_configs         # The folder for the Yolo weight, cfg and data files
│   ├── cfg                 # cfg folder
|          |── coco.data
|          |── yolov3.cfg
│   ├── data                # data folder
|   |      |── coco.names
│   └── yolov3.weights      # YoloV3 weights file
└── ...

Note 1: Our suggestion for better accuracy use coco.data, coco.names, yolov3-spp.cfg and yolov3-spp.weights.
Note 2: Our suggestion for faster detection use coco.data, coco.names, yolov3-tiny.cfg and yolov3-tiny.weights.
Note 3: Our suggestion for best of two worlds use coco.data, coco.names, yolov3.cfg and yolov3.weights.

video detection object

Field Type Description
frame long/int64 number of the frame
millisecond double the millisecond that frame appear on video
timeSpentForClassification double time used to classifies one frame
detections array array of detection object, containing all detections

image detection object

Field Type Description
timeSpentForClassification double time used to classifies one image
detections array array of detection object, containing all detections

detection object

Field Type Description
className string name of the class of the object detected
probability double the probability that this className is correct
box box object that contains box info of the object

box object

Field Type Description
x double x coordinate in pixels of the picture
y double y coordinate in pixels of the picture
w double width from x point in pixels
h double height from y point in pixels

* To get that metrics we calculate the usage for video with 3 hours at 60fps.
**If you do not use gpu, may should consider a processor with higher number of cores.
***The weaker graphics card used was a nVidia GTX960M

Install

npm i @vapi/node-yolo

DownloadsWeekly Downloads

5

Version

2.1.5

License

MIT

Unpacked Size

80.4 kB

Total Files

19

Last publish

Collaborators

  • avatar
  • avatar