HNHacker News
TopNewBestAskShowJobs

apu

4,164 karma · joined October 23, 2007

submissionscomments
apu··on A Face Recognition Algorithm That Outperforms Humans?
In some sense, the 97% is indeed the more fair number to compare against, assuming that this paper also restricts the algorithms to only see tight crops of the face.

Obviously using more than just tight crops will give you more information, but our point in differentiating those cases when measuring human performance was that the way LFW was constructed gives you MUCH more information when using loose crops than "normal" images would. For example, many images of actors are at award shows (the Oscars in particular), and so if you see that kind of background in a pair of images, you can just say "same" and have a very good chance of getting it right. That's what the "inverse crop" experiment shows [1] -- when you block out the face in LFW images, you can still get 94% accuracy!

In normal images, however, the background won't normally give you so much information.

I do feel somewhat bad that our human verification performance experiment numbers are now being used to create linkbait titles like, "computer algorithms can beat humans," because that's obviously not true (nor have I ever believed it), but in my defense, in 2009 we didn't really think about what the press would do in 2014 when algorithms started saturating on LFW =)

[1] http://homes.cs.washington.edu/~neeraj/projects/faceverifica...

apu··on A Face Recognition Algorithm That Outperforms Humans?
The goal is to allow for "fair" comparisons.

But I agree with you in general. I suspect even LFW's creators might; I don't know if they expected the benchmark to still be tested on this many years after creation.

I've always felt that all benchmarks in vision should come with expiration dates, because eventually everyone starts implicitly overfitting to them.

apu··on A Face Recognition Algorithm That Outperforms Humans?
First, my earlier comments on a "competing" approach from Facebook may help give relevant context for how to think about these numbers: https://news.ycombinator.com/item?id=7393378

Briefly skimming through this paper, it appears that these numbers are not a fair comparison, as this paper uses the unrestricted protocol of LFW[1], whereas the other methods in the ROC curve shown in the paper are using the restricted protocol. As you might imagine, the latter is more restrictive -- specifically in terms of amount of training data allowed. And as I mentioned in my previous comment, training data is king in these kind of systems -- more is always better.

To go slightly out on a limb, I think more significant than the new theoretical model proposed in this paper is probably the use of lots of different types of datasets for training. (Significantly more data >> more complicated models, most of the time.) But I'd have to read the paper much more carefully to be sure about this.

[1] http://vis-www.cs.umass.edu/lfw/results.html

apu··on Math topics useful for computer science/programming
I want to chime in and say that I've found your blog wonderful, and since you're too modest to post a link, let me do it: http://jeremykun.com/
apu··on Lens Blur in the new Google Camera app
Lytro is also "just" simulating it, but with slightly more/different data. They capture a light field but that doesn't magically give them depth values; they have to estimate them using an optimization, and then render the final image using a very similar algorithm.
apu··on Andreessen: Beware Non-Silicon Valley Investors Bearing High Valuations
the Wall Street Journal has been reduced to reprinting tweets as news

Why 2024? I've already seen this happening for the last few years, where the established press takes original content/reporting/etc. from online sources (blogs/etc.) with scant attribution.

apu··on Andreessen: Beware Non-Silicon Valley Investors Bearing High Valuations
Well said. More generally, it is often difficult to disentangle someone's motives & beliefs (and therefore the things they say) from their occupation. After all, the more deeply you believe in something, the more likely it is you will try to make it happen, the limit of which is making it your primary career.

Suppose someone working at a travel website writes a post about the problems with the existing travel industry. A large percentage of commenters will then pipe in with, "of course she'd say that, she works at a rival firm!"

But is that the causation? Suppose an "independent" person writes the same blog post. The reactions to the blogpost would have been different in that case, even if that person later goes on to start a travel firm.

In other words, is the causation:

1. start/work at travel firm -> try to encourage people to switch to them -> write blog post

2. dissatisfaction with travel firms -> write blog post -> decide to start competitor

(And of course there are many other possible causation chains.)

Yet most commenters seem to assume that (1) is not only the most likely option, but often the only possible explanation.

apu··on DeepFace: Closing the Gap to Human-Level Performance in Face Verification
Yes, capacity is intimately tied to VC dimension; in particular, VC dimension is one way to measure capacity. See the Wikipedia article for more information: http://en.wikipedia.org/wiki/Vc_dimension

I'm not an expert on deep learning (although I generally understand how they work on vision problems), so I'm not sure if you can precisely measure the capacity of deep networks. Informally, the primary number that seems to matter is the number of parameters in the network that have to be learned. This paper quotes that at "more than 120 million".

SVMs, in contrast, typically work with feature dimensionalities (i.e., # of parameters) that are on the order of 1,000 - 100,000. You can't directly compare these numbers because there are various non-linearities involved, but this deep learning network is definitely much higher capacity than an SVM would be with normal feature dimensionalities.

apu··on DeepFace: Closing the Gap to Human-Level Performance in Face Verification
Actually, 25% is the right way to judge this improvement. For example, let's say performance was currently at 99.9% and you improve it to 99.99%. That's not a 0.09% improvement (99.99 - 99.9), but rather a ten-fold improvement (.01% errors vs 0.1% errors).

This has to do with the fact that accuracy/errors are not linear.

apu··on DeepFace: Closing the Gap to Human-Level Performance in Face Verification
The LFW test is verification: given two faces you've never seen before, tell whether they're the same person or not. That's a much weaker test than saying "who is this?"

The LFW benchmark protocol is described in the original tech report: http://vis-www.cs.umass.edu/lfw/lfw.pdf

apu··on DeepFace: Closing the Gap to Human-Level Performance in Face Verification
Actually, that's only one of the contributions, and I'm not so sure it's the "key innovation". Every other recent face recognition method also tries to do some kind of alignment to make faces more similar in pose/expression/lighting prior to classifying them; and of these, several also fit faces to a 3-d model to rotate to frontal (with varying quality).

See my other comment for my guess on what's actually providing the boost: https://news.ycombinator.com/item?id=7393378

apu··on DeepFace: Closing the Gap to Human-Level Performance in Face Verification
Having worked on this problem before (the comparison to human performance they cite is from my work) and seeing all the recent successes of deep learning, I'd bet that a lot of the gain here comes from what deep learning generally provides: being able to leverage huge amounts of outside data in a much higher-capacity learning model.

Let me try to break this down:

In machine learning, when you have input data that is labeled with the kinds of things you are directly trying to classify, that is called "supervised". In this case it's not quite supervised, because their main evaluations are on the LFW dataset, which is a verification dataset, whereas their training on SFC is a recognition task. The difference is that in verification, you are given photos of two people you've never seen before and have to identify if they're the same or not. In recognition, you are given one or more photos of several people as training data, and asked to identify a new face as one of them. In theory, you could build recognition out of verification (verify all pairs between training images and test input images and assign the top-scored name as the person) but in practice it's much better to build dedicated recognition classifiers for each person.

Their main network is trained on a recognition task, using their SFC dataset. They show these recognition results in Table 1 and the middle column of Table 2. An error number of 8.74% (DF-4.4M), for example, means that they were able to successfully name the person in 91.26% of input images. However, this error rate crucially depends upon two key factors: (1) the number of people they're trying to distinguish between, and (2) the number of images they have per person. For this test, it was ~4,000 people, and ~1,000 images/persons, respectively.

If you were to add more people to the database, or have fewer images per person, this accuracy would drop. You can see this clearly in Table 1, where subsets DF-3.3M and DF-1.5M have correspondingly lower error rates because they have fewer people (3,000 and 1,500, resp). Similarly, the middle column of that table shows how error rates rise when you reduce the number of images per person.

In contrast, all subsequent results are shown on verification benchmarks (LFW and Youtube Faces). In large part, I suspect this is because of the realities of publishing in the academic face recognition literature: you have to evaluate on some dataset that the community is familiar with to get your paper accepted, and LFW is the de-facto standard these days, and it only does verification not recognition.

Here, their performance is certainly very good, and an improvement over previous work, but not an unexpectedly huge leap. If you look at the LFW results page, you can see that recent papers have been edging up to this number quite steadily: 95.17% (high-dim LBP), 96.33% (TL Joint Bayesian), 97.25% (this paper) http://vis-www.cs.umass.edu/lfw/results.html

Nevertheless, how are they able to get this boost in performance? What recent papers in this field have increasingly been discovering is that having higher-dimensional features can really give you a big boost, or to put it another way: having a higher-capacity model is what buys you the additional performance.

In machine learning, the "capacity" of a model refers (in a loose sense) to how powerful it is. The basic tradeoff is that a higher-capacity learner can more accurately classify testing data BUT it requires much more training data to learn. The problem is that for the LFW benchmark, the amount of direct training data you have is strictly limited: there are 6,000 pairs of faces, and you train on 90% of them and test on the remaining 10%. This is not nearly enough data to train a high-capacity model.

So what people have been doing is training the bulk of their models on some other data, for some other task, and then adapt that model to the LFW problem, using the LFW training data essentially to "tweak" the classification model for this particular task. That's why the LFW results tables are now broken up into different sections according to how much outside data was used and in what form.

In the case of DeepFace, this takes the form of the SFC dataset and learning a network for recognition, not verification. Since they have access to lots of data of this form, they can successfully train a high-capacity model for it. Then they simply "chop-off" the last layer of the network -- the one that does the final recognition task, and instead replace it with a component for verification using only LFW training data. Or for their "unsupervised" results, using no LFW training data ("unsupervised" in quotes because it's not really unsupervised).

BTW, this approach of training a deep network for some task, and then cutting off the last layer to apply it to a different task (in effect making it simply a feature-extraction method) is quite common, and has been applied successfully to many problems that might not have enough data to train a high-capacity model directly.

Anyway, if people have more questions, I can try and answer them. (I'm not one of the authors, but I am in the field.)

apu··on The complete guide to centering a div
The critical piece I'm always missing is how to center a div vertically if you don't know its height?
apu··on The brain can process images seen for just 13 milliseconds
I think for many of these studies they have to go even further because it turns out that people can remember the target images and "look" at them (in their mind's eye) for longer than the allotted time, even if sandwiched between neutral frames. So the target images have to be followed by random noise images that have the same frequency statistics as the target images, which interferes with your brain's recall mechanism and prevents you from "cheating."
apu··on The new Photosynth
Although I don't have first hand experience with the code, a former labmate of mine (I'm at the Univ. of Washington, and he's now at Google) is one of the leading experts on this area of research, and his VisualSFM [1] tool is, I think, the best and easiest-to-use available online.

Briefly, there are three main steps required to go from images to a 3d viewer like PhotoSynth:

1. Figure out where each image was shot from (the "camera pose") and get a sparse set of 3d points from the scene. These two are estimated simultaneously using bundle adjustment [2].

2. Go from a sparse set of 3d points to a dense 3d model. This is done using a technique called Multiple View Stereo (MVS), of which the leading (open) implementations are PMVS/CMVS [3,4].

3. Build an image-based rendering system that intelligently blends between the 3d models and images to minimize artifacts.

The VisualSFM software will do steps 1 and 2. Step 3 is still quite a challenging problem, but depending on what you're doing, you could use standard 3d modeling environments to look at your data.

[1] http://ccwu.me/vsfm/

[2] http://en.wikipedia.org/wiki/Bundle_adjustment

[3] http://www.di.ens.fr/pmvs/

[4] http://www.di.ens.fr/cmvs/

apu··on Daily Routines of Famous Writers
The book Daily Rituals, from which most of these seem to be excerpted, is a great read into the daily routines of lots of "creative" people of all stripes -- writers, artists, scientists, etc.

http://www.amazon.com/Daily-Rituals-How-Artists-Work/dp/0307...

apu··on Reflected hidden faces in photographs revealed in pupil
There was a related paper on using the eyes as a means of capturing a full environment map which could be used directly for relighting a scene (e.g., for 3d rendered scenes or for compositing digital objects into scenes):

http://www.cs.columbia.edu/CAVE/projects/eyes_relight/

apu··on Reform Government Surveillance
Hmm, only seeing a "default parallels" page: http://i.imgur.com/bUzBKn0.png

(midnight PST)

apu··on The Only Way to Grow Huge
For an example of this, look at the sibling comment by pak (made after yours) =)

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

apu··on Using neural nets to recognize handwritten digits
FWIW, many vision researchers believe that the resemblance of the first convolutional layer to Gabor filters is perhaps more a case of selection bias than anything else. The argument goes that were they not the output of the first layer, that paper wouldn't get accepted =)

I'm not sure if I fully believe this, but certainly there doesn't seem to be a very principled way to choose your network architecture. Different people propose different ones, and the fundamental justification for each one seems to be: "look, we recreate gabor filters in layer 1 and we get good numbers at the end!"

Of course, NN people argue that that's almost exactly what vision people do as well, except in "feature-land" rather than "architecture-land".

apu··on Machine learning is easier than it looks
For those wanting to get started (or further) in machine learning, I highly recommend the article, "A Few Useful Things to Know About Machine Learning," by Pedro Domingos (a well respected ML researcher): http://homes.cs.washington.edu/~pedrod/papers/cacm12.pdf. It's written in a very accessible style (almost no math); contains a wealth of practical information that everyone in the field "knows", but no one ever bothered to write down in one place, until now; and suggests the best approaches to use for a variety of common problems.

As someone who uses machine learning heavily in my own research, a lot of this seemed like "common sense" to me when I read it, but on reflection I realized that this is precisely the stuff that is most valuable and hardest to find in existing papers and blog posts.

apu··on A Look Into Facebook's Potential to Recognize Anybody's Face
This is not going to work (at least currently). Features for faces are not yet powerful enough to get you to a reasonable set of matches without also missing the right face in a large percentage of cases. Variations due to lighting, pose, and expression end up causing the same person to look very different -- often to the point where two different people in the same configuration can look more similar than the same person in different configurations.

That being said, if the database is small enough (e.g., in a limited scenario or by applying other non-vision filters first), then the state of the art methods do use a similar approach. However, in practice people use methods with much stronger priors than KNN. Because faces fall into a low-dimensional manifold[1], you can take advantage of that to constrain queries much more than with generic KNN.

[1] My PhD advisor has published several works about this topic, e.g., http://vision.ucsd.edu/kriegman-grp/papers/ijcv98.pdf http://virtualhost.cs.columbia.edu/~belhumeur/journal/invari... http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.123...

apu··on A Look Into Facebook's Potential to Recognize Anybody's Face
Yes, as the story points out, searching the entire database for a face probably won't work, but if you can prefilter based on other criteria such as location, employer, etc., it might become more feasible.
apu··on A Look Into Facebook's Potential to Recognize Anybody's Face
It would, perhaps, but the problem is deciding between millions (or billions) of people -- if you recognize people by doing pair-wise comparisons, then even small error rates can quickly add up.
apu··on Create an algorithm to distinguish dogs from cats
Haar wavelets are most useful for detecting faces (drawing a rectangle around the entire face). They are not very good for locating landmarks on the face. Also, they tend to be much more sensitive to the orientation of the face than other features, so modern face detectors are often composed of multiple independent detectors, each specialized for different pose angles.

Standard computer vision features like HOG (histograms of oriented gradients) or SIFT will probably do much better, or the deep learning features others have mentioned.

Your larger point of adapting a face detectors for animal use is well taken, though probably overkill for simply saying "dog" or "cat". You need that level of detail to identify which breed (e.g., this is the approach that dogsnap takes), but not for the base distinction.

The other way to go would be to train a deformable parts model (DPM) detector [1] for dogs and cats. DPMs are the current state of the art in detecting objects, e.g. as measured on the pascal VOC benchmark [2].

[1] http://www.cs.berkeley.edu/~rbg/latent/

[2] http://pascallin.ecs.soton.ac.uk/challenges/VOC

apu··on Create an algorithm to distinguish dogs from cats
Note that these are both approaches to do "fine-scaled visual categorization" (FGVC), which assumes you already know you're looking at a dog/bird and want to identify which species it is. This is increasingly becoming an important problem in computer vision, and in fact we just recently held the 2nd FGVC workshop [1] this year to encourage more people to work on these sorts of things.

The kaggle competition is for determining if it is a dog or cat, so it's a bit unlikely that one of these approaches would directly work (although they might be adaptable to the task). See my other comment [2] for a lighter-weight approach that is likely to do just as well, if not better.

[1] http://www.fgvc.org/

[2] https://news.ycombinator.com/item?id=6446309

apu··on Create an algorithm to distinguish dogs from cats
The sample images are of two types: images which are mostly of the subject (cat or dog), and images which have a cat or dog in them, but are not necessarily focused on them.

In computer vision, these two types of images are traditionally handled separately. First, a detector for a class (like "dog" or "cat") is run across the image at all locations and multiple scales to find where the things are. Once you have the locations, then an image classification algorithm is run for each detection window to either confirm it, or to give you more information about the object.

The latter often takes the form of giving more fine-grained category information, such as what species of dog/cat it is. Both leafsnap [1] and dogsnap [2] take the form of this type of program; i.e., they both assume that you've captured a single subject, roughly centered in the photo window, and that you already know that it's a plant/dog.

Sometimes you don't have to run a detector even if the object is not the focus of the image, if the context/setting can narrow down the answer for you. For example, if you were deciding between dogs and airplanes, it would be pretty unlikely to see a dog on a runway or a plane in a living room, so just by classifying the entire image, you can do reasonably well. That's not the case here, as dogs and cats will, for the most part, appear in pretty similar environments.

So if I were attacking this problem, I'd first see how many images were of the non-focused type. If not many, I'd basically ignore them and focus on building a classification system. Note also that if you're constrained to make a hard choice between only two classes, that's a much easier problem than a more open-ended "what is this?"

As many have pointed out, deep learning approaches seem to be the current state of the art on classification tasks such as these. But deep learning requires a lot of training data to be effective. A procedure I've been hearing many people use to great success is to use the Imagenet [3] hierarchy and images to train a deep learning classifier (i.e., as if you were going to compete in the Imagenet Large Scale Visual Recognition Challenge [4]). Then use the trained network, chop off the last stage (which makes the final prediction), and replace it with an SVM trained on your specific training data. In this way, you'd be using the network only as a feature extractor.

I'm happy to try and answer other questions.

[1] http://leafsnap.com or see my project page for more details on how it works: http://homes.cs.washington.edu/~neeraj/projects/leafsnap/

[2] https://itunes.apple.com/app/dogsnap/id532468586?mt=8

[3] http://www.image-net.org/

[4] http://www.image-net.org/challenges/LSVRC/2013/index

apu··on WikiLeaks Leaks 'Fifth Estate' Screenplay
Ah sorry, I shouldn't have said "obviously" -- that was a bit rude of me.
apu··on WikiLeaks Leaks 'Fifth Estate' Screenplay
One blush ;-)

[Moto7451 obviously meant rogue unit]

apu··on Lollipuff's Y Combinator Experience
I'm surprised to notice (perhaps it's always been there) that the YC app asks for facebook and twitter ids. Are these just additional contact mechanisms, or used for anything more?
← PreviousPage 3 of 22Next →