models icon indicating copy to clipboard operation
models copied to clipboard

Add convert function.

Open kartikdutt18 opened this issue 5 years ago • 28 comments

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.

kartikdutt18 avatar Jun 12 '20 04:06 kartikdutt18

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:

mlpack-bot[bot] avatar Jul 12 '20 05:07 mlpack-bot[bot]

Keep Open.

kartikdutt18 avatar Jul 12 '20 14:07 kartikdutt18

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

heisenbuug avatar Jul 28 '20 17:07 heisenbuug

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

kartikdutt18 avatar Jul 28 '20 18:07 kartikdutt18

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

heisenbuug avatar Jul 28 '20 18:07 heisenbuug

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

kartikdutt18 avatar Jul 29 '20 03:07 kartikdutt18

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

heisenbuug avatar Jul 29 '20 17:07 heisenbuug

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?

heisenbuug avatar Jul 30 '20 20:07 heisenbuug

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.

kartikdutt18 avatar Jul 31 '20 04:07 kartikdutt18

  • 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.

heisenbuug avatar Aug 01 '20 19:08 heisenbuug

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.

kartikdutt18 avatar Aug 02 '20 12:08 kartikdutt18

  • 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?

heisenbuug avatar Aug 03 '20 17:08 heisenbuug

Sure, makes sense.

kartikdutt18 avatar Aug 04 '20 15:08 kartikdutt18

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

Rajat-Rao-R avatar Mar 20 '21 19:03 Rajat-Rao-R

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 avatar Mar 21 '21 05:03 kartikdutt18

@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 .

Rajat-Rao-R avatar Mar 21 '21 10:03 Rajat-Rao-R

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.

kartikdutt18 avatar Mar 21 '21 10:03 kartikdutt18

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

Rajat-Rao-R avatar Mar 21 '21 10:03 Rajat-Rao-R

@kartikdutt18 Can I also work upon?

deeplearningera avatar Mar 21 '21 11:03 deeplearningera

Sure. Feel free to pursue this.

kartikdutt18 avatar Mar 21 '21 11:03 kartikdutt18

Sure. Feel free to pursue this.

Thanks!

I have also commented here, please acknowledge it.

deeplearningera avatar Mar 21 '21 11:03 deeplearningera

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

kartikdutt18 avatar Mar 21 '21 11:03 kartikdutt18

Okay

deeplearningera avatar Mar 21 '21 11:03 deeplearningera

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 avatar Mar 21 '21 11:03 deeplearningera

@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...

heisenbuug avatar Mar 22 '21 05:03 heisenbuug

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

ritikaa29 avatar Oct 14 '23 04:10 ritikaa29