WeatherGuesser is a small piece of software capable of learning then distinguishing different types of weathers by looking at the clouds. The software isn't technically restrained to clouds only. You can feed it images of animals or anything else and it will just label it wrong when you evaluate the image.
The classification model used is a Multiclass Support Vector Machine, it is easily implemented thanks to the Accord.NET framework which offers an enormous variety of models and machine learning techniques.
Since it's restrained to only 3 types of weathers (Sunny, Cloudy, Thunderstorm), all you must do is create a folder hierarchy like this:
|- root_folder
|--- sunny
|- picture_of_sunny_sky_1.jpg
|- picture_of_sunny_sky_2.jpg
|- etc.
|--- cloudy
|- picture_of_cloudy_sky_1.jpg
|- picture_of_cloudy_sky_2.jpg
|- etc.
|--- thunderstorm
|- picture_of_thunderstorm_1.jpg
|- picture_of_thunderstorm_2.jpg
|- etc.
Once you've got your hierarchy right, click Load Training Data
inside the app and select your root_folder, then do Start Training
.
- The image is first cropped at 1:1 ratio down to its lowest dimension. (ex: if the height is smaller than the width then the square will have its sides length equal to the height)
- The cropped image is then rescaled to 128x128 to ensure faster training at the big cost of precision in the machine's decision. (remember, this is just a toy)
- The rescaled image is then transformed into an array of grayscale points.
Only the array of grayscale points can be fed to the learning service. You can use the StandardNormalizeService
in order to achieve what has just been described.