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

Add convert function. #22

Open
kartikdutt18 opened this issue Jun 12, 2020 · 26 comments
Open

Add convert function. #22

kartikdutt18 opened this issue Jun 12, 2020 · 26 comments

Comments

@kartikdutt18
Copy link
Member

Recently we added support to parse XML files in object detection type datasets. It would nice to have a conversion script that convert CSV, object-detection-tf type, json to XML and vice-versa. A great example is roboflow.ai's convert feature.
Let me know if any clarification is needed.
Thanks.

@mlpack-bot
Copy link

mlpack-bot bot commented Jul 12, 2020

This issue has been automatically marked as stale because it has not had any recent activity. It will be closed in 7 days if no further activity occurs. Thank you for your contributions! 👍

@mlpack-bot mlpack-bot bot added the s: stale label Jul 12, 2020
@kartikdutt18
Copy link
Member Author

Keep Open.

@heisenbuug
Copy link

Hey @kartikdutt18 I want to start working on this issue, I hope it's still open...

@kartikdutt18
Copy link
Member Author

Hey @heisenbuug, please feel to pursue it, it's still open.

@heisenbuug
Copy link

Can you just get me the link for that roboflow.ai's convert function?

@kartikdutt18
Copy link
Member Author

kartikdutt18 commented Jul 29, 2020

Sure, You can select the convert option in the link to see it's functionalities.

@heisenbuug
Copy link

@kartikdutt18 we need something like this https://github.com/xhallix/PyCsv2Xml right? But also for all the specified formats.

@heisenbuug
Copy link

heisenbuug commented Jul 30, 2020

I will start working on converting csv to xml.
I have some doubt

  • Where exactly do you wanna put this convert function?

  • I will have to use a xml parser for this task as well, I was thinking about TinyXML Do you have anything specific in mind if not this?

@kartikdutt18
Copy link
Member Author

Where exactly do you wanna put this convert function?

I think we could add this to the utility folder or maybe create a new directory.

I will have to use a xml parser for this task as well, I was thinking about TinyXML Do you have anything specific in mind if not this?

We already use boost xml parser, Refer LoadObjectDetectionDataLoader in Dataloader class.

@heisenbuug
Copy link

  • I am done with the main logic for converting cvs to xml files.
  • This is the link to the code and I have also included example input and output in the same repo.
  • Some things are still remaining, for example when we have same file names its creating multiple xml files rather than appending in the same one, I will handle that and other cases.

For now I just need a check on the logic.

@kartikdutt18
Copy link
Member Author

Looks good to me, maybe in the PR we could wrap it in a class and have a member function called CSVToXML or some better name.

@heisenbuug
Copy link

heisenbuug commented Aug 3, 2020

  • I wrapped it up in a class, I named the main function as csvxmlHelper() which is private.
  • I made a public function convert, what I have in my mind is we can pass two parameters to this convert function(apart from path) and based on these parameters(which will be input file type and output file type) it will decide which helper fucntion to call.
    convert(path, csv, xml) -> this will convert csv file to xml format
  • I think this should be better, for now I am keeping the convert function simple. As soon as I add other conversion types I will modify it accordingly, sounds good?

@kartikdutt18
Copy link
Member Author

Sure, makes sense.

@Rajat-Rao-R
Copy link

Hey @kartikdutt18 wanted to start from somewhere , found this . Is it still open ?

@kartikdutt18
Copy link
Member Author

Hey @Rajat-Rao-R, Yes its open. @heisenbuug opened a promising PR #33 for this issue. Maybe you can build upon that / or take inspiration from it.

@Rajat-Rao-R
Copy link

@kartikdutt18 I have some doubt
You were referring to roboflow https://roboflow.com/convert/coco-json-to-pascal-voc-xml , here the conversions are model specific but the conversion that heisenbuug did is csv to xml only
So do we need to be specific or we just need conversion mechanism .

@kartikdutt18
Copy link
Member Author

I think we should be able to accommodate both. We can have static function that simply converts data from one format to other. Other than that, we can model / dataset specific conversion. This can be done by having separate functions or we can pass two strings and store a map that internally calls the correct function. Let me know what you think.

@Rajat-Rao-R
Copy link

Yeah this will be better , because it will keep things clean and we can accommodate different models smoothly then .

@deeplearningera
Copy link

@kartikdutt18 Can I also work upon?

@kartikdutt18
Copy link
Member Author

Sure. Feel free to pursue this.

@deeplearningera
Copy link

Sure. Feel free to pursue this.

Thanks!

I have also commented here, please acknowledge it.

@kartikdutt18
Copy link
Member Author

You need to ask @heisenbuug for that. If he gets a chance, he will reply to you on the thread.

@deeplearningera
Copy link

Okay

@deeplearningera
Copy link

You need to ask @heisenbuug for that. If he gets a chance, he will reply to you on the thread.

Tell me one thing, if he acknowledges and I make appropriate changes, then will it be considered as a PR?

Actually I am new to open source.

@heisenbuug
Copy link

@deeplearningera this is almost done, you can pick any new type of conversion by going through the issue.
If you have any doubts regarding how to implement you can ping me anytime...

@ritikaa29
Copy link

@kartikdutt18 Can I work on this issue ? Is it still open?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

6 participants