Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Object detection workflow #735

Merged
merged 6 commits into from
May 25, 2016

Conversation

gheinrich
Copy link
Contributor

@gheinrich gheinrich commented May 13, 2016

Planning to split this into small pull requests. This is the complete object detection work flow.

This includes frameworks for data and view extensions.

The object detection data extension creates datasets from object detection datasets. On the main page, select New dataset > Images > Object Detection
select-object-detection

The dataset is configured with a form:
object-detection-form

To create the model: on the main page, select New Model > Images > Object Detection.

After the model is trained, on the model page, select the bounding box view extension:
select-bounding-box-view

Then proceed to inference as usual. If you do Test Many, you may see something like:
detector-inference

This includes as a bonus:
- an image gradient work flow (the data extension creates datasets as in the image regression example) and the view extension displays arrows that point to the "light" in the images,
- an image processing work flow (the data extension creates datasets with images as inputs/outputs - useful for FCNs)

Example of gradient visualization:
gradient-config

gradients-visualization

@gheinrich gheinrich force-pushed the object-detection-workflow branch 4 times, most recently from 154a8dc to 6f97b92 Compare May 19, 2016 15:33
@lukeyeager
Copy link
Member

lukeyeager commented May 19, 2016

datum_bbox = caffe.io.bbox_to_datum(label,
AttributeError: 'module' object has no attribute 'bbox_to_datum'

I removed bbox_to_datum from caffe.io because I figured we could just include it in our code rather than checking it into Caffe.

@lukeyeager
Copy link
Member

Error handling for creating KITTI datasets is not good. Exceptions raised while the task is running should be caught and logged as errors, like so:
https://github.com/NVIDIA/DIGITS/blob/v3.3.0/tools/create_db.py#L779-L781
That will allow DIGITS to display the proper error message.

Also, I can't see any results on the dataset#show page, including the task log file. This is super helpful for debugging other failed tasks.

@gheinrich
Copy link
Contributor Author

Exceptions raised while the task is running should be caught and logged as errors, like so:
https://github.com/NVIDIA/DIGITS/blob/v3.3.0/tools/create_db.py#L779-L781

I actually had that but the problem was I was missing something like this:
https://github.com/NVIDIA/DIGITS/blob/v3.3.0/digits/dataset/tasks/create_db.py#L218-L221

I have updated the "data extension" framework with better error handling (including those that occur in reader threads). So you would now get something like:
create-dataset-exceptions

@gheinrich gheinrich force-pushed the object-detection-workflow branch 3 times, most recently from c15d6c0 to 8db89c3 Compare May 23, 2016 11:45
@gheinrich gheinrich changed the title [DONT MERGE] Object detection workflow Object detection workflow May 23, 2016
@gheinrich gheinrich force-pushed the object-detection-workflow branch 2 times, most recently from aab27d4 to a7a8029 Compare May 24, 2016 14:17
@gheinrich
Copy link
Contributor Author

Updated to remove dependency on OpenCV bindings for Python.

@@ -0,0 +1,284 @@
#!/usr/bin/env python2
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this script really executable?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Whoops. I'll remove that line.

@lukeyeager
Copy link
Member

Woohoo I just successfully completed the whole object detection workflow!

@gheinrich
Copy link
Contributor Author

Woohoo I just successfully completed the whole object detection workflow!

Excellent! Which SHA1 did you use (there's been quite a few revisions so I'd like to make sure you've been using one of the last ones).

@lukeyeager
Copy link
Member

The latest for this branch.

I think we need to figure out how to add DetectNet as a "default/standard/zoo" network before this makes sense to merge, maybe? Also, maybe we should enable the gradient thing? It could be a cool walkthrough demo for DIGITS.

SlipknotTN pushed a commit to cynnyx/DIGITS that referenced this pull request Mar 30, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants