Add convert function.
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.
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! :+1:
Keep Open.
Hey @kartikdutt18 I want to start working on this issue, I hope it's still open...
Hey @heisenbuug, please feel to pursue it, it's still open.
Can you just get me the link for that roboflow.ai's convert function?
Sure, You can select the convert option in the link to see it's functionalities.
@kartikdutt18 we need something like this https://github.com/xhallix/PyCsv2Xml right? But also for all the specified formats.
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?
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.
- 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.
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.
- 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?
Sure, makes sense.
Hey @kartikdutt18 wanted to start from somewhere , found this . Is it still open ?
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.
@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 .
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.
Yeah this will be better , because it will keep things clean and we can accommodate different models smoothly then .
@kartikdutt18 Can I also work upon?
Sure. Feel free to pursue this.
You need to ask @heisenbuug for that. If he gets a chance, he will reply to you on the thread.
Okay
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.
@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...
@kartikdutt18 Can I work on this issue ? Is it still open?