BVLC / caffe

Caffe: a fast open framework for deep learning.
http://caffe.berkeleyvision.org/
Other
34.06k stars 18.7k forks source link

DeepFool implementation on Caffe #4870

Closed cNikolaou closed 7 years ago

cNikolaou commented 7 years ago

I have recently implemented the DeepFool algorithm [1] on top of Caffe and I would like to make a PR (if you want to include such functionality within Caffe). It is a tool that uses the undrlying functionality from Caffe and it is written in C++ with a MATLAB interface aswell. I am also planning to support a Python interface in the near future but it is not ready yet. I will also include usage documentation, etc and I will try to provide support for that part of the code as much as I can.

I have tried different implementations and the history log is quite messy so far and so I do not know what to do from that point on. I tried one approach, did about 3-4 commits and then I changed my implementation on top of that as I was working onto multiple files. The PR will contain the following files:

by default I put all my files in /caffe/util; I can change them to /caffe or create a new directory /caffe/tools or something similar.

Should I make a new branch with 1 commit per file (after testing everything)? Or should I try to remove the unecessary commits from my log? The problem is that the development was not linear (i.e. I found many bugs on deepfool.cpp after implementing DeepFool.m, etc). The first way (1 commit per file) gives a more linear progression even though the reality was different. Should I make multiple PRs maybe to make the review easier?

I have tested the code extensively based on a MATLAB implementation. Should I do something more than that?

[1] DeepFool: a simple and accurate method to fool deep neural networks

shelhamer commented 7 years ago

Generally reference implementations and paper reproductions are best kept in their own repo either by forking Caffe or including Caffe as a submodule. Thank you for thinking of contributing to Caffe.