

Show HN: Findmelike – Bayesian visual search for art - glutamate
http://findmelike.com

======
iammyIP
Some observations from 6 testruns:

\- works good when i "like" with a very broad category (i.e. click on all
icons, landscape/city, maps, people - regardless whether i actually like the
picture to hang on the wall or not)

\- sometimes shows repeated images

\- if a category has not enough pictures in it to show, it doesnt work
(synthetic images / pop art)

\- robbie williams and elvis presley portrait appear in result even when i
liked landscape only, likewise neuschwanstein and beach oilpainting appear
when i liked people portraits

for a poster buying decision i would enter "epic landscape", or "elvis
presley" or "menger sponge render" into a textsearchengine and the result
would be much more precise to what i actually like to see and much faster.

I see two usecases regarding buying a poster:

1\. i am a robot and need some poster out of a predefined set of broad
categorys

2\. i am a tasteless human who enjoys klicking like and who needs to hide a
hole in the wall with some semi-random image.

So my main problem with using this for a likeable-image decision is the
constant collision of what the picture actually contains for me as a human to
read into, and what the pixelbased train algo wants me to do (which i am
unsure of what criteria it has).

But all the poster-buy-stuff application aside this is really interesting and
for my understanding a difficult problem - nice work!

~~~
glutamate
Thanks for your comments.

We try to respect the uncertainty in the calculation of preferences. For
instance, if you click a blue Elvis poster, we don't know if it because you
like blue or Elvis, hence we end up showing some items that may be far from
what you are looking for.

That being said, there is without doubt room for improvement and we got a lot
of data to help with that today. In the Bayesian lingo, this is all about
fine-tuning the priors.

One of this things we are excited about is the use case where the user knows
what they want, but don't know the word for it. For instance it may turn out
that I may like Expressionism (this is in fact true) but I don't know the word
for that.

If you know that you want an Elvis poster, there isn't much point in using
Findmelike right now. I think it would be _very_ cool to have both a text
search box where you could enter what you know, and then get the Findmelike
visual choice search on the matching items to narrow those down aesthetically.

~~~
iammyIP
yes, it is also likely that just my personal preferences are somewhat
incompatible to this procedure, as i cannot imagine wanting something diffuse
i have not even a general description for.

The mixture with a text input as basis for a visual choice sounds good. Also
it could be nice if the orientation and aspect ratio of the liked images would
be taken into account.

------
boothead
I think this is awesome! However for me then most interesting thing is the
tech behind it. Having worked in the same office as the team behind this and
been to a few talks that Tom's given, here are a few things that HN might find
interesting.

* Built by the same guy behind BayesHive: [https://bayeshive.com/](https://bayeshive.com/)

* An example of probabilistic functional programming in the wild. (This let's you build programs where the variables are probability distributions.)

* Good example of something built in Haskell that really speaks to the strenghts of the language!

Maybe Tom could give us a brief synopsis of how this was built and how it
works?

~~~
glutamate
Thanks Ben.

On the programming side:

* 100% Haskell. Even our post-install script in the packages we build for the server are in Haskell.

* Use Spock and postgresql-simple

* 95% of functionality is in a library which is written in Nice Haskell - e.g. all functions are total, type safety where it makes sense.

* Library consists of data types, pure functions, and functions that live in a DB monad. All code is decoupled from the request-response server implementation.

* Front-end in AngularJS

On the statistics/learning side:

* We apply Bayes' theorem every time you press that green "Next" button. There is a statistical model for your choices based on your ultimate preferences, which we estimate.

* Lots of tricks to bring this inference down to 50ms on a modest CPU and to maximise information yield from user interaction.

More examples of this choice paradigm coming in the next few weeks.

------
HarrietJones
Really impressive, and I really liked it.

The search narrowed down pretty quickly to working out that I liked Kandinsky
and Klimt. This is awesome accurate on the one hand, but annoying on the other
hand. If I wanted to know which artists I like I'd just remember it. :-)

That's just me being "funny". It did bring up some nice pictures that I didn't
know.

------
tomallum
Love this tool and think it starts to get really interesting when you think of
other applications beyond posters.

------
exslacker
interesting idea but what others dont seem to talk about is the ui, small
changes could give you big improvements i think. like the if you hoover
outside of the original grid then it changes to the poster under it and not
only if you leave the closeup box which has a lot of empty space.

------
nysska
Very nice indeed, found something to hang in my living room ;) Nothing to add
more, I'm just impressed.

------
spuz
The demo does not appear to do anything. I click on a poster, and a tick
appears and that's it.

~~~
glutamate
Sorry if this wasn't clear. After clicking a poster and the tick appear, click
the green "Next" button to see posters like the ones you have clicked in the
first place.

~~~
spuz
I assumed Next just showed another page of results. Maybe you should popup the
next button only after the user has clicked on a poster? Also, after I clicked
next, I got what appeared to be unrelated posters which is what made me think
I was looking another page of random results.

~~~
glutamate
Thanks for your feedback and your suggestion. Findmelike obviously didn't work
so well in this case - we should be able to offer more accurate
recommendations by refining our model based on the data we have obtained
today. Also, we clearly have some UX work to do. Our mobile experience is not
very convincing.

