intel / dffml

The easiest way to use Machine Learning. Mix and match underlying ML libraries and data set sources. Generate new datasets or modify existing ones with ease.
https://intel.github.io/dffml/main/
MIT License
253 stars 138 forks source link

plugin: model: darknet: Create YOLO Model #10

Open pdxjohnny opened 5 years ago

pdxjohnny commented 5 years ago

DFFML is hoping to participate in Google Summer of Code (GSoC) under the Python Software Foundation umbrella. You can read all about what this means at http://python-gsoc.org/. This issue, and any others tagged gsoc and project are not generally available bugs, but related to project ideas for GSoC.

Project Idea: YOLO/darknet Model.

Project description: DFFML's initial release included a Model for Tensorflows DNN estimator.

YOLOv1,2,3 are awesome, it would be possible to wrap the YOLO work in a DFFML model and then it could be used within the DFFML API.

This involves filling out the Model abstract base class, just as the Tensorflow DNN does (use this as an example, or probably more as an education because this is likely to be rather different as we're working with images).

Tensorflow DNN: https://github.com/intel/dffml/blob/master/model/tensorflow/dffml_model_tensorflow/model/dnn.py

Model ABC: https://github.com/intel/dffml/blob/dd8007d0c9f8c58c35c94faf148e2b5d6ce4c101/dffml/model/model.py#L30-L52

Skills: Python, git Difficulty level: Hard

Related Readings/Links:

Demo video YOLOv3

Potential mentors: @pdxjohnny

Getting Started: Start by copying the directory model/tensorflow to model/darknet and re-naming everything. Then move dnn.py to darknet.py (still re-naming everything) and make sure all the tests in the model/darknet directory still pass. Then you'll need to gut the DNN class and start replacing it withsubprocess.call or check_output or whatever which will call out the the darknet binary which you compiled from Joseph's darknet repo for training, accuracy, and prediction (which is object detection in this case).

What we want to see in your application: Describe how you intend to solve the problem, and give us some "stretch goals", perhaps use the Python C bindings instead of calling subprocess out to the darknet binary. Don't forget to include some time for building appropriate tests.

hsfzxjy commented 5 years ago

@pdxjohnny Hi. I'm Jingyi Xie from China, an undergraduate from University of Science and Technology of China. I've used Python for many years to accomplish various jobs, including some deep learning tasks. I would like to participate in GSOC and contribute to this challenging issue. Now I'm wondering what should I do for my first commit? It'll be appreciated if you could give some advice. Thanks!

pdxjohnny commented 5 years ago

Hi @hsfzxjy ! Thanks for your interest in DFFML! I'd say the best place for you to start is with the new model tutorial.

You could implement a Model class using an ML library you're familiar with, or do it without a library if you'd rather.

hsfzxjy commented 5 years ago

OK. I will try to get it ready in one day or two.

hsfzxjy commented 5 years ago

@pdxjohnny I've created a simple demo to classify IRIS dataset using pytorch. Here is the PR: https://github.com/intel/dffml/pull/42

hsfzxjy commented 5 years ago

Hi @pdxjohnny . I've just finished my GSOC application and sent it to your gmail. Would you please have a look and give some advice? Thanks!