PicScout is Hiring !!!

Hi All,

PicScout is looking for a top notch SW engineers that would like to join an extremely innovative team.

If you consider yourself as one that can fit the team, please solve the below quiz and if you had a creative solution expect a phone call from us. You can choose any language you like or even write pseudo. In your code, include the relevant unit tests that will verify the correctness of the solution.

Answers can be sent to lior.cohen@picscout.com.

Don’t forget to also attach your CV along with the solution.
The candidates that will finally be hired will win a 3K NIS prize.

**The problem is taken from http://uva.onlinejudge.org/


So here it is:


The Blocks Problem

Background 

Many areas of Computer Science use simple, abstract domains for both analytical and empirical studies. For example, an early AI study of planning and robotics (STRIPS) used a block world in which a robot arm performed tasks involving the manipulation of blocks.

In this problem you will model a simple block world under certain rules and constraints. Rather than determine how to achieve a specified state, you will “program” a robotic arm to respond to a limited set of commands.

The Problem 

The problem is to parse a series of commands that instruct a robot arm in how to manipulate blocks that lie on a flat table. Initially there are nblocks on the table (numbered from 0 to n-1) with block bi adjacent to block bi+1 for all $0 leq i < n-1$ as shown in the diagram below:

begin{figure} centering setlength{unitlength}{0.0125in} % begin{picture} (2... ...raisebox{0pt}[0pt][0pt]{$bullet bullet bullet$ }}} end{picture} end{figure}

Figure: Initial Blocks World


The valid commands for the robot arm that manipulates blocks are:

  • move a onto bwhere a and b are block numbers, puts block a onto block b after returning any blocks that are stacked on top of blocks a and b to their initial positions.
  • move a over bwhere a and b are block numbers, puts block a onto the top of the stack containing block b, after returning any blocks that are stacked on top of block a to their initial positions.
  • pile a onto bwhere a and b are block numbers, moves the pile of blocks consisting of block a, and any blocks that are stacked above block a, onto block b. All blocks on top of block b are moved to their initial positions prior to the pile taking place. The blocks stacked above blocka retain their order when moved.
  • pile a over bwhere a and b are block numbers, puts the pile of blocks consisting of block a, and any blocks that are stacked above block a, onto the top of the stack containing block b. The blocks stacked above block a retain their original order when moved.
  • quitterminates manipulations in the block world.

Any command in which a = b or in which a and b are in the same stack of blocks is an illegal command. All illegal commands should be ignored and should have no affect on the configuration of blocks.

The Input 

The input begins with an integer n on a line by itself representing the number of blocks in the block world. You may assume that 0 < n < 25.

The number of blocks is followed by a sequence of block commands, one command per line. Your program should process all commands until the quit command is encountered.
You may assume that all commands will be of the form specified above. There will be no syntactically incorrect commands.

The Output 

The output should consist of the final state of the blocks world. Each original block position numbered i ( $0 leq i < n$ where n is the number of blocks) should appear followed immediately by a colon. If there is at least a block on it, the colon must be followed by one space, followed by a list of blocks that appear stacked in that position with each block number separated from other block numbers by a space. Don’t put any trailing spaces on a line.
There should be one line of output for each block position (i.e., n lines of output where n is the integer on the first line of input).

Sample Input 

10
move 9 onto 1
move 8 over 1
move 7 over 1
move 6 over 1
pile 8 over 6
pile 8 over 5
move 2 over 1
move 4 over 9
quit

Sample Output 

 0: 0
1: 1 9 2 4
2:
3: 3
4:
5: 5 8 7 6
6:
7:
8:
9:

PicScout is Hiring !!!

Hi all,
PicScout is looking for top notch SW engineers that would like to join an extremely innovative team.
If you consider yourself as one that can fit the team, please solve the below quiz and if your solution was well written – expect a phone call from us. You can choose any language you like or even write pseudo. In your code, include the relevant unit tests that will verify the correctness of the solution.

Answers can be sent to: omer.schliefer@picscout.com

Don’t forget to also attach your CV along with the solution.
Candidates that will finally be hired will win a 3K NISprize.

So here it is:

We want to write a program that will check for intersection between two rectangles.
The program will receive a string parameter which will represent two rectangles on a Cartesian coordinate plane and will contain 8 integer coordinates with the first 4 making up the first rectangle and the last 4 making up the second rectangle. The input string will be in the following format: “(0,0),(2,2),(2,0),(0,2),(1,0),(1,2),(6,0),(6,2)”

The program should determine the area of the space where the two rectangles overlap, and then output that area. . If there’s no overlap between the two rectangles return 0. 
For the above example, the program should output: 2
*The problem is taken from:
 http://coderbyte.com/CodingArea/Language.php?ct=Overlapping%20Rectangles

Cross platform IPC using Apache Thrift™

In the implementation of our API we needed a reliable way to connect the RESTfull web api with our back-end services written in C++ running on linux machines.

Designing a communication protocol over TCP/IP in-house, implementing and maintaing it in at least two programming languages (C# and C++) is impractical and frankly too hard to do correctly. So the better option is to pick on of the existing solutions for this task.

Diversity in Advertising: How Tech Can Detect It and Why It Matters

Unconscious bias is very prevalent. Unless companies are actively putting processes in place to manage it, then it’s likely impacting not just internal decision-making, but also the decision-making steps of its customer base. And not in a good way.
Today, an ad isn’t just an ad. It’s not just a 30-second spot on TV, a jingle on the radio (does anyone still listen to them anymore?), or even a promoted post on your Facebook feed. It’s the visuals populating your website. The images splashed across a brand’s social media account. It’s also the countless photographs posted by fans that celebrate/denigrate your brand. Everything is an ad. 

Why Diversity in Advertising is Critical

On the internet today, ads aren’t just part of the content or interface, they are the content and the interface. From what photos you see on Facebook, to the music you listen to on Spotify, to the videos you watch on Snapchat — it’s all served by algorithms that have quantified your response well enough to exploit your tastes, showing you things that you will almost certainly click on. By using these apps and services, we’re feeding the companies that control them immense amounts of data that, in turn, tailors the medium to fit our tastes. So today, more than ever, brands have to be attune to the demand in campaign diversity across all of its communication channels.
 
While ads traditionally attempt to inspire through its own brand culture, today audiences expect more from the media at the very least, for the media and advertisements to reflect who they are. The demographic shift of the ad audience has far outpaced the demographic shift of the ad industry. Millennials are the most diverse generation in US history: three-quarters of Baby Boomers are white, compared to just over half of millennials. 
 
And this reflection trickles down into concrete purchases. According to this study, 80% of parents like seeing diverse families in advertising. But what’s more, the research found 49% of millennial parents were more likely to talk to friends about products that include more diverse family types in their ads and perhaps most importantly to brands 41% are more likely to purchase those products. Meanwhile, separate research cited from The Harris Poll by eMarketer indicates nearly 65% of 18-to-34-year-olds overall prefer shopping at retailers that offer a wide selection of multicultural products.
 
Diversity Advertising
Nothing quite sums up the need for ethnic diversity in brand marketing as much as the powerful photo essay published in the May issue of O, The Oprah Magazine.
 

Realistic Steps to Achieve Campaign Diversity in Advertising

While this research suggests a need for greater diversity in ads, the marketing industry itself suffers from a reputation of not being very inclusive in its hiring practices, which could, in part, explain why marketers struggle to come up with campaign strategies reflecting a range of ethnicities and cultural backgrounds. 
 

Actioning Diversity in Hiring Practices Not Just Lip Service

As the Airbnb CMO Jonathan Mildenhall explained: he’s been in the industry for almost 30 years and, while lip service has been paid to diversity, it’s only been in the last few years that he’s seen a visible change. Mildenhall said he is attempting to affect his own change by not only actively looking to hire from a more diverse range of candidates, but also in demanding more diversity from the agencies Airbnb employs. Reflectively, Airbnb’s Superbowl ad celebrating diversity was one of the most popular in 2017.
 
 

Diversity in Visual Marketing  Stocktake, Then Move Forward

Companies are churning out visuals at an exponentially high rate: some experts estimate that most Americans are exposed to around 4,000 to 10,000 advertisements each day. According to Mary Meeker’s annual Internet Trends report, people upload an average of 1.8 billion digital images every single day. And when you add the fact that 74% of social media marketers use visual assets in their social media marketing, ahead of blogs (68%) and videos (60%) there’s quite a lot of visual data to stay on top of. 

 
There are a number of ways to achieve diversity in visual marketing. The first would be a stocktake of all your brand’s current and recent visuals. To do this, a Visual API would come in handy, quickly organizing and managing your visual content based on demographic-driven image analysis. Using face recognition technology, Demographic Analysis extracts demographic data (age, gender and multicultural appearance) based on facial characteristics within your image collection. Now you can be in control of your visual output, as you can search for your visual content based on the demographic data you require. 
 
The basics of Face Recognition and Demographic Image Analysis

 
Getty Images are helping brands move forward in their thinking with their Lean In Together Collection, a group of visuals designed to combat gender clichés.  Stock photography is easily accessible and much cheaper than hiring a photographer to produce images for a brochure or an ad or a website, but it’s often rife with stereotypes. In partnering with Sheryl Sandberg’s LeanIn.org, Getty Images of the leading stock photo agencies in the world is taking a stand to
represent women, families and minorities in more empowering ways. Like Sheryl Sandberg said in an interview, “You can’t be what you can’t see. In an age where media are all around us, it is critical that images provide examples that both women and men can emulate.”
 
The next step would be to think beyond adding representations of diversity in advertisements, and instead take a more comprehensive approach across all operations. The messaging won’t be enough if the products are priced beyond affordability or aren’t accessible by all audiences. The messaging has to go beyond the numbers’ – it can’t be diversity for diversity’s sake. 

“You can’t be what you can’t see.”

The topic of diversity in 2017 is perhaps a more loaded one than it has been in the past, as politics designed to exclude certain segments of the US population seems to be ramping up. For brands to connect with consumers, it’s imperative that they’re inclusive, accessible and brave in challenging the status quo. Technology can only take you so far. We’ve come a long way but we have an enormously long way to go. Once brands and agencies truly understand the critical need for diversity in all their communication channels and workplaces, it’s a much brighter future. 

 

DevTalk: Logstash Aggregations

At PicScout we use ELK (Elastic-Logstash-Kibana) for centralized logging and monitoring of our system. The way it works – we log a single message for each task our process does (using log4net with UDP appender). These messages are being handle by the logstash, and saved into ElasticSearch DB. Then, using Kibana we see dashboard and aggregation of these messages with very nice UI.

 

Starting Point

 

 

 

Logstash Aggregations - starting point
Logstash Aggregations – starting point

 


So, if everything is so nice and clear, why am I writing this post?

Well, we wanted to scale. Scaling means more process, i.e. doing more tasks, and more tasks means more messages and more messages means more data handled by the logstash and sent to ElasticSearch DB. So basically it seems like we also need to scale our ELK system, right?

Well, we could do that, but before we go ahead and buy some hardware – let’s think of other ways to deal with this kind of scaling.

 

We though of 3 options:

1. Send only some of the data to ELK and extrapolate the data (i.e. send only 50% of the messages to Elastic DB and multiply the Kibana dashboards by 2). This can give us good results assuming we decide which messages to drop randomly.

Logstash Aggregations - option 1
Logstash Aggregations – option 1

 

2. Aggregation at the application level. This will require some code to be developed to handle in memory aggregations before sending a message.

Logstash Aggregations - option 2
Logstash Aggregations – option 2

 

3. Aggregation at logstash level. This will not require any change in the application, but will require a change in logstash script which will aggregate the result before sending a message.

Logstash Aggregations - option 3
Logstash Aggregations – option 3

 

Eventually we decided to go with option 3 because it was less intrusive (didn’t have to change our process code) and we didn’t have to “lose” data.

 

So, How did we do that?

It turned out logstash has a nifty plugin for logstash called “aggregate”.

Sound simple? Well not so much in our case, as you can see from the documentation, none of the supported use cases works for us, since our use case is a “no start/no end event that runs “forever” type” of case.

So how did we manage to achieve it? Let’s look at the final script and we’ll go over it piece by piece:

Given our grok:

match => [ “message”, “%{TIMESTAMP_ISO8601:origtime}%{GREEDYDATA} %{WORD:progress}:%{WORD:action} elapsed:%{NUMBER:elapsed:int}%{GREEDYDATA}”]

 

This is the aggregation filter:

aggregate {

       task_id => “%{action}_%{progress}”

       code =>

       map[‘avg’] || = 0;

       map[‘avg’] += event.get(‘elapsed’);

       map[‘my_count’] || = 0;

       map[‘my_count’] += 1;

 

       if (map[‘my_count’] == ${LogstashAggregationCount})#Environment variable

       event.set(‘elapsedAvg’, (map[‘avg’] / map[‘my_count’]))

       event.set(‘Aggregetion’, true)

       map[‘avg’] = 0

       map[‘my_count’] = 0

       end

}

if [Aggregetion] {

       mutate {

       remove_field => [“message”, “tags”, “elapsed”, “type”]

       }

       aggregate {

       task_id => “%{action}_%{progress}”

       code => “”

       end_of_task => true

       }

}

if (![Aggregetion]) {

       drop {}

}

 

Now let’s go over it:

 

task_id => “%{action}_%{progress}”

 

This line defines our specific aggregation map. Each aggregation in our system will create its own map with its own data so that the aggregation works as expected and we don’t mixed

different types of logs. In this case the task id is composed of our log action and progress.

 

Next we have our code segment:

 

code =>

map[‘my_count’] || = 0;

       map[‘my_count’] += 1;

       map[‘avg’] || = 0;

       map[‘avg’] += event.get(‘elapsed’);

      

 

       if (map[‘my_count’] == ${LogstashAggregationCount})#Environment variable

       event.set(‘elapsedAvg’, (map[‘avg’] / map[‘my_count’]))

       event.set(‘Aggregetion’, true)

       map[‘avg’] = 0

       map[‘my_count’] = 0

       end

 

Let’s go over the syntax real quick. Logstash uses ruby as the code language.

map[‘<name>’]  –  is our predefined map in which we can store our aggregation data.


event
–  is the received log after grok, which means we can get parts of the log by name as long as we have a corresponding grok variable defined.

 

So first we initialize our counter variable ‘my_count’ this will control the amount of aggregation we want to do.

As in how many logs we want to aggregate in this aggregation.

(||= operator is the equivalent of checking if is undefined/nil/false initialize it as 0 Full explanation)

 

Then we can start adding our aggregation logic. In this case we want to aggregate the elapsed time of our action by averaging it.

So we start by summing all the elapsed times of our logs into  map[‘avg’].

 

We do this by adding the elapsed data from out event variable:

 

map[‘avg’] += event.get(‘elapsed’);

 

Next we have our most important condition:

 

if (map[‘my_count’] == ${LogstashAggregationCount})#Environment variable

 

This condition decides if it’s time to send the aggregated data or not.

Since we will probably have more that one aggregations in our logstash, it’s a good idea to have the “aggregation counter” be in a single place.

The easiest way to do so is by adding an environment variable in our logstash machine and reading it from the logstash like so:

${EnvironmentVariable} *note that if it’s not defined in the machine this will throw an exception.

 

Now we can do the actual aggregation and send our aggregated log:

 

event.set(‘elapsedAvg’, (map[‘avg’] / map[‘my_count’]))

       event.set(‘Aggregetion’, true)

       map[‘avg’] = 0

       map[‘my_count’] = 0

 

The first thing is add the aggregated avg using the event.set property, this in turnwill add a new “variable” to our log, named ‘elapsedAvg’ with our calculated average.

 

Next we add a new “variable” named ‘Aggregetion’ with a “True” value.

This will help us remove the unaggregated logs before reaching the elastic db.

This happen in the code:

 

if (![Aggregetion]) {

       drop {}

}

 Lastlly we have the final optional “mutation” of the aggregated log:

 

if [Aggregetion] {

       mutate {

       remove_field => [“message”, “tags”, “elapsed”, “type”]

       }

       aggregate {

       task_id => “%{action}_%{progress}”

       code => “”

       end_of_task => true

       }

}

 

This code removed non relevant “variables” from our log. For example we don’t need the elapsed time any more since we have our new ‘elapsedAvg’ field.

And finally we tell the aggregation framework to end this aggregation map.This is necessary because by default, all maps older than 1800 seconds are automatically deleted. So to prevent data loss we invoke it ourselves.

So this is the basic of how we, at PicScout, use the aggregation plug in of logstash to make a non intrusive aggregation of all of our logs, with next-to-no log lost, and with 1/100 of the computing resources.

This DevTalk was brought to you by Idan Ambar and Jony Feldman.

What Does it Take to Run a Software Engineering Code Retreat Like a Pro

Ach, software engineers. All day, every day working hard on our amazing technology. So what’s the best way to give your software engineering team a break and stimulate their creativity? Pizza and snacks included, of course (gotta keep them coders happy)…

Well, it’s PicScout’s code retreat!

software engineering

Software Development Through Another Prism

So what is Code Retreat? A programmer named Corey Haines used to talk to his co-workers about the quality of the code he would write if he were not subject to time constraints. The assumption is that when we deal with day-to-day tasks, software engineering teams tend to write the code they write – even if they think there is a more efficient way – simply because they don’t have the time and the privilege to learn or experiment with something new.

Time is money: there are goals, there are schedules, and there are bosses. In order to finish our daily tasks, we tend to stay in our comfort zone and so we will, and always will, do what we know best. Or rather, we’ll never improve. There will always be a gap between how we do things and how we want to do them.

Software Engineering Projects: make it relevant and creative

The idea of ​​code retreat is to allow the programmer to write the perfect code he or she would write if they had all the time and resources in the world. And why is it important? Because after experiencing something, calmly and thoroughly, you feel more comfortable integrating it into a daily routine. And so in the end we will narrow the gap between the code that we write everyday and the perfect code. Another principle of running a code retreat is teamwork. Your team would be exposed to different thinking processes while also learning to work with your teammates. Who said it was impossible to combine business and pleasure…

We at PicScout have long understood this, so every three months we unleash a customized code retreat on our software engineering team. The team is divided into small teams of two or three programmers who together perform the task: each time someone else is responsible for preparing the enrichment task and selecting the material to be learned.

Two of our star developers who solved the previous code reteat in record time, Assaf Mozes and Yair Knafo, prepared PicScout’s most recent code retreat. What was important to them was that at the end of the fun project, people would have a sense of accomplishment. So they decided to frame the project like an escape room, where the only way out is to code your way out.

Where the only way out is to code your way out

In this innovative code retreat, the project is called The Forensic Challenge. A girl named Jane Wick, an avid bird lover, disappeared in South Asia and is suspected of involvement of criminal organizations, and the team’s goal is to find her.

Jane’s rescue missions dealt with:
• website vulnerabilities
• image processing
• geo-location

For example, in order to find Jane, the team had to break into her email account, process and clean a distorted picture, and more. A few days before the code retreat, Assaf and Yair sent the team some theoretical material that would provide enough background and knowledge to enable them to solve the challenge. There were, of course, also those who were not satisfied with reading the material but also experienced it, their names are stored in the system.

So, how does it work? Usually taking place on the last day of the work week is ideal – for PicScout, this is on a sunny Thursday afternoon. The entire software development team convenes in a meeting room and the mission is explained. Then pairs of two or groups of three developers prepare to solve the task. What’s nice to see is when a team takes a different approach, tries other solutions, and of course works at a different pace. At the same time, those responsible for the mission also move between the teams, directing them where necessary. This is the time to remind that a code retreat is not a competition with winners and losers, but rather a team and skill building activity. The code retreat takes about two to three hours, and at the end the staff return to the conference room and discuss solving each of the problems. Each software engineer tells about the approach he or she took, the challenges met and the solutions they found. The event concludes in the kitchen with hot pizzas and a table full of snacks and treats.

We’ll see you next time!

How to Strike the Visual Tone to Win the French Election

Striking the right visual tone is especially crucial in France, capital of the cosmetic and fashion industries, and whose Parisian salons have set global style trends for centuries. As the republic votes in the 2017 Presidential French Election of 2017, PicScout took to measuring the visual presence and impact of the leading French election candidates across the political spectrum. One’s online presence both across editorial sites and social media platforms is crucial in today’s visual-dominant world, where we more often judge a book by its cover, than by its contents. 
 
 
Marine Le Pen had dominated the visual chatter in the lead-up to today’s vote. She is by far the most divisive politician in the race but arguably the most popular. Her political personality and pedigree regularly attracts the attention of the French media. Interestingly, Le Pen favors navy blue, which is called bleu marine” in French the name of her political movement, a wordplay on her first name and the colour long associated with conservatives in France.  Le Pen is the only female candidate among the 11 running: since announcing her candidacy, she has cut her blond hair and donned dark menswear-style suits. That contrasts with the only other woman to be a top presidential contender in France, Ségolenè Royal, who wore bright feminine colours in her 2007 campaign.
 
 
The telegenic Emmanuel Macron has made much of his presentational style. The centrist presidential candidate for the French election is coming a close second in the visual presence stakes, and has recently picked up a key alley in former USA president Barack Obama. His increasing popularity across social media may also be reflected in the voting booths, as he’s seen as France’s last, best chance of keeping far-right leader Marine Le Pen from becoming the country’s next president. With frustration at France’s political class running high, Macron has tapped into a desire for wholesale change that has also propelled far-right candidate Marine Le Pen and leftist Jean-Luc Melenchon.
 
 
Speaking of Melenchon, the far-left candidate’s popularity and visual presence has surged in the closing days of the campaign. His responsive social media campaign, together with his use of hologram projections during political rallies across France has enamored him as a tech-savvy protector of France’s socialist future. This is clever branding, as Melenchon is the oldest candidate in the running.
 
 
Based on the visual presence and chatter alone, we believe the French election will be close call between Le Pen and Macron. While Le Pen was already very popular from the start of her campaign, media coverage of Macron has ballooned in the industry’s last-minute efforts in keeping Le Pen away. Only time will tell.
 

AI, Ronaldo + Messi: How to Keep an Eye on Brand Ambassadors

Measuring the ROI of Brand Ambassadors

Football’s biggest rivalry takes center stage today when Real Madrid and Barcelona square off in the “El Clásico”, a match brimming with star power and ensuing high stakes.  It’s one of the world’s most watched and anticipated sporting events, and it’s a pivotal clash this time around. In anticipation of this head-to-head, PicScout used its AI-driven facial recognition technology to explore the visual presence of both Cristiano Ronaldo and Lionel Messi, and how their personal brands impact the game and vice versa. This is a classic case of measuring the ROI of brand ambassadors — in this case, two of the most famous sportsmen in the world.

Is it all about the money?

First off, it’s hard to ignore the money angle when these two players meet. Last year, Ronaldo ($88 million) and Messi ($81.4 million) were the two highest-paid athletes on the planet last year. What’s more, their teams Real Madrid ($3.65 billion) and Barcelona ($3.55 billion) are the second and third most valuable sports franchises in the world (only the Dallas Cowboys are worth more).  

Yet despite their shared dominance over the most-watched sport in the world, Ronaldo’s visual presence is double that of Messi. Off the field is where the real cultivation of personal brand actually happens. Ronaldo has become one of the top influencers and brand ambassadors on the planet. He’s leveraged his social following and engagement into a media powerhouse that drives tremendous value for his sponsors. This is clear from his $1 billion lifetime pact with Nike in 2016: Ronaldo has always been incredibly effective at integrating his sponsors into the content he shares with his over 240 million global followers.

brand ambassadors
Note the not-so-subtle placement of his Tag Heuer watch.
brand ambassadors
Promoting his own line of Nike CR7 Footwear

 Messi, on the other hand, focuses his engagement on fewer social media channels and has a significantly reduced visual presence.

brand ambassadors
brand ambassadors

Longevity of Brand Ambassadors

But many are musing if this may be one of the last times we may see Ronaldo and Messi go head to head — it’s been ten years since they both made their mark on the football scene. Some say that Ronaldo’s best football year, in terms of his contribution through the whole game, were between 2006-2008. And it’s been 10 years since Lionel Messi’s stunning breakthrough goal, the one which aped Diego Maradona so perfectly. 

In football terms, 10 years is a lifetime, or at least the equivalent of a Golden Wedding. And at significant anniversaries it is natural to start asking just how much longer things can last like this. These two players and these two teams have dominated the football landscape for much of the past 10 years. And during this time, both Ronaldo and Messi have succeeded in becoming the sport’s best players in its history, averaging more than a goal per league game, and between them having won six out of nine Champions Leagues (including Ronaldo’s victory with Manchester United in 2008).  Ronaldo also made history last week as he became the first player to reach 100 Champions League goals. Yet how does this affect their ROI as brand ambassadors?

Cultivating the Visual Chatter

There’s an endless silly argument about who is better, Messi or Ronaldo, when the key point is that they are probably the two best club players in history. However in terms of dominates the visual chatter and visual web presence, Ronaldo wins hands down. 

In this way, we can clearly see how PicScout’s facial recognition technology is the ideal method in assessing the ROI of brand ambassadors — in this case, representing the brand of football itself. Learn more here about how PicScout’s AI-trained computer vision can measure the visual impact of your high-value talent and ambassadors. 

Are you a celebrity? Or a really close lookalike?

Celebrities, by definition, have some of the most recognizable faces in the world. We see them everywhere — online and off — but that means squat to the clean slate of AI-trained computers. Using facial recognition technology, these computer systems can identify famous faces and remember them for future reference. To celebrate National Lookalike Day, let’s take a look at the stats and the science of our successful app My Twin Celeb”, where a user uploads their selfie which is then matched to their ‘twin’ celebrity. 

The Science 

The fusion of artificial intelligence with image recognition technology has enabled computers to ‘see’ objects and context within visual content. And with the advancements of face detection and recognition capabilities, computers can also recognize faces and identify specific people when trained.  This face analysis technology automatically sorts and groups photos according facial landmarks the computer recognizes and stores within its memory. When a user uploads a picture of themselves, the computer locates the stored image that shares the most similar facial landmarks with the uploaded content, producing a match in seconds.  Today, facial recognition software is still used largely for security, yet other applications are becoming more and more popular, particularly in the retail, financial and telecommunication industry.

The Stats

“My Twin Celeb” app quickly became viral with thousands of downloads each day. It was featured on a number of tv programs and national newspapers, and has scanned over 1.5 million images to date! The most used phone that downloaded the Android app was the Samsung Galaxy S5, S6, and S7, clearly showing the market leader among Android-based phones. What’s also interesting, is that most images uploaded were chosen from the users gallery (63%), as opposed to selfies taken on the spot (37%). 

Lookalike Facial Recognition

Check out your twin celeb for National Lookalike Day!

National Lookalike Day is another reason to make facial recognition technology fun and accessible — it’s not only being touted for airport security and law enforcement, but also banking and marketing. The fun app also provides a great laugh when shared with friends and family — so download it today and find out which star you are! 

Why Real Estate is the Next Industry to be Hit By Artificial Intelligence

Buying a home conjures a cocktail of emotions. Plus, most buyers have already concocted a list of requirements before they’ve even began their search. They’ve got to have a connection with the property, its look and feel, it has to be within their budget, located in their preferred neighborhood, and so on. As the real estate industry focuses primarily online, much of the emotion is dampened. And this is where artificial intelligence (AI) kicks in.

Real estate searches start at Google rather than at the realtor’s office. While 80% of all home buyers are house hunting online, more than 83% of all home buyers want to see pictures of the property before they check it out in person. And since they already have an idea of how they’d like their future home to look, AI-driven Visual Search has the potential to be a game-changer in real estate listings. 

 

real estate artificial intelligence

Why Would This Tech Shape the Real Estate Industry?

Visual Search allows home buyers to browse properties by visual similarities — because more often than not, words aren’t enough to describe what we like about a house. The usual filters remain in place (budget, neighborhood, number of rooms, etc), but when the buyer has visual control over their choices, the results soon match their initial list of requirements. 

Ideally, this AI-driven computer vision can identify specific locations within a property ( eg. backyard swimming pool), objects within a property (eg. fireplace), or materials (eg. wooden floors). Let’s say a buyer wanted to see every property featuring an ‘open plan kitchen’ with a predominantly white color theme/floor tiles within a particular neighborhood. Rather than scrolling through every real estate listing for that zip code, artificial intelligence and Visual Search would bring up a range of options for the buyer to peruse and perhaps consequently purchase. 

 

real estate artificial intelligence

Step-by-Step Process of Artificial Intelligence’s Impact

How do these visuals reflect a buyer’s visual preferences? The first step happens when the visuals are uploaded into the real estate portal — image recognition technology assists in automatically tagging the images, helping to sort through them when required. The next step is when the buyer requests these images as they browse visually — the portal then offers a range of visually similar listings based on those tags and the buyer’s visual preferences.

In teaching computers to see, the entire world has become a showroom. And as buyers are bombarded with visual content from every direction, it’s never been more important for real estate portals to take advantage of their ever-growing bank of visual assets. Applying image recognition technology to their front (buyer) and back (seller) ends also gives them a competitive edge in growing their user base.

Improving the Behind-the-Scenes’ Flow of Real Estate Portals

We’ve already looked how AI-driven computer vision helps buyers in the front-end of real estate portals — let’s have a look at how it can streamline the back-end for sellers wanting to post visuals of their properties.  Functions like Visual Search helps sellers determine if certain images were uploaded before and are already online, thus avoiding duplicating content. Another function that can help sellers cut down time-consuming mechanical tasks is suggested auto-taggingSuggested auto-tagging labels your images with appropriate keywords and are then part of your image metadata. At this stage, the technology helps speed up the process by labeling submissions and learning from every upload. 

Customizing Your House Hunting with AI

Buyers are spending more time online doing research and want to see visuals of the homes they’re interested in — long before they even consider going to see it in person. It’s essential for real estate portals to capitalize on the wealth of visual data they have at their fingertips and provide a more visual experience for both their buying and selling customer-base.

In this way, PicScout’s Visual API is the ideal image recognition technology for real estate portals to enhance their customer experience. Learn more here on the different applications of PicScout’s AI-driven computer vision, and contact us for more information on how to make the most of your visual assets in the real estate industry.