About my journey with Mifos Intiative
Mifos is a global organization which focuses on developing products and financial solutions for the underbanked. My journey with Mifos started after the list of organizations were introduced for GSoC '19. I was drawn to their objectives and found the tech stack familiar. The community was also very welcoming and I got sufficient guidance to get started. I found my niche in their wide array of products and decided that this was the right organization to contribute and do meaningful work for.
Learning during the GSoC period
Over the last 3 months I have learned many things and my technical knowledge and professional expertise has grown immensely
- I was introduced to Kotlin and it's benefits in Android App development.
- Being a beginner in Android App development - I got the opportunity to explore various android features and implement them.
- I also got familiar with many Android libraries such as Work Manager, khttp, Okhttp, Retrofit etc.
- I learnt about many image augmentation techniques and also about the various libraries such as imgaug.
- I got the oppotunity to work with the Google Cloud Platform, specifically the AutoML object detection feature.
- I learnt about how to write production level code and healthy development practices.
- Being a part of open source community gave me the opportunity to interact with many like-minded and tech savvy developers.
- Under the guidance of my mentor I learnt the right approach to planning a scalable project.
- I got the opportunity to interact with many people from various other Microfinance organisations.
- I picked up on other skills such as proper communication, managing time and meeting deadlines.
Work Done during the GSoC period
I was selected for a new project - Vision PPI which is a computer vision and machine learning based app to help in filling out the PPI Survey. There were two broad aspects to this project - The android app which provides the interface to the field officer for conducting the survey and the machine learning models which will be used to analyze the images captured. The following work has been done on the project.The repository can be found here
About the PPI
- The PPI is a survey conducted to help microfinance institutions to check which households are below the poverty line.
- It consists of a simple set of about 10 questions regarding the household and based on the response scores are assigned which indicate the level of poverty.
- Each country has it's own PPI. The questions often involve questions regarding objects in the household and also some other factors which can be observed visually.
- Hence, it would be greatly useful to apply computer vision techniques which could analyse the images that have been captured by the field officer and provide relevant information.
Vision PPI Android App
- Login to demo server using Fineract Platform APIs
- Home page, with client search again using Fineract Platform APIs
- User profile page for the field officer
- Client profile page which shows some basic client details and also allows to take a new survey
- New Survey functionality renders the survey questions
- Computer vision activity, this allows the user to take a picture from the gallery or use the camera and upload it to the Google cloud vision model.
- Displaying the results of the image analysis
- Image augmentation notebook - contains the implementation of various image augmentation techniques which can be used to increase the dataset size.
- Techniques: mirroring, crop, adding noise, convert to grayscale, changing brightness and changing contrast was done.
- XML to csv conversion script - Once bounding boxes have been drawn, the image file name and co-ordinates have to be formatted so that it can be used to train the AutoML model
- For the collecting images I used a webscraping tool and then applied the image augmentation technique for the base 100 images.
- For drawing bounding boxes a tool like labelImg can be used.
- I have also trained a basic model on Google Cloud Vision to detect washing machines
The following work can be found in this [PR]
- As one of the mentors mentioned that I use Kotlin for making the app, something which I had no experience in, it was challenging to learn the new language and finish the app according to the deadlines.
- I also found it difficult to gather images which could be used to train the model.
- There were privacy issues and also in general no images taken from the households surveyed. So the only option left was to webscrape google images and then apply image augmentation techniques on it to increase the size of the dataset.
Work remaining to be done
Apart from the above mentioned functionality, I would like to work on the following features after GSoC.
- Improve on the computer vision models
- Add automatic survey filling feature to reduce manual intervention.
- Improve on the UI and app look and feel.
- To test the app and measure it's accuracy and the improvement in this new method of surveying.
I would like to thank my mentors Nayan Ambali and Ishan Khanna for mentoring me thoroughly during the development phase of the project. I would also like to thank my co-mentors Rahul Goel and Rajan Maurya who extensively guided me and helped me get over my blockers. I extend my gratitude towards Ed Cable for selecting me and giving me the opportunity to work such an interesting project and also for the weekly check-ins and sorting out any difficulties that I faced. Finally, I would like to thank everyone in the community for helping me out with any issues that I faced. I look forward to contributing and learning more from the organization.