package
1.3.7
Repository: https://github.com/lddl/go-darknet.git
Documentation: pkg.go.dev

# README

Example Go application using go-darknet and REST

This is an example Go server application (in terms of REST) which uses go-darknet.

Run

Navigate to example folder:

cd $GOPATH/github.com/LdDl/go-darknet/example/rest_example

Download dataset (sample of image, coco.names, yolov3.cfg, yolov3.weights).

./download_data_v3.sh

Note: you don't need coco.data file anymore, because script below does insert coco.names into 'names' filed in yolov3.cfg file (so AlexeyAB's fork can deal with it properly) So last rows in yolov3.cfg file will look like:

......
[yolo]
mask = 0,1,2
anchors = 10,13,  16,30,  33,23,  30,61,  62,45,  59,119,  116,90,  156,198,  373,326
classes=80
num=9
jitter=.3
ignore_thresh = .7
truth_thresh = 1
random=1
names = coco.names # this is path to coco.names file

Build and run program

go build main.go && ./main --configFile=yolov3.cfg --weightsFile=yolov3.weights --port 8090

After server started check if REST-requests works. We provide cURL-based example

curl -F '[email protected]' 'http://localhost:8090/detect_objects'

Servers response should be something like this:

{
    "net_time": "43.269289ms",
    "overall_time": "43.551604ms",
    "num_detections": 44,
    "detections": [
        {
            "class_id": 7,
            "class_name": "truck",
            "probability": 49.51231,
            "start_point": {
                "x": 0,
                "y": 136
            },
            "end_point": {
                "x": 85,
                "y": 311
            }
        },
        {
            "class_id": 2,
            "class_name": "car",
            "probability": 36.36933,
            "start_point": {
                "x": 95,
                "y": 152
            },
            "end_point": {
                "x": 186,
                "y": 283
            }
        },
        {
            "class_id": 7,
            "class_name": "truck",
            "probability": 48.417683,
            "start_point": {
                "x": 95,
                "y": 152
            },
            "end_point": {
                "x": 186,
                "y": 283
            }
        },
        {
            "class_id": 7,
            "class_name": "truck",
            "probability": 45.652023,
            "start_point": {
                "x": 694,
                "y": 178
            },
            "end_point": {
                "x": 798,
                "y": 310
            }
        },
        {
            "class_id": 2,
            "class_name": "car",
            "probability": 76.8402,
            "start_point": {
                "x": 1,
                "y": 145
            },
            "end_point": {
                "x": 84,
                "y": 324
            }
        },
        {
            "class_id": 7,
            "class_name": "truck",
            "probability": 25.592052,
            "start_point": {
                "x": 107,
                "y": 89
            },
            "end_point": {
                "x": 215,
                "y": 263
            }
        },
        {
            "class_id": 2,
            "class_name": "car",
            "probability": 99.87823,
            "start_point": {
                "x": 511,
                "y": 185
            },
            "end_point": {
                "x": 748,
                "y": 328
            }
        },
        {
            "class_id": 2,
            "class_name": "car",
            "probability": 99.819336,
            "start_point": {
                "x": 261,
                "y": 189
            },
            "end_point": {
                "x": 427,
                "y": 322
            }
        },
        {
            "class_id": 2,
            "class_name": "car",
            "probability": 99.64055,
            "start_point": {
                "x": 426,
                "y": 197
            },
            "end_point": {
                "x": 539,
                "y": 311
            }
        },
        {
            "class_id": 2,
            "class_name": "car",
            "probability": 74.56263,
            "start_point": {
                "x": 692,
                "y": 186
            },
            "end_point": {
                "x": 796,
                "y": 316
            }
        },
        {
            "class_id": 2,
            "class_name": "car",
            "probability": 72.79756,
            "start_point": {
                "x": 388,
                "y": 206
            },
            "end_point": {
                "x": 437,
                "y": 276
            }
        },
        {
            "class_id": 1,
            "class_name": "bicycle",
            "probability": 72.27595,
            "start_point": {
                "x": 178,
                "y": 270
            },
            "end_point": {
                "x": 268,
                "y": 406
            }
        },
        {
            "class_id": 0,
            "class_name": "person",
            "probability": 97.30075,
            "start_point": {
                "x": 143,
                "y": 135
            },
            "end_point": {
                "x": 268,
                "y": 343
            }
        }
    ]
}

# Structs

DarknetDetection Information about single detection.
DarknetPoint image.Image point.
DarknetResp Response.