ImageChipper.jl and ObjectDetectionStats.jl (+ LockandKeyLookups.jl)

Hi everyone,

I’m here to announce three packages I’ve made at their early stages related to computer vision and improving Julia’s machine learning ecosystem.

ImageChipper.jl - How much image would an image chipper chip if an image chipper could chip images?

Basically this package let’s you take big images and tile or chip them into collections of much smaller images. If a corresponding file exists stating where some ground truth objects are in the bigger image it can also handle that. Really nothing fancy, but useful to have if you do this kind of work.

Performance improvements can be made here. Especially now that CSV.jl is a beastly CSV reader!

ObjectDetectionStats.jl -

This package has a skeleton for some essential calculations to calculate things such as Intersection Over Union, precision, accuracy etc. It’s not currently meeting the COCO standards or any of that. It needs some work, ultimately comparing predictions from potentially thousands of images with ground truth and their associated inferences is pretty rough. It’s on the way there, and part of getting that done was to make LockandKeyLookups.jl.


Ever have J streams of data that, maybe don’t fit so well in memory. Well you can lazy load them! But… what if you want to do lookups/labelling tasks with some primary Key in another dataframe( i rows long)? Do you really want to run the cost of iterating i times to do J joins? Probably not - well maybe, but - probably not.

Basically this is useful for the above task of ObjectDetectionStats.jl for getting complete performance metrics from a large pile of disjoint files without making huge joins. It may turn out that this isn’t the best or most performant way to accomplish this task, but, it was a kind of tooling I noticed was absent from the ecosystem (streaming lookups across J tabular data structures).

If you all find these neat or see ways to improve them please jump on board and contribute. Career issues are taking priority in my life right now and these packages(intended to be me actualizing in my hobbies) have had to take a backseat. They aren’t dead projects, but - it’ll just be a while before I can focus on them…

Maybe this would be helpful for MLJ? Not sure… Probably they will be rewritten, renamed, and forgotten - but for now positivity!