I wrote a small test of an idea that I had, and the thumbnail to this is an example of one of the images it produces.
Basically, it scrambles an image into block regions visually, and then optionally XOR's the image data with a secret to create an encrypted image which AI struggles to properly recognize, and makes the image become junk for training. Users with this tool for this can then compute the original image for themselves.
This has the massive benefit of not adding extra information into the image, so it can 'blend in' with real images as well.
This process (with encryption) is reversible in a visually imperceptible way at lower 'magic' sizes (which this image pushes due to vibrancy), while taking time for any motivated scrapers to brute-force.
you can test this yourself with a block size of 128 and magic of 35. The code and some more information is available at https://codeberg.org/emmowo/scrapescramble
In the future, I might implement this as a bit of JS you can add to your websites (or as a browser extension) as a means of making all visitors passively decode the image without needing to use an external app.
This implementation is just a proof-of-concept, so tonnes can be done to increase the complexity of 'cracking' these images later on. This is meant to be more of a deterrence than outright prevention, but it does have some use for it.
Either way, feedback would be nice!

12 Comments
Zerush@lemmy.ml · 25 pts · 9h
hexagonwin@lemmy.today · 9 pts · 8h
honestly not sure how effective it would be, but the example image on this post looks very cool
Maestro@fedia.io · 9 pts · 10h
Looks like good old gmask! https://knowyourmeme.com/sensitive/memes/gmask
MousePotatoDoesStuff@piefed.social · 6 pts · 8h
looks like you created a new artform in the process
FriendOfDeSoto@startrek.website · 4 pts · 11h
Don't share this online. The enemy bots are listening.
emmowo@lemmy.world · 10 pts · 10h
well if the bots do implement checks for this software, that also wastes their compute, but at a disproportionately large level just to make sure a few images (compared to actual billions of other images) aren't obfuscated.
very_well_lost@lemmy.world · 1 pts · 6h
I'm really interested in techniques like this, but my biggest gripe is that they always make accessing the data more annoying for humans than for the bots.
Yeah, it's a bit more compute, but these companies are so thirsty for data that they're at the point where they're buying and destructively scanning rare books. Data scrapers from the big AI firms are probably already at a point where they're willing to build harnesses to unscramble stuff like this. Meanwhile, most humans aren't going to care enough about your images to use special software to view them.
I'd really like to create something similar to poison/obfuscate open source codebases, but I've never been able to come up with a solution to the problem of AI having infinite tolerance for inconvenience and humans having very limited tolerance for it. Any barrier you create to inconvenience AI is always going to inconvenience humans more.
fullsquare@awful.systems · 4 pts · 11h
somehow i think that there should be a way to match edges of these blocks and unscramble the image this way. note that the more of unscrambled image you have the easier it should get. however, if you took every block and dispersed its pixels (xor something) into all new blocks, that would be much harder
Klear@piefed.world · 3 pts · 11h
The scraper would have to know the image is scrabled to do that, and if they knew, they could just use the script.
fullsquare@awful.systems · 2 pts · 11h
as it is now, edges aligning with grid would be a clue. this doesn't happen when image looks like static
Klear@piefed.world · 4 pts · 10h
Again, a clue is only useful if you're looking for clue, and if you're looking for a clue, you already have the solution.
emmowo@lemmy.world · 2 pts · 11h
That would increase complexity, but I kind of like the ability to gauge what the image was probably supposed to be. It seems like AI can't identify objects as easily even when the changes aren't really that drastic.
Currently I am experimenting with using a 'phrase' to encrypt the image in chunks as well, which has shown some really promising results!