In this blog we are going to go through the complete process of how we developed a House Recommendation Search Engine Using AWS .
In order to make this search engine we only used AWS services. Whenever the user feeds in some house ID the application will give output of a house image similar to that and all the details about that house like its address and property details.
So, Firstly We made a Deep Learning Model in AWS EC2 Instance. In that we use object detection algorithms in order to detect different parts of a household like appliances, flooring, ceilings and many more categories. After that we use Image Similarity using different algorithms. All this was done in Sagemaker Notebook.
After this let’s move to EC2 Instance which provides us a virtual machine where we can write our code and be able to do many more things. So In EC2 we upload our both model codes with the help of WINSCP which is used to transfer files from local to EC2 Instance. Both the models i.e, Object detection and Image Similarity are deployed on that .
Then, we created an AWS Lambda which is a server-less platform where we wrote some code in order for it to run. We needed some libraries like numpy, pandas, and many more in lambda. We couldn’t do pip install because it wasn’t supported. So we went for EFS(Elastic File System), which is used for transferring files between different AWS Services and we created an EC2 instance where we created a mount point and on that mountpoint we installed all the dependencies. This enables AWS Lambda to fetch all the dependencies from that mountpoint with the help of EFS. We added an API gateway as a trigger so whenever a user requests and hits the API Endpoint, it passes the request and triggers the AWS Lambda function and it fetches data from AWS RDS(MYSQL Database) and returns the response i.e top similar house Image ID back to the user.
For Database We have gone for AWS RDS(Relational Database Service). RDS is a Relational Database Service which supports different Database Engines like mysql, postgresql, mariadb, oracle and others. We selected mysql because of its ease and different advantages over others. In the database we created multiple tables. Some of the tables store similarity scores and some store addresses. We create two databases: one for the frontend or live server from where the user interacts and fetches things and one for the backend where the new house ID and its scores and details get updated. We created Dynamic Queries for CRUD operation and put all the code in EC2.
Next, we went for the RETS API which is used to find MLS details and it allows you to import property listings of US houses that Different agents update. So we fetch data from there for further training and make recommendations for each and every house Image ID . So we fetched data on each 1 an hour from this API and run our object detection and similarity and find the scores then upload those scores and data to Database so in order to do so we Use AWS Instance Scheduler and Lambda which Schedule the job such that in every one an hour it run all the codes for us and update database we don’t have to worry about that.