In Machine Learning Kernels on Kaggle I often see EDAs with structured data. So, I was wondering, if there are any recommended/standard procedures for EDA with image datasets. What kind of statistical analyses do you conduct, what kind of plots do you draw and what aims do you have in mind?
Have a look at The HASYv2 dataset. I tried to do as much of the exploratory work as possible to make sure that others can directly try more interesting thing with the dataset.
Image format specific stuff
- (Minimum / Median / Mean / Maximum) (width / height / area)
- Image formats
- Exiff meta data
For this kind of stuff, you might want to have a look at
Image/ML specific stuff
Things you can do with images:
You can compute the correlation of pixels, e.g. Figure 3:
- Plot the distribution of classes.
- Behaviour of standard classification algorithms (CNNs, VGG-16)
- Confusion Matrix Ordering (page 48 - 52, especially Figure 5.12 and 5.13): Find similar classes
Since we are talking about visual data, I would suggest to perform a clustering of images features extracted from a pre-trained neural network on similar images for e.g. if its camera images model trained on imagenet, if its CG (Computer Generated Images e.g. cartoons) a model trained on similar dataset, and perform a T-SNE visualization, and visually examine the clusters. That can be a way to perform EDA on a image dataset.
Example Image of T-SNE on Images Dataset: Link
Idea from Lev Manovich, shown on video https://youtube.com/watch?v=GIVK0-SNUgU shows how most effectively plotting picture data to chart is made by showing the images as the dots in the chart.
When something interesting behavior is on one point, you can observe the image right away.
There was an example about plotting time series data on x-y space and from the form of daily curve there was a anomality in one day. Directly zooming on the pictures on that revealed a fire taken place in the landscape. From average value black and white plots you would not get that kind of immediate observations.