I tried to build something: https://github.com/YM2132/PR_guard which aims to help in these cases. It's not perfect but with stronger AI detection tools (Pangram) it could be improved although the issue of cost then arises and who pays for it.
HN user
Two_hands
https://ym2132.github.io
Agreed, I have seen some speedups with ONNX if I'm being honest but the process especially on MacOS is a bit messy. I'll try out Executorch and see how it compares, cheers for the recommendation
To be honest it's a shame the whole thing is closed up, I guess it's to be expected from Apple, but I reckon CoreML would be benefit a lot from at least exposing the internals/allowing users to define new ops.
Also, the ANE only allows some operators to be ran on it right? There's very little transparency/control on what can be offloaded to it and cannot which makes using it difficult.
Wow I didn't know that.
The worst part of it is as you say we all accept it and no one talks about it.
Is there any recommended reading you'd suggest to look into this more and the impacts of it?
Yeah I can see why they let it be that way, but the fact it is pretty undefined is what bugged me. I suppose it depends on what your goals are - efficiency vs reproducibility.
Also I did run a test of FP16 vs FP32 for a large matmul on the Apple GPU and the FP16 calculation was 1.28x faster so it makes sense that they'd go for FP16 as a default.
cheers for the tip, I'll give it a go
Thank you for reading.
Also generally I think CoreML isn't the best. The best solution for ORT would probably be to introduce a pure MPS provider (https://github.com/microsoft/onnxruntime/issues/21271), but given they've already bought into CoreML the effort may not be worth the reward for the core team. Which fair enough as it's a pretty mammoth task
Working on a blog post about default behaviour in ONNX Runtime when using the CoreML execution provider. Basically the default args lead to your model being ran in FP16 not FP32.
You can find more details at my site soon: https://ym2132.github.io
interesting, $10 per hour is pretty reasonable.
ha, thats probably why I noticed the EyesOff accuracy drops so much at longer ranges, I suppose two models would do better but atm battery drain is a big issue.
I'm not sure if it's important or not, but the app comes from my own problems working in public so I'm happy to continue working on it. I do want to train and deploy an optimised model, something much smaller.
Sounds great, once a POC get's built I'll let you know and can see about the clinical side.
Thanks for the tips! I'll be sure to post something and reach out if I get round to implementing such a model.
wow, this is great! You can't DM but my email is in my blog post, in the footnotes.
Do you remember the cost of Mech Turk? It was something I wanted to use for EyesOff but never could get around the cost aspect.
I need some time to process everything you said, but the EyesOff model has pretty low accuracy at the moment. I'm sure some of these tidbits of info could help to improve the model, although my data is pretty messy in comparison. I had thought of doing more gaze tracking work for my model, but at long ranges it just breaks down completely (in my experience, happy to stand corrected if you're worked on that too).
Regarding the baby screener, I see how this approach could be very useful. If I get the time, I'll look into it a bit more and see what I can come up with. I'll let you know once I get round to it.
Thats a cool idea, thanks for sharing! It's cool to see other uses for a model I built for a completely different task.
Is there any research/papers on this type of autism diagnosis tools for babies?
To your last point, yes I agree. Even the task I setup the model for is relatively easy compared to proper gaze tracking, I just rely on large datasets.
I suppose you could do it in the way you say and then from that gather data to eventually build out another model.
I'll for sure look into this, appreciate the idea sharing!
Yeah I did see something like this, may have been huawei. Not sure if they use a model or sensor based approaches though
This has been done! It’s the paper I first looked at for this task: https://github.com/rehg-lab/eye-contact-cnn
They create this CNN for exactly this task, autism diagnosis in children. I suppose this model would work for babies too.
Edit: ah I see your point, in the paper they diagnose autism with eye contact, but your point is a task closer to what my model does. It could definelty be augmented for such a task, we’d just need to improve the accuracy. The only issue I see is sourcing training data might be tricky, unless I partner with some institution researching this. If you know of anyone in this field I’d be happy to speak with them.
Right now that's pretty much what I do. I use YuNet to get faces, crop them out and run detection. It's probably a factor of a not enough data/poor model choice.
Thanks glad you enjoyed it.
Yeah tbh I do recommend using this alongside a privacy screen for best protection. Privacy screens also suffer from the fact that they won’t block someone directly behind you from seeing the screen, so both methods have issues.
Any tips on improving accuracy? A lot of it might be due to lack of diverse images + labelling errors as I did it all manually.
Sorry, I haven't gotten around to gathering examples yet. I ran the models on some example videos which is where the accuracy stats come.
Perhaps I have been jaded by the Mac webcam, I agree on most old webcams it wont be great but on newer webcams I have had success.
I did try a calibration approach but it's simply too fragile for in the wild deployment, calibration works great if you only care about one user but when you start looking at other people it doesn't work so well.
Good idea, it may be more fruitful to do that. At least then for the primary user we can be much more certain.
This models supports the EyesOff application which will prevent information extraction by either having a popup, switching to another app, or a notification(you can define the behaviour in a few different ways).
Privacy screens are still useful and I recommend people to use EyesOff and the screen protector. A privacy screen won't stop someone shoulder surfing from directly behind you etc.
There is also better ways to do this sort of task when all you care about is tracking the main user: https://arxiv.org/abs/2504.06237, https://pmc.ncbi.nlm.nih.gov/articles/PMC11019238/
Others are already trying to do this https://arxiv.org/abs/2504.06237. I haven't seen anyone take the approach I tried though, as most uses cases focus on tracking the main user rather than others around.
I'm working on EyesOff[1] - v2.0.0 should be out soon.
It's a simple (currently macOS) application which aims to target shoulder surfing by using a locally running neural network to detect those looking at your screen.
I think the best thing I realised was to post what and when I want, with little expectations regarding the number of readers. This way I produce the best content and any reader who does stumble across the posts will get the best read. I suppose my content is sort of nice too, so if I focused on readers my content would inevitably stray from what it is at the moment (sucking the joy out of it for me along the way)
EyesOff a privacy focused macOS app (other platform support coming soon) - https://www.eyesoff.app
Built using python the app alerts you to when someone is looking at your screen, using locally running deep learning models + your webcam.
I developed the app when I felt uncomfortable with working in public spaces, I wanted EyesOff to give an extra barrier of security to shoulder surfing scenarios
A privacy app for macOS which tells you when someone is looking at your screen.
It uses the webcam and a locally running facial detection model to alert you if it detects someone in frame.
It's FOSS and available @ https://www.eyesoff.app
Thanks for the feedback! And yeah I can see that, this was why the model being ran locally was a necessary for EyesOff. Also, I hope the source allows people to trust I dont send any data outside the app
Hey, thanks for the feedback!
This is on the roadmap, along with gaze detection.
https://github.com/opencv/opencv_zoo/tree/main/models/face_r...
This model lets you upload a reference face and then matches to those in images. I think this allows for the "approved faces" function you mentioned.
I suppose a difficulty may arise when we run a few models at the same time, however there is probably a lot of room for efficiency on the table and thanks to the small model size we are already in a good place.
Alot of these devices are quite expensive. Would it be possible to purchase the LEDs and create a sort of guerrilla red light therapy device?
I've been working a lot on my blog, which entails training and implementing neural networks. My next two posts are going to be about:
- https://arxiv.org/pdf/1912.04958 - StyleGAN2 - https://arxiv.org/pdf/1807.09341 - Causal InfoGAN, written in TinyGrad
Fwiw I didn't create that account, I didnt notice it was so new earlier. It is a bit weird though
Thank you!
Hey, thanks for your feedback, I'm glad you're finding it interesting!
Noted I am quite new to writing like this, where exactly was it confusing? I'll definitely take this on board and try to increase the clarity in my writing.