First of all, I would like to congratulate the final winners. Your hard work really deserves to be appreciated.
In principle, what I do is combine images and tabular data provided by zindi.
A more complete explanation and source code can be accessed at the following link:
https://github.com/systemtouch/zindiroot
From the Yolo mask results, by calculate all the segment yolo predictions, I made an estimate of the boundaries between plants 1 to 7. I used these points to cut the image based on the plant number for the model to use to produce image for training and predictions.
To speed up the process of loading masked images, I put the masking results of all images into a dictionary and save to single pickle file.
For training and prediction, from each radar plant image, I stacked images from “Start” to “Start” + 40 vertically.
Then, I will insert the mask value from yolo into each image by taking the maximum value of each pixel between the original image and the image mask.
I also added a picture of the opposing plant number to the right of the plant picture. The mapping of opposing plant numbers is based on the following pairs:
I also combined the tabular values to combine with the image embed values from timm, difference between End and Start, Genotype and Stage
For genotype and stage data, I coded them into numbers.
Data modeling:
I tried several models to get a lot of insight into which model is the best. I used SVR, LGBM, CatBoost, and NN .For fairly good results I tend to SVR and LGBM, I also tried using CNN but the results were not so good.
For post processing, I calculate the average of each related plant pair and assign it to both plants.
Model validation uses StratifiedGroupKFold by RootVolume with grouped by FolderName with 5 folds, and CV score is calculated using RMSE.
Training takes about 10 minutes, and inference takes a total of about 5 minutes. The metric I use is RMSE, with 5 StratifiedGroupKFold CV. From the training results, the OOF RMSE I got was 1.45120 with a public score of 1.025004044 and private score of 1.2613859
Ok, Hopefully the simple description above can be useful. Please forgive me if my explanation is not good enough. Thank you.
Congrats on your brilliant approach! Well deserved ! Thank you for sharing, and keep going!
Thanks...
Thanks for sharing. Well documented too! I've starred your post😁
You're welcome @CodeJoe ...