Skip to content

A work in progress implementation of the YOLO object detection in JavaScript running on top of Tensorflow.js

License

Notifications You must be signed in to change notification settings

hiddentn/yolo.js

Repository files navigation

YOLO.JS

A work in progress implementaion of the YOLO object detection in javascript running on top of Tensorflow.js

Build Status version npm license

this Readme is outdated and i will edit it soon

Examples

YOLOv2-Light

detections with yolo-v2-light with 416x416 input size on a GTX 1050ti/Chrome/Win10x64 ± 25 FPS 💨

YOLOv3

detections with yolo-v3 pretrained weights with 224x224 input size on a GTX 1050ti/Chrome/Win10x64 ± 9 FPS

Video source source: https://www.youtube.com/watch?v=u68EWmtKZw0

Usage

> git clone ... 
> npm install
> webpack

if everything went sucessfully, you should see a yolo.js in the /dist folder

Detector:eyes:

<script src="https://cdn.jsdelivr.net/npm/@tensorflow/[email protected]/dist/tf.min.js"></script>
<script src="path/to/yolo/yolo.js">
const config = {
    // Model URL
    modelURL: '',
    // Model version : this is important as there is some post processing changes between yolov2 and yolov3
    // 'v2' ||'v3'
    version: 'v2',
    // this is the size of the model input image : you can lower this to gain more performance
    modelSize: 416,
    // Intersection over inion Threshold and Class probability Threshold
    // we use these to filter the output of the neuralnet
    iouThreshold: 0.5,
    classProbThreshold: 0.5,
    // max detection output
    maxOutput: 20,
    // class labels
    labels: COCO_CLASSES,
    // more info see: https://arxiv.org/pdf/1612.08242.pdf
    anchors: [
        [0.57273, 0.677385],
        [1.87446, 2.06253],
        [3.33843, 5.47434],
        [7.88282, 3.52778],
        [9.77052, 9.16828],
    ],
    masks: [[0, 1, 2, 3, 4]],
    // this is just more customization options concerning the preprocessing phase
    preProcessingOptions: {
        // 'NearestNeighbor'  - this output a more accurate image but but take a bit longer
        // 'Bilinear' - this faster but scrifices image quality
        ResizeOption: 'Bilinear',
        AlignCorners: true,
  },
}
// Or you can use one of the pre made configs but you need to specify the model url yourself //
const config = {
    ...YOLO.tinyYOLOLiteConfig,
    // you can also edit them here
    modelSize: 224,
    modelURL: '',
}

const detector = new YOLO.Detector(config);

detector.load().then(() => {
    detector.detectAsync(img).then((dets) => {
        console.log(dets)
    });
});
// OR 
await detector.load()
const detections = await detector.detectAsync()
console.log(detections)

Classifier:telescope:

WIP

About

A work in progress implementation of the YOLO object detection in JavaScript running on top of Tensorflow.js

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published