Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/bennetthardwick/darknet.js
A NodeJS wrapper of pjreddie's darknet / yolo.
https://github.com/bennetthardwick/darknet.js
darknet javascript machine-learning neural-network nodejs object-detection yolo yolov3-tiny
Last synced: 12 days ago
JSON representation
A NodeJS wrapper of pjreddie's darknet / yolo.
- Host: GitHub
- URL: https://github.com/bennetthardwick/darknet.js
- Owner: bennetthardwick
- Created: 2018-05-27T14:50:57.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2022-12-09T19:34:01.000Z (over 1 year ago)
- Last Synced: 2024-06-02T16:18:03.940Z (25 days ago)
- Topics: darknet, javascript, machine-learning, neural-network, nodejs, object-detection, yolo, yolov3-tiny
- Language: C++
- Size: 252 KB
- Stars: 65
- Watchers: 8
- Forks: 27
- Open Issues: 9
-
Metadata Files:
- Readme: README.md
Lists
- awesome-yolo-object-detection - bennetthardwick/darknet.js
README
# Darknet.JS
A Node wrapper of pjreddie's open source neural network framework Darknet, using the Foreign Function Interface Library. Read: YOLOv3 in JavaScript.
## Prerequisites
- Linux, Windows (Linux sub-system),
- Node
- Build tools (make, gcc, etc.)## Examples
To run the examples, run the following commands:
```sh
# Clone the repositorys
git clone https://github.com/bennetthardwick/darknet.js.git darknet && cd darknet
# Install dependencies and build Darknet
npm install
# Compile Darknet.js library
npx tsc
# Run examples
./examples/example
```Note: The example weights are quite large, the download might take some time
## Installation
You can install darknet with npm using the following command:
```
npm install darknet
```If you'd like to enable CUDA and/or CUDANN, export the flags `DARKNET_BUILD_WITH_GPU=1` for CUDA, and `DARKNET_BUILD_WITH_CUDNN=1` for CUDANN, and rebuild:
```
export DARKNET_BUILD_WITH_GPU=1
export DARKNET_BUILD_WITH_CUDNN=1
npm rebuild darknet
```You can enable OpenMP by also exporting the flag `DARKNET_BUILD_WITH_OPENMP=1`;
You can also build for a different architecture by using the `DARKNET_BUILD_WITH_ARCH` flag.
## Usage
To create an instance of darknet.js, you need a three things. The trained weights, the configuration file they were trained with and a list of the names of all the classes.
```typescript
import { Darknet } from "darknet";// Init
let darknet = new Darknet({
weights: "./cats.weights",
config: "./cats.cfg",
names: ["dog", "cat"],
});// Detect
console.log(darknet.detect("/image/of/a/dog.jpg"));
```In conjuction with [opencv4nodejs](https://github.com/justadudewhohacks/opencv4nodejs), Darknet.js can also be used to detect objects inside videos.
```javascript
const fs = require("fs");
const cv = require("opencv4nodejs");
const { Darknet } = require("darknet");const darknet = new Darknet({
weights: "yolov3.weights",
config: "cfg/yolov3.cfg",
namefile: "data/coco.names",
});const cap = new cv.VideoCapture("video.mp4");
let frame;
let index = 0;
do {
frame = cap.read().cvtColor(cv.COLOR_BGR2RGB);
console.log(darknet.detect(frame));
} while (!frame.empty);
```### Example Configuration
You can download pre-trained weights and configuration from pjreddie's website. The latest version (yolov3-tiny) is linked below:
- [weights](https://pjreddie.com/media/files/yolov3-tiny.weights)
- [config](https://github.com/pjreddie/darknet/blob/master/cfg/yolov3-tiny.cfg)
- [names](https://raw.githubusercontent.com/pjreddie/darknet/master/data/coco.names)If you don't want to download that stuff manually, navigate to the `examples` directory and issue the `./example` command. This will download the necessary files and run some detections.
## Built-With
- [Darknet](https://github.com/pjreddie/darknet)