jack_a_cohen
Joined 5 years ago
Joined 5 years ago
This works by using a “segmentation map”. Deep Learning models are really good at performing per pixel labelling.
You’ve probably seen the Remove Background tools that classify parts of the image either as background or foreground to make an alpha mask. But we don’t have to stop at two classes. We can classify an image with much more detail such as what parts contain an Eye, Ear, Nose, Mouth… etc. Passing an image of a face to a ML classification model can return a so-called “Segmentation Map”, which assigns a unique color to each class of facial feature. This kind of object detection is commonly used in computer vision for manufacturing assembly lines, but we want to use it for art...
Now this is where it gets interesting, we can play this in reverse, give the ML model a segmentation map, and use a GAN to generate the most convincing image of a face that it can (given the dataset it was trained on).
The really cool thing is that this isn’t limited to just faces, you can do this with landscapes, buildings, cars, cats you name it. Anything where you can train a model by classifying the segments or "features" of an image.
Over the last 5 years I’ve been developing across AR/VR, Computer Vision, Computer Graphics, Machine Learning and Web. I work in a solid team, but this stuff is hard. I keep finding myself in situations where dealing with images, videos, and 3d content is an absolute pain (setting up the libraries or to try and work between them). I was doing a lot of reflection last year and I came up with an idea that could make this easier:
Imagine taking the Adobe and Autodesk products and shaking them until all their building blocks fall out. Now collect all the similar blocks together and offer them as a REST API.
REST might not be the best choice. We did a big project in gRPC. It has a lot of benefits but isn’t as widely used so I was concerned about the adoption and learning curve. But REST is just so simple to use across Python, JavaScript, C/C++/C# or whatever language/platform you find yourself in.
It also makes a lot of sense to me to do the processing off-device. I know some really good 3d designers that aren’t making any art right now because their computer died and they can’t afford/justify a new one. For AR/VR I can see things moving to off-device computation that is streamed back over high speed connection to reduce power consumption, reduce heat generation, and enable smaller form factors. But this doesn’t necessarily mean over the internet. I can definitely see a local server running the API for speed/security.
There are other APIs for images and videos, like Cloudinary, Imgix, Imagekit, Sirv… etc but these are focused on CDN. I’m talking about a mega API for images & videos that has all the powerful Machine Learning operations (remove background, upscale...etc) and all the basic operations (crop, compress, convert, resize, filters...etc).
I wanted to start with images & videos but I’m excited to get back to 3d. Boolean operations have always been a massive pain for me in 3d but also super super useful in a bunch of use cases. We really loved OpenVDB for this, but then you're stuck in C++ land. I would have totally used a simple REST API to do that, along with other computational geometry tasks like extrusion, revolution...etc
I’m not saying this is going to be the most optimal way. It is always going to be lower latency to do it on device. But rapidly prototyping an application, getting it out to users, and validating your startup is incredibly valuable. Teams just can’t afford to burn engineering cycles on this stuff, but I want people to make rich media applications!
So, today we’re launching the Massless Media API on Product Hunt. I would super appreciate your support on PH. But more importantly, I would love to hear what HN thinks, and if this API can help you in any way.
It has Auto Crop, Remove Background, Style Transfer, Upscale all available for bulk processing, along with Rounding Corners, Compress, Convert, Resize, Watermark, Flip, Mask, Adjustments, and Rotate.
With these blocks you can build pipelines that the images are passed through, performing each process one after the other.
This is perfect for bulk Auto Cropping images to 1:1, 16:9, or 9:16 ratios for Social Media.
Or making a pipeline to process headshots into stylized team photos by using AI to Crop to Face, Auto Crop to 1:1 ratio, use Border to apply a 100% radius to make it circular, and then adding a Filter (like greyscale) to style it.
My personal favorite is using it for bulk style transfer, applying the style of one image to a batch of other images, or applying a batch of styles to a particular image.
I hope it can be useful for you, let me know.