11 ms·
Show HN: “Is this loss?”: A TensorFlow Lite app to detect Loss.jpg
I built this app over a week as a way to learn how to use TensorFlow with Mobilenets and to get some experience with Google Play (and partly as a dare). It's written in Java, as I wasn't able to find a Kotlin API for TFLite. It was built with Bazel.
I'm pretty satisfied with the actual detector's performance, although I expect I could improve the UI a little bit.
It's a weird UX, as you want it to be as simple and fast as possible (loss/notloss) but you also want it to have some sort of recognizability. I would love to hear your thoughts.
https://play.google.com/store/apps/details?id=party.eigenloss.android.isthisloss https://play.google.com/store/apps/details?id=party.eigenlos...
- Osseric 8y agoBest thing I've seen on Show HN in awhile.
- alexfi 8y agoDo you want to make it open source? :)
- eigenloss 8y agoMaybe. I don't see any reason not to! Edit: I can't reply to any other comments at the moment due to low karma. In response to wrinkl3 and others, I will likely be sharing more details about the development process and network in the next week or two, probably at eigenloss.party.
- tyrust 8y agoGive your model to a reddit bot and let it loose on /r/me_irl.
- eigenloss 8y agoNot a bad idea. The "not loss" training set actually contains a few hundred images scraped from there. There are plenty of subreddits and online forums where a single-purpose lightweight CNN like this one could be enormously productive. It would obviously need a small backend somewhere, but the hardware requirements are minimal.
- rrcaptain 8y agoI mean, I wouldn't call this productive. But fun and useful most definitely.
- eigenloss 8y agoObviously, loss/not loss isn't a genuinely useful classification. Something to automatically help users identify forum-specific images (e.g. poisonous/harmless spiders, bedbugs/beetles, snakes, etc.) would be useful, and the network would be the same.
- lainga 8y agoDoes it detect only Loss.png, or attempt to see other (disguised) instances of the form | || || |_ ?
- lccarrasco 8y agoIn the screenshots shown in the link you can see that it detects plenty of "disguised" Loss images. By the way, cool app eigenloss, way more accurate than I'd have expected.
- eigenloss 8y agoThanks lccarrasco! It does work surprisingly well for such a tiny CNN. Props to the MobileNet team at Google.
- eigenloss 8y agoFramed properly, it does detect what you posted: https://imgur.com/a/0wdqPea https://imgur.com/a/0wdqPea. Positively identifying abstract geometric loss while rejecting non-loss text and drawings was something I had to explicitly optimize the training sets for.
- lainga 8y agoNEAT. I rate this (1/2) / (2/50).
- newen 8y agoThis is pretty neat lol. I'm curious about what architecture you used, how many images and what kind of augmentation you used.
- eigenloss 8y agoTraining was a bit of a process. The architecture I use now is an 8-bit quantized mobilenet_v1_050_224 retrained on about 1000 versions of Loss.jpg (some quite similar, but not exact duplicates) and about 10,000 other images. All the images are 240x240 or thereabouts. I'll be publishing something soon on what it took to build that 10K image dataset - it was more challenging than I initially anticipated.
- gowld 8y agoIn other words, eignloss says "I just gamed The Loss" ( https://en.wikipedia.org/wiki/The_Game_(mind_game) https://en.wikipedia.org/wiki/The_Game_(mind_game) )
- mediocrejoker 8y agoCan someone explain what Loss.jpg is? I've never heard of it and pretty much none of the comments here make sense as a result.
- evanpw 8y agohttp://knowyourmeme.com/news/heres-to-loss-the-internets-greatest-meme http://knowyourmeme.com/news/heres-to-loss-the-internets-gre...
- wufufufu 8y agoFor anyone wondering what the "Is this loss?" meme is about, this provides good context http://nymag.com/selectall/2015/11/longest-running-miscarriage-meme-on-the-web.html http://nymag.com/selectall/2015/11/longest-running-miscarria...
- mynegation 8y agoI had to lookup the backstory. I obviously cannot know all of the context, but... honest question: why would people make fun of a comic about such deeply personal tragedy? To me it seems tone-deaf to say the least.
- rcoveson 8y agoImagine if South Park did a completely serious episode where an adult Cartman's wife had a miscarriage. It would be mocked mercilessly. Whether it would be morally right to mock it or not is anybody's guess, but mocked into memedom it would be.
- maw 8y agoNot all things called "comics" are always funny all the time.
- mynegation 8y agoI understand that. The question was why people would make memes out of this comic strip.
- deleted 8y ago[deleted]
- geofft 8y agoBecause they're making fun of a comic, not out of a personal tragedy: it was a gag-a-day comic strip about video games with limited plot, and giving the characters a deeply personal tragedy was extremely out of character for the comic strip. Plenty of people make fun of webcomics that developed a serious plot and actual characterization over time (MegaTokyo and Questionable Content both come to mind). This one went from 0-100 in one strip.
- fwip 8y agoAnd after that one strip, it dropped back down to 0 pretty quickly. It seemed to a lot of people that Tim Buckley realized "oh hey I don't want to have a baby in the strip" and decided to get a cheap emotional punchline while he was writing himself out of that self-inflicted hole. But when your comic has less depth than your average Garfield comic, it doesn't work out so great.
- wrinkl3 8y agoI audibly groaned when I read the title, but it's certainly a neat app. Do you plan to post the source code or a detailed training model description?
- eigenloss 8y agoYes; I'll be doing one or both of the above shortly. There are tutorials online for most of the process, but the non-Google-maintained ones are generally very out of date. The app itself draws heavily from the TFLite Java Demo App, which can be found at tensorflow.org. For now, it's a placeholder with just a privacy policy, but the details will be at eigenloss.party in a week or so.
- luc_ 8y agoI don't think perpetuating a meme that, even inadvertently, belittles the emotional hardness of a miscarriage, is the right thing to do. Regardless of this meme originating from a comic going from 0 to 100 in the level of seriousness it usually portrays, it is not something that we should endorse.
- legostormtroopr 8y agoSadly the original post that went with it is lost to time, but Cyancide and Happiness kept some of it. We aren't making fun of miscarriage, but someones terrible poor attempt at portraying it in a comic, along with a post that said miscarriage is "often much harder on the woman than on the man" and that it "doesn't necessarily turn you into a sad, depressed sack of tears". [1] If you don't like it, as Tim B^Uckley says "move past it". [1] http://explosm.net/comics/1310/ http://explosm.net/comics/1310/ Edit: I found the original, its longer and more insufferable than I ever imagined - https://cad-comic.com/so-then-lets-chat/ https://cad-comic.com/so-then-lets-chat/
- whywhywhywhy 8y agoThis is looking at humour in a very one dimensional and puritanical manner. Comedy, like art we can't just point at the subject matter and shake our heads that it's distasteful and dismiss the whole work. Some of the most highly regarded comedy ever made has used subject matter that is tragic or horrifying, any comedy around Nazis for which there are countless examples and the work of Chris Morris (Brasseye, Jam, Four Lions) come to mind.
- YetAnotherNick 8y agoToo easy examples. Try on loss kanji vs non loss kanji ;)
- scottmf 8y agoWow I was thinking of this exact idea just yesterday. Could you share the code or make this a web app? I don’t have access to Android.
- eigenloss 8y agoA very similar demo is available on the Tensorflow website, and the sources are available in the main TF repo. My sources will probably go public eventually. https://www.tensorflow.org/mobile/tflite/demo_android https://www.tensorflow.org/mobile/tflite/demo_android A web app could be done, but the use case and development process is somewhat different. The TFLite API is also significantly more mature. Looking at this TensorFlow.js demo might be helpful: https://github.com/google/emoji-scavenger-hunt/ https://github.com/google/emoji-scavenger-hunt/ Send me an email at the address in my profile if you do anything with it - I'd be happy to help out with training!