Proposing for adding extensive benchmarks to juliaimages.jl #947
Replies: 18 comments 4 replies
-
That would be fantastic! A good way to start would be to perform the same task in, e.g., JuliaImages, Scikit-image, and OpenCV and compare the performance. Of course there will be differences in implementation that affect more than just speed, but that's the general idea.As for which algorithms to check, that's pretty open ended. https://juliaimages.org/latest/api_comparison/ might be useful. |
Beta Was this translation helpful? Give feedback.
-
- So for Scikit images and opencv ,they need to be implemented through python? |
Beta Was this translation helpful? Give feedback.
-
Scikit images, yes to python. For opencv, there is https://docs.opencv.org/master/d8/da4/tutorial_julia.html, but it's a bit challenging to build right now. On one hand, that would be a reason to call it through python. On the other hand, that seems likely to change (the student who performed that work may apply to GSoC to make it work seamlessly with Julia's build system), so if you can locally build that then I think you could call OpenCV through Julia. While I haven't looked at it closely myself, one package that does this kind of thing is https://github.com/SciML/SciMLBenchmarks.jl. |
Beta Was this translation helpful? Give feedback.
-
For opencv i was having a look at the tutorial,I will try to set up it locally,and hope it will work good in windows. And @timholy ,so to start with i am exploring these tutorials,then i can develop them in a organized way. Any suggestion what will be proper path to move on with this? |
Beta Was this translation helpful? Give feedback.
-
It's also fine to do the webpage thing separately, the most important thing would be the benchmark framework. As for a "proper path," if you have a more specific question I'll be happy to try to answer it, but there's not much more I can say in abstract terms. |
Beta Was this translation helpful? Give feedback.
-
Thank you sir for your support. Basically, while developing benchmarks we need to keep in mind that:
And i will get to know what more to add ,as i explore the benchmark frameworks of different packages. |
Beta Was this translation helpful? Give feedback.
-
That's a good list. We've seen some cases in the past where scikit image takes shortcuts that hurts the quality of the result, but of course that was some time ago and they may have fixed it by now. We expect to have good performance in some cases, and worse in others. I know, for instance, that LoopVectorization will speed up |
Beta Was this translation helpful? Give feedback.
-
Just going through the packages for now and developing the idea for the project. I was going through LoopVectorization.jl and how much i understood from that it can be added before for loops to change the speed by breaking into steps.So we need to add it to imfilter function inside the implementation or break it's implementation as a function as whole to every pixel and combine them in the program? |
Beta Was this translation helpful? Give feedback.
-
I wouldn't add LoopVectorization just yet; let's get the benchmarks in place, if possible, and then check the impact! It will be a mix of just putting In other words, switching to LoopVectorization is a much more subtle project than it seems and definitely not something I'd recommend if you're still somewhat new to Julia. (If you're not, and playing with SnoopCompile.jl doesn't intimidate you, then don't hold back!) |
Beta Was this translation helpful? Give feedback.
-
Although explored julia ,but still new, so i will first try to put up the benchmarks in place. While i was going through the Image Filtering package,i saw there are some benchmarks but they were in julia only,I didn't completely understand their significance.Can you brief a little? |
Beta Was this translation helpful? Give feedback.
-
Yes, they are to measure the speed of the Julia code (for example to compare older vs newer implementations). It would be great to test similar cases with other languages. |
Beta Was this translation helpful? Give feedback.
-
oho! I was going through some algorithms benchmarks, skimage has a good efficiency in some,while juliaimges in some.Now exploring all of them,soon i will develop the project as a whole in mind. What type of contribution can i do now side by side till i have the whole framework in mind ,i am somewhat confused?Please guide. |
Beta Was this translation helpful? Give feedback.
-
Can you brief a little about these shortcuts? |
Beta Was this translation helpful? Give feedback.
-
I was misremembering, it was PIL (I'm not sure about scikit-image): #855
That's very likely---much of python's image processing is of course using C libraries, so performance should be fine for certain things. Once we have comparisons, we'll know where we need to invest in our own optimization.
This is the hardest thing to figure out. Because I haven't worked on this myself, I haven't yet put any thought into how to organize & present the benchmarks. Did you get any inspiration from studying the SciMLBenchmarks? I haven't looked in detail myself. I can look into it an give advice, but in a certain sense that might rob you of some of the most interesting part of this project. Often the most interesting thing is to come up with the design of a framework, not just "doing the work" (which can sometimes end up being repetitive). Consequently I encourage you to think about how you'd go about solving this problem yourself.
That would be awesome! Again not something I've put any effort into, so I don't have a particular plan. Maybe discourse would be a good place to look for or start a conversation about translation frameworks? |
Beta Was this translation helpful? Give feedback.
-
Yes, i was going through it. It has done things pretty similar to what i am thinking. While developing frameworks, in some we can follow them and in some, i have some different ideas.
Yes I will try to figure out how to solve this, i am currently working on this. And i was having some issues building opencv with julia, so for time being i am calling it through pycall. But we can change it later if it works smooothly in julia i.e., if it's developer makes the required changes. |
Beta Was this translation helpful? Give feedback.
-
@timholy ,sir is their any blog where i can get some knowlegde about julia automations which can be implied in the benchmarking package for juliaimages. |
Beta Was this translation helpful? Give feedback.
-
There is https://github.com/JuliaCI/BenchmarkTools.jl and https://github.com/JuliaCI/PkgBenchmark.jl, if that's the kind of thing you mean. If you mean something else, maybe you can spell out more specifically what you mean by "julia automations"? |
Beta Was this translation helpful? Give feedback.
-
@johnnychen94 How do we go about this whole ecosystem benchmarking thing? Where do we start? |
Beta Was this translation helpful? Give feedback.
-
Hey all.I am Debraj bhal, an IT undergraduate at International institute of information Technology,Bhubaneshwar.
As i was going through the project ideas page https://julialang.org/jsoc/gsoc/images/ ,i came through this:
I would like to contribute to this .But somewhat confused from where to start.So I hope @timholy , @zygmuntszpak will guide me in this.
Beta Was this translation helpful? Give feedback.
All reactions