Knitting an anti-surveillance jumper

One of the things I love most about hand-knitting is its natural combination of the analogue and the digital: here is a domestic craft, whose basis is a set of very “traditional” skills, tools and materials, whose contemporary vitality relies on digital spaces and resources. We connect online to our knitting friends worldwide, we download digital patterns, we take zoom classes, we stream events, we follow video tutorials. And if hand-knitting is now increasingly defined by digital environments, so it can also act as a medium to explore and interrogate the complexities of the algorithmically driven world in which we all reside. Ottilia Westerlund’s Anti-Surveillance Jumper is a project that just does that: using stranded colourwork to create a garment that might be interpreted and mis-interpreted by facial detection software. There is so much that I love about this project! It’s a piece of art that brilliantly literalises the intersection of the physical and the digital at which the craft of hand-knitting now finds itself; it’s a project that resonates within important current debates about (for example) the ethics of live facial recognition; and it’s also just an incredible hand-knit which looks amazing. The Anti-Surveillance Jumper is here to kick off our Wednesday series of colourwork conversations, together with its designer, Ottilia, who will tell you all about it.

In my day job, I work in software engineering, specifically looking at how to make code secure. I’m also a crafter of all sorts, knitting being my favourite. Knitting patterns are surprisingly very much like algorithms, and there is an amazing history of knitting and surveillance. But I had a thought – could yarn be used to avoid surveillance? I set out on a project to test my theory. I had never written my own knitting pattern, nor did it seem like anyone else had ever tried to knit something like this, but surely… it couldn’t be that hard?

Hyperface by Adam Harvey

I had come across Hyperface a couple of years earlier, and I knew it would be a great base for this project. It is a prototype for a “false-face computer vision camouflage pattern”, and was created by Adam Harvey in 2016. The pattern consists of black and white blobs, which tricks some facial detection algorithms into seeing them as faces. It is harder to detect the real face, amongst all the numerous faked faces the algorithm sees.

Facial detection is the step before facial recognition, which is used in various ways. There are benign purposes like unlocking your phone, but there are many controversial use cases. It is used on the streets and in shops, tracking everything from your opinion to a billboard to your attendance at work, as well as for law enforcement which often leads to mistaking innocent people as criminals.

Anyway – I looked to see if anyone had tried to knit Hyperface, or anything similar, but could not find anything. It seemed like the perfect base for my jumper, so I set out to start transforming Hyperface into a chart. I began by editing the image to be black and white, and removed the grayscale pixels in the original pattern. I was aware from the get-go that this was going to be a tedious project, and I didn’t need various hues of grey yarn to carry with me in each round. After all – this was not a nice Fair Isle project with a sensible two colours per round, it was a strange image designed to trick computers. I then pixelated it – the pattern had various pixel sizes, but I needed them to be consistent in size to translate into stitches. Next step was to calculate how many stitches one repeat of the pattern would be, in order to turn it into a knitting chart. As it was my first self-drafted jumper, I looked at lots of bottom-up jumper patterns that used 4.0mm knitting needles, and calculated an average number for my size. Once this was all done, it was time to find some online tool that would create a knitting chart. I tried a bunch of different ones, but ended up going with StichFiddle.

The generated chart

So, by now I had edited the original pattern quite a lot, and was unsure whether facial detection algorithms still would work. I knew that Hyperface was designed to match a very specific facial detection algorithm from a programming library called OpenCV. I decided to run the knitting pattern through this algorithm to check what would happen . . .

Here is the chart with the haarcascade profile. Each red box indicates that the algorithm thinks that there is a face there!

It was now time to start knitting ! I had never knitted a jumper without a pattern or written a pattern in general. But boiling a jumper down to its basic elements, it is just three tubes with various holes and stitches picked up, right? So that is what I did. I steeked the arm holes, as the last thing I wanted to do was colour-work this complicated on the reverse side.

keeping track of rows. . . .

In all honesty – the pattern was not very fun to knit, because it was not meant to be hand-knitted. There’s no nice repetitive pattern, so you always have to keep track of where you are in your chart. I was longing for just one repeat, just to not have to stare into this printed out copy of the chart. I frenetically crossed out each line to keep track of where I was.

ready for sleeves

For the sleeves, I simply made the colourwork pattern up as I went along. There was no point in following my chart since the sleeve’s surface area would be too small to trigger the algorithm. And so, I just knitted away on my anti-surveillance jumper. But there were so many more fun things to make instead, mittens for my friends, blankets for my nephew, Fair Isle hats. Anything but this dreaded jumper . . . . After a year, I finally finished the project.

So did it work…? Well, sort of! It works on the intended algorithms, and I tested it in a few different ways. I tested it using OpenCV again, this time on the knitted item. I also tested it on another tool called Vframe, using the same algorithm.

However, the specific algorithms this pattern tries to match are not used often anymore, and they have often been replaced with more advanced technologies. It does sometimes work, as you can see here, where a “classic smile” has been detected.

It is worth pointing out that this jumper is probably not going to let you avoid surveillance in real life. As mentioned, the idea is only to trick computers into thinking that there are faces that don’t actually exist in reality. This project was all about the process, and was definitely worth it in the end – I learnt about facial detection, about making knitting patterns, and I also ended up with a funky new jumper.

. . . and hopefully I made people think about surveillance along the way!

Thanks so much for telling us more about your process, Ottilia! And for making your brilliant work freely available on Ravelry.