-
Notifications
You must be signed in to change notification settings - Fork 1.4k
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
Choosing data format[s] for creating generic inference datasets #197
Comments
More thoughts from @Pastafarianist at #97 (comment):
That's pretty much the same as option (2) above. |
Why not load caffe |
@crohkohl, thanks for the input! Are you suggesting replacing option (3), or creating another option? I'd like to move away from Caffe-specific solutions where possible. You do bring up a good point, though, which is that |
Well, I personally would choose a format that is independet from python for data import. I think a lot of people have tool chains other than python (like me). One could provide a custom protobuf format for example that could be exported from all supported languages. I further would not only provide it as a label. It would also be great to actually load the data like that and not to be limited by standard 2d image formats like png. That way one could easily import 1d - 4d data and labels using the same mechanism into the database for caffe. And isn't the caffe-blob structure N-D aswell? They have a N-D shape if I recall correctly. |
Ok, that's two good suggestions:
BlobProto is N-D, but Datum is 3D, and Caffe's Data layer expects Datums in LMDB |
I think the only option that is simple and portable is a raw binary format enriched with meta data provided by the user, e.g.: shape, datatype, compression. As a side node: Whatever you choose to implement will probably not be sufficient. So it should be considered to provide a plugin-design for data parsing. The import-plugin interface class registers certain extensions and handles the loading by returning a 3d Further, in the gui the user could choose what importers shall be used. Upon selection a custom parameter dialog could be shown by the importer plugin. |
I'm one of those users interested in "audio". I put audio in quotes because that general type of time series data can also encompass many other similar use cases. For example. EKG heart waveforms, EEG brain waveforms (which happens to be one of my use cases). Heck even sensor data from heavy equipment basically has the same nature of being a one dimensional signal and can be processed in the same way as audio. I agree with crohkohl that some kind of plugin with documentation and perhaps an example implementation or two is probably the right way to go. Even for just actual audio there are a ton of formats and configuration variables. Furthermore, in keeping with the general-inference theme it would make sense for the work involved with this enhancement to also be used in a very general way. For example, in addition to the actual waveform samples, classification can be performed on feature vectors generated from them. The feature vectors are basically are just another representation of the same data (and still a sequence of numeric values). Currently I'm pretending the values in the feature vectors are pixels in an image to allow me to use Digits with little or no modification. But it would be nice to not have to do that. In another discussion there is an explanation of how to generate LMDB's separately from Digits that caffe can operate on. While that is an OK workaround it defeats part of the convenience and low barrier for entry that Digits provides. While it's quite possible part of the operation of the plugin would be to call that same db creation code, it would be nice to at least have a bit of a wrapper around it to integrate it into the Digits UI. For example, some way to tell Digits to use a specific plugin rather than one of the existing input mechanisms. |
How about a CSV (or TSV) like this:
By row, that's the (1)
For segmentations:
So, we'd have two types of plugins:
|
@lukeyeager, for what it's worth I'd like to second @gheinrich's request above - it would be so simple if we could just specify a vector of labels in the text files! Are we likely to see this feature any time soon? Thanks. |
@FridayAccessory123 ok, thanks for the feedback! Does the solution in my previous post (#197 (comment)) seem too complex? If you wanted bounding boxes instead of classifications, you could format the CSV like this:
|
@lukeyeager, not too complex at all - a simple vector of ints would be enough for me right now but your solution certainly looks like the way forward more generally. Thanks again. |
/cc @Deepomatic |
Are there any news on this? |
We really need the feature to support this. Would like some update around this as well! |
Our main focus right now is around running DIGITS on a cluster of machines (related to #108). As a precursor, I'm working on moving all the stored data over to a SQL database instead of pickle files (#566). I'm intentionally keeping the database schema as data-agnostic as possible, and also as framework-agnostic as possible. So hopefully our work towards that major new feature will make generic datasets easier to implement in the future. |
[Branching discussion in #189 into separate thread]
I'd like to enable at least three methods for people to create "Generic Inference" datasets.
.npy
containing an n-dimensional label file for each image like so:The text was updated successfully, but these errors were encountered: