News for hackers. Stuff that matters.
Re:Not Hotdog App by timanglade on Tuesday May 16, 2017 @12:59AM (#14347467)
Ha didn't expect this to end up here. If anyone is interested, I'm working on a blogpost explaining how we built the app in detail… It uses embedded TensorFlow on device (better availability, better speed, better privacy, $0 cost), with a custom neural net inspired by last month's MobileNets paper, built & trained with Keras. It was loads of fun to build :)
Re:Not Hotdog App by asadlionpk on Tuesday May 16, 2017 @02:19AM (#14347729)
Damn! I thought it was using GCloud ML API but it felt so fast. The one in the show felt so slow in comparison! Kudos Jian Yang!
Re:Not Hotdog App by minimaxir on Tuesday May 16, 2017 @01:12AM (#14347513)
How large is the training set / how did you get a sufficient amount of hot dog pics for a custom model, especially since you did not have a class of naive Stanford CS students at your disposal?
Re:Not Hotdog App by timanglade on Tuesday May 16, 2017 @01:40AM (#14347604)
About 150k total images, 3k of which were hotdogs. The results are far from perfect (there's ton of subtle — or hilarious — ways to trick the app) but it was better than using a pre-trained model or doing transfer learning, accuracy-wise (honestly it was even better than using Cloud APIs). As for the difficulty in preparing the training set, I'll just say I definitely empathize with Dinesh and Jian Yang’s feelings in episode 4 :D
Re:Not Hotdog App by austenallred on Tuesday May 16, 2017 @01:44AM (#14347626)
> there's ton of subtle — or hilarious — ways to trick the app

ಠ_ಠ

Re:Not Hotdog App by alexcnwy on Tuesday May 16, 2017 @02:32AM (#14347775)
AWESOME!

Can you please elaborate a bit more on the model architecture and what you tried with respect to transfer learning?

Did you use an imagenet architecture e.g. VGG and retrain from scratch or a custom architecture? Did you try chop off the last 1/2/3 layers of a prerrained mode and fine-tune?

Bonus points: 1. How much better were your results trained from scratch vs fine-tuned? 2. How long did it take to train your model and on what hardware?

:)

Re:Not Hotdog App by timanglade on Tuesday May 16, 2017 @03:00AM (#14347865)
Hey so I actually tried Vgg, Inception and SqueezeNet, out of the box, chopped and trained from scratch (SqueezeNet only for the latter due to resource constraints).

We ended up with a custom architecture trained from scratch due to runtime constraints more so than accuracy reasons (the inference runs on phones, so we have to be efficient with CPU + memory), but that model also ended up being the most accurate model we could build in the time we had. (With more time/resources I have no doubt I could have achieved better accuracy with a heavier model!)

Training the final model took about 80 hours on a single Nvidia GTX 980 Ti (the best thing I could hook to my MacBook Pro at the time). That's for 240 epochs (150k images in an epoch) ran in 3 rate annealing phases, each phase being a handful of CLR (cyclical learning rate) phases.

I'll answer in more detail in the full blogpost, it's a bit complicated to explain in a comment. I'll have charts & figures for y'all :)

Re:Not Hotdog App by timbutlerau on Tuesday May 16, 2017 @06:05AM (#14348490)
As someone currently writing an app which uses a retrained Inception model, I watched the show pointing and laughing (and then crying) at the same issues and frustrations. The accuracy of the show and especially this episode has been just brilliant.

Thanks for sharing all the tech details too, it's been great to read. I'm even more amazed to see it as a real app, that I didn't expect!

Re:Not Hotdog App by timanglade on Tuesday May 16, 2017 @09:48AM (#14349516)
Haha yes, Machine Learning is often still a flawed, human-intensive process today — I feel like it's important for people to understand that.
Re:Not Hotdog App by luv2lrn on Tuesday May 16, 2017 @12:57PM (#14351142)
I'm confused about the 80 hours to train. Wasn't this episode shown on HBO less than 48 hrs ago?

Edit: Just read your bio. Now it makes sense!

Re:Not Hotdog App by DonHopkins on Tuesday May 16, 2017 @03:02PM (#14352316)
He's a guest lecturer at Stanford, and he had the students help him.
Re:Not Hotdog App by alexcnwy on Tuesday May 16, 2017 @04:02AM (#14348064)
great, thanks for your reply and looking forward to that blogpost!
Re:Not Hotdog App by rcamp on Tuesday May 16, 2017 @01:33AM (#14347583)
I instantly noticed the speed and thought, "did they put TensorFlow on the device?!". props
Re:Not Hotdog App by Swizec on Tuesday May 16, 2017 @01:08AM (#14347498)
How does one get this job? This sounds ridiculously fun.
Re:Not Hotdog App by timanglade on Tuesday May 16, 2017 @01:57AM (#14347666)
It was random, I was already working on the show as what Hollywood calls a (technical) “consultant”: advising on storylines, dialogue, background assets, etc. When this idea popped up, someone suggested we build the app for real. We took a try and ended up building the entire thing in-house with the crew, as opposed to hiring an external agency to do it for us.
Re:Not Hotdog App by scrollaway on Tuesday May 16, 2017 @02:13AM (#14347713)
Sounds like you're handling yourself even better than the characters in the show. :)

Edit: I guess it's official: The time of XKCD 1425 has passed. https://xkcd.com/1425/ September 2014; Randall undershot that by a bit :)

Re:Not Hotdog App by timanglade on Tuesday May 16, 2017 @02:24AM (#14347750)
Ha object recognition is still far from foolproof if you ask me, but we're getting there!
Re:Not Hotdog App by jrimbault on Tuesday May 16, 2017 @03:00AM (#14347867)
If I understood correctly by reading the comments, this was built for a show ? What show ?

EDIT: ah, it's in your profile ;)

Re:Not Hotdog App by eriknstr on Tuesday May 16, 2017 @03:55AM (#14348049)
For future reference, the show is Silicon Valley.
Re:Not Hotdog App by gm-conspiracy on Tuesday May 16, 2017 @07:07AM (#14348703)
What was your path to becoming a Hollywood technical "consultant"?

Would you write a blog post about that journey?

Re:Not Hotdog App by laktek on Tuesday May 16, 2017 @09:42AM (#14349468)
How long did it take you to build the app? How many devs worked on it and who got to feed the training data set?
Re:Not Hotdog App by msdog on Tuesday May 16, 2017 @10:31AM (#14349842)
You can fetch a dataset of 1273 labeled hot-dog images and 123287 non-hot-dog images from mscoco training dataset:

search for "hot dog" or click on the hot dog icon:

http://mscoco.org/explore/

Re:Not Hotdog App by elldoubleyew on Tuesday May 16, 2017 @11:33AM (#14350349)
Were the images gathered by Stanford undergrads?
Re:Not Hotdog App by timanglade on Tuesday May 16, 2017 @12:33PM (#14350886)
I should say a lot of people made the app possible, including the show's awesome producers, writers, designers, and a lot of kind folks at HBO. To answer your question, I was the only dev on the project, and I've been working on it since last Summer, on a very part-time basis (some nights and weekends). A lot of time was spent learning Deep Learning to be honest. The last revision of the neural net was designed & trained in less than a month of nights/weekend work but obviously couldn't have been achieved without the preceding months of work — but if I was starting today knowing what I know now yeah it'd probably be about a month of work. The React Native shell around the neural net was just a few weekends worth of work — mostly it was about finding the right extensions, tuning a few things for rendering/performance, and like a whole weekend dealing with the UX around iOS permissions to access the camera & photos (lol it's seriously so complicated).
Re:Not Hotdog App by DonHopkins on Tuesday May 16, 2017 @03:48PM (#14352673)
Were you able to expense the hot dogs?

In the early 90's, I had the honor of corresponding with "Uncle Frank" Webster [1], the curator of the Hot Dog Hall of Fame [2]! It boasts of more than 2,500 frankfurter items, including the Lamborweenie, a dog on wheels that "Uncle Frank" hopes some day to race against the Oscar Meyer Weinermobile [3]. Unfortunately the hot dog museum is currently closed and in (hopefully refrigerated) storage [4], otherwise the museum, gallery and gift shop would be a great place to train your app.

He asked for permission to publish in his newsletter a gif [5] of a photo I'd taken and put on my web site of the Doggie Diner head [6] on Sloat Boulevard in San Francisco [7]. (This was years before John Law acquired all the Doggie Diner heads he could find for his restoration project [8], so there weren't so many photos on them on the internet at the time.)

Of course I gave him permission because he asked so politely, and although at first he seemed a little creepy, I could tell he was authentic and sincere since he signed his correspondence: "With Relish, Uncle Frank." [9] And he even delivered on his promise to send me copies of his newsletter!

He enthusiastically informed me that the highest quality hot dogs he's ever found are from Top Dog in Berkeley [10]. He admitted that he went through their dumpster to find out where they sourced them from because they wouldn't tell him, and he vouches that they are made from the finest possible ingredients. I agree with Uncle Frank that Top Dog has really excellent hot dogs (ask for them cooked butterfly style), and I take him at his word that they come from a reputable source. You can now actually order them online [11] if you would prefer not to go through their dumpster.

[1] http://www.smithsonianmag.com/arts-culture/hot-dogs-are-us-6...

[2] http://thehotdoghalloffame.blogspot.nl/

[3] https://www.questia.com/magazine/1G1-19007874/the-almost-all...

[4] http://www.roadsideamerica.com/tip/20747

[5] http://donhopkins.com/home/catalog/images/DoggieDiner.gif

[6] https://en.wikipedia.org/wiki/Doggie_Diner

[7] http://www.roadsideamerica.com/story/14441

[8] https://www.kickstarter.com/projects/2118888480/doggie-diner...

[9] http://www.downtownmakeover.com/comments.asp?CZID=17

[10] https://www.yelp.com/biz/top-dog-berkeley

[11] http://www.topdoghotdogs.com/mailorder.html

Re:Not Hotdog App by vernie on Tuesday May 16, 2017 @11:53AM (#14350533)
How did you not expect it to end up here?
Re:Not Hotdog App by timanglade on Tuesday May 16, 2017 @12:39PM (#14350958)
I honestly thought the app itself would come across as too limited — and I wasn't quite sure how HN felt about the show it's attached to. I was preparing that technical blogpost specifically for HN because I thought that would be a more hacker-centric way of looking at the same thing.
Re:Not Hotdog App by imsofuture on Tuesday May 16, 2017 @12:41PM (#14350980)
You can tell a lot about SV-types based on how they feel about the show SV...
Re:Not Hotdog App by a_c on Tuesday May 16, 2017 @11:55AM (#14350556)
Had not heard MobileNets before. Mind sharing which paper are you referring to?
Re:Not Hotdog App by ip_addr on Tuesday May 16, 2017 @12:31PM (#14350874)
I believe they are referring to this paper titled "MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications"

https://arxiv.org/pdf/1704.04861.pdf

Re:Not Hotdog App by timanglade on Tuesday May 16, 2017 @01:47PM (#14351633)
Yup that's the one! It was probably the most instrumental paper in making this app, along with the CLR paper:

https://arxiv.org/abs/1506.01186

Re:Not Hotdog App by gm-conspiracy on Tuesday May 16, 2017 @07:05AM (#14348698)
Great work, man.

The effort you put into the show is much appreciated.

Re:Not Hotdog App by dnautics on Tuesday May 16, 2017 @05:33PM (#14353491)
the funny thing is that there are already "seefood"s out there. Among others:

https://www.infino.me/hungrybot

Re:Not Hotdog App by subcosmos on Tuesday May 16, 2017 @07:58PM (#14354430)
Daww! I'm the author, thanks!

I was REALLY depressed after watching these last two episodes. HungryBot was easily the coolest thing I've done in my unfunded nonprofit. But it was too buggy to fly. Kicked it out of the nest too early, but to the best of my knowledge it was the first deep learning food recognition app.

Looking for philanthropists if anyone wants to help me study diabetes with apps like this.

Re:Not Hotdog App by dnautics on Wednesday May 17, 2017 @03:30AM (#14356335)
psst this is isaac
Re:Not Hotdog App by skraelingjar on Tuesday May 16, 2017 @11:12AM (#14350195)
I would love to look at the source code for this!
Re:Not Hotdog App by DonHopkins on Tuesday May 16, 2017 @03:04PM (#14352322)
And the training set! Mmmmmm!
Re:Not Hotdog App by alexcnwy on Tuesday May 16, 2017 @02:48AM (#14347826)
yes please - would love to read that blogpost!
Re:Not Hotdog App by craigm26 on Tuesday May 16, 2017 @07:18PM (#14354214)
I would love to read this.
Re:Not Hotdog App by redxblood on Tuesday May 16, 2017 @12:28PM (#14350850)
Definitely! Link please?
Re:Not Hotdog App by 659087 on Tuesday May 16, 2017 @11:55AM (#14350561)
> It uses embedded TensorFlow on device (better availability, better speed, better privacy, $0 cost)

It's sad that this isn't more common outside of hot dog detectors.

Re:Not Hotdog App by timanglade on Tuesday May 16, 2017 @12:38PM (#14350937)
Well, in fairness, it's relatively difficult to do today: first of all, most neural architectures don't fit on mobile, because most of the research is either more academic than production-focused, or because people are chasing the best possible accuracy as opposed to accuracy under constraints. There's still great applicable research, and in particular the SqueezeNet, QuickNet and MobileNets papers are great in that respect.

Then there are some issues with just the tooling. TensorFlow is great, and works great on mobile, but it was a bit hard to get it working. The whole team there is doing an awesome job documenting and improving everything though! It's just early and not enough users have built apps with it to get the kind of production-readiness you get out of non-Machine Learning components.

Re:Not Hotdog App by bitmapbrother on Tuesday May 16, 2017 @01:16AM (#14347533)
Is there a reason you didn't release on Android? The app was even demoed on a Pixel.
Re:Not Hotdog App by austinn on Wednesday May 17, 2017 @01:29PM (#14360661)
Re:Not Hotdog App by austinn on Wednesday May 17, 2017 @01:05PM (#14360414)
I have an Android version being released as we speak.
Re:Not Hotdog App by pkulak on Tuesday May 16, 2017 @01:36AM (#14347595)
It was written in Objective C?
Re:Not Hotdog App by timanglade on Tuesday May 16, 2017 @01:47AM (#14347640)
It's actually written in React Native with a fair bit of C++ (TensorFlow), and some Objective-C++ to glue the two. One cool thing we added on top of React Native was a hack to let us inject new versions of our deep learning model on the fly without going through an App Store review. If you thought injecting JavaScript to change the behavior of your app was cool, you need to try injecting neural nets, it's quite a feeling :D
Re:Not Hotdog App by tomduncalf on Tuesday May 16, 2017 @03:21AM (#14347929)
This looks great, haha! Shame I can't access it from the UK.

It would be really interesting to read more about your thoughts on working with RN and C++ and perhaps how you did some of it. I'm currently doing the same (but with a C++ audio engine rather than image processing stuff) and I think it's an incredibly powerful combination - but I do feel like I'm making up some interop patterns as I go and there might be better ways, so would love to hear how other people use it!

Broadly, I've created a "repository" singleton that stores a reference to both the React Native module instance (which gets set when I call its setup method from JS) and the C++ main class instance (which gets set when it starts up), so they can get a handle on each other (I bet there are better ways to do this, but I'm new to C++/ObjC and couldn't work out a better way to get a reference to the RN module).

I'm then using RCT_EXPORT_METHOD to provide hooks for JS to call into C++ via an ObjC bridge (in an RCT_EXPORT_MODULE class), and using the event emitter to communicate back to JS (so the C++ can get the RN module instance from the singleton and call methods which emit events).

I've not done anything that really pushes the bridge performance to a point where I've seen any noticeable latency/slow down caused by the interop - have you had any issues here?

Like I say, I'm finding a really cool way to build apps that need the power of native code but still with the ease of RN as the GUI and some logic, and I actually quite like the separation it enforces with the communication boundary.

Re:Not Hotdog App by timanglade on Tuesday May 16, 2017 @09:40AM (#14349456)
Sounds like you're further ahead than I was with the React Native part! Not Hotdog is very simple so I just wrote a simple Native module around my TensorFlow code and let the chips fall where they may performance-wise. The snap/analyze/display sequence is slow enough that I don't need to worry about fps or anything like that. As much as I enjoyed using RN for this app, I would probably move to native code if I needed to be able to tune performance.
Re:Not Hotdog App by 1zee on Tuesday May 16, 2017 @11:03AM (#14350120)
Can you explain to a noob how you wrote the Native module around TensorFlow? My main area of focus is in python, but I feel hindered when I think I'm ready to start developing for mobile apps. I'm looking into RN, but still not sure how that plays with TF and other python modules.
Re:Not Hotdog App by timanglade on Tuesday May 16, 2017 @12:41PM (#14350978)
It was honestly just maybe 10 lines of code, but I was very confused about it before I got it done. The message passing is a bit counterintuitive at first. I'll try to share example code in my blogpost!
Re:Not Hotdog App by 1zee on Wednesday May 17, 2017 @10:42AM (#14358867)
awesome, what's your blog?
Re:Not Hotdog App by j_s on Tuesday May 16, 2017 @02:06PM (#14351819)
See this sub-discussion re:performance (+serialization/marshalling) in today's React Native discussion:

https://news.ycombinator.com/item?id=14349426

Re:Not Hotdog App by codesternews on Tuesday May 16, 2017 @02:38AM (#14347794)
can you please open source it. It would be great if you open source it.
Re:Not Hotdog App by peterjlee on Tuesday May 16, 2017 @01:42PM (#14351593)
So what you're saying is you can update the neural net to do dick or not dick without going through the App Store review?
Re:Not Hotdog App by porker on Tuesday May 16, 2017 @12:34PM (#14350896)
Nice! I'd never known that C++ could be used in an iOS app; learned something new today thanks.
Re:Not Hotdog App by dustedrob on Tuesday May 16, 2017 @09:52AM (#14349553)
It would be relatively easy to port to Android. Please open source it!
Re:Not Hotdog App by cedobbs10 on Wednesday May 17, 2017 @05:16PM (#14362860)
Hey guys, how would I be able to add characters to an account for injustice and then disable the anti-cheat. I want to basically make it so that i cant get banned for using characters I added to my account.
Re:Not Hotdog App by kgc on Tuesday May 16, 2017 @02:39AM (#14347799)
What was the hack?
Re:Not Hotdog App by asadlionpk on Tuesday May 16, 2017 @02:48AM (#14347828)
When using React Native (and also storing your network in JS) you can choose to push updates and fixes to JS part of your code without going through store again.

Check: http://microsoft.github.io/code-push/

Re:Not Hotdog App by timanglade on Tuesday May 16, 2017 @03:03AM (#14347872)
Yup that's basically it. The hack was just in getting Tensorflow to accept/load its neural network definition from the JS bundle (what CodePush distributes for you) rather than from the main Cocoa bundle.
Re:Not Hotdog App by joncrocks on Tuesday May 16, 2017 @04:19AM (#14348138)
Just as a note, people/developers have had messages from Apple telling them that they need to remove code which allows them to update their app outside of the app update/review process.

See https://news.ycombinator.com/item?id=13817557 for some more detail/discussion.

[edit: Apart from in Apple-approved manners]

Re:Not Hotdog App by Kiro on Tuesday May 16, 2017 @04:47AM (#14348237)
https://developer.apple.com/programs/ios/information/iOS_Pro...

> 3.3.2 […] The only exception to the foregoing is scripts and code downloaded and run by Apple’s built-in WebKit framework or JavascriptCore […]

Re:Not Hotdog App by B1FF_PSUVM on Tuesday May 16, 2017 @04:35AM (#14348186)
Well, that's not gonna fly with the "code is data, data is code" crowd ...

If the newspaper apps get to load fresh front page images, why should a poor neural net be discriminated in its quest for fresh coefficients?

(Raw oppression and injustice there, get yer indignation reservoir topped up.)

Re:Not Hotdog App by Grustaf on Tuesday May 16, 2017 @04:00AM (#14348055)
Really cool stuff! I didn't even realise you've switched jobs, but that explains why I didn't see you when we popped in at Townsend the other day! Keep up the good work.
Re:Not Hotdog App by wcummings on Tuesday May 16, 2017 @03:39PM (#14352589)
I'm surprised Apple allows this, I thought they hated this kind of thing.
Re:Not Hotdog App by had2makeanacct on Tuesday May 16, 2017 @05:02AM (#14348294)
I really have no idea what any of that means, no Android then?