Kai is a objection detection cloud services based on YOLO/Darknet.
- Backend on the YOLO/Darknet of golang binding
- Convenient RESTful to use
- support S3 download and upload
- support Ftp download and upload
- nvidia-docker 2.0
- CUDA
- cudnn
docker pull yummybian/kai
sudo docker run --runtime nvidia -it --rm -p 8000:8000 -v /path/to/config.yaml:/kai-service/config.yaml yummybian/kai bash
or
sudo docker run --runtime nvidia -d --name kai -p 8000:8000 -v /path/to/config.yaml:/kai-service/config.yaml yummybian/kai First make sure you have go-yolo installed on your machine.
You can store jobs on memory or MongoDB. On your config.yaml file:
- For MongoDB, set
dbdriver: "mongo"andmongohost: "your.mongo.host" - For memory, just set
dbdriver: "memory"and you're good to go.
Please be aware that in case you use memory, Kai will persist the data only while the application is running.
Finally download weight file from the darknet project into the root directory of kai.
Run!
$ make run
Make sure you have a local instance of MongoDB running.
$ make test
In order to create a job you need to specify a HTTP or S3 address of a source and a S3 address for the destination.
Given a JSON file called job.json:
{
"source": "http://www.example.com/example.jpg",
"destination": "http://AWSKEY:AWSSECRET@BUCKET.s3.amazonaws.com/DIRECTORY",
"cate": 0
}or
{
"source": "http://AWSKEY:AWSSECRET@BUCKET.s3.amazonaws.com/DIRECTORY/example.jpg",
"destination": "http://AWSKEY:AWSSECRET@BUCKET.s3.amazonaws.com/DIRECTORY",
"cate": 0
}Note: key cate 0 for image, 1 for video
Then, make a POST request to the API:
$ curl -X POST -H "Content-Type: application/json" -d @job.json http://api.host.com/jobs
< HTTP/1.1 200 OK$ curl -X GET http://api.host.com/jobs
< HTTP/1.1 200 OK{
"id": "7cJ5BtLwcFcQ8Vi8",
"source": "http://AWSKEY:AWSSECRET@BUCKET.s3.amazonaws.com/DIRECTORY/example.jpg",
"destination": "http://AWSKEY:AWSSECRET@BUCKET.s3.amazonaws.com/DIRECTORY",
"mediaType": {
"cate": 0,
"name": "example",
"container": "jpg"
},
"status": "created",
"details": ""
}With the Job ID:
$ curl -X GET http://api.host.com/jobs/7cJ5BtLwcFcQ8Vi8With the Job ID:
$ curl -X GET http://api.host.com/jobs/7cJ5BtLwcFcQ8Vi8/startThen you should request job details in order to follow the status of each step (downloading, processing, uploading).
- Fork it
- Create your feature branch:
git checkout -b my-awesome-new-feature - Commit your changes:
git commit -m 'Add some awesome feature' - Push to the branch:
git push origin my-awesome-new-feature - Submit a pull request
This code is under Apache 2.0 License.