Implement bicubic interpolation
Currently clip.cpp uses linear interpolation in image preprocessing. The original implementation uses the bicubic interpolation from Pillow. It needs refactoring from Pillow https://github.com/python-pillow/Pillow/blob/main/src/libImaging/Resample.c#L46-L62
An implementation of bicubic interpolation is available inside llama.cpp.
https://github.com/ggerganov/llama.cpp/blob/master/examples/llava/clip.cpp#L1431
Yes, I upstreamed clip.cpp to llama.cpp for LLaVA, and now there's some functionality that needs to be downstreamed from llama.cpp back to this repo. Currently I don't have enough time to maintain it, though. Maybe next month.
I'm looking to use clip.cpp in a project soon - would you mind if I make a PR that brings some of the features in llama.cpp into clip.cpp?
@lithdew That would be awesome. And feel free to ping me if you need to ask anything about the implementation.