Open comments for this post
I’ve also been looking into how to change the texture system to be consistent, i tried using a custom made value co-occurance system (Results in image) and used that to get an AI-coded GLCM based co-occurance system to try to get a texture but it genuinely seems like there is no real distrinction between the dense and the mixed classes in terms of texture, so I do think I’ve run into a wall here. Without neural networks (Which would ruin the point of having interpretability in my program) i genuinely dont know how I would fix this. So, I’m deciding to temporarily scrap the texture idea for my own program. to make up for this because I still want something to distinguish my algorithm or make it unique, i was just thinking to have some system such that with a large sample size, it uses EMD to find the best 25 centeroid/medoid images to create a (near) perfectly representative hue-saturation histogram. Actually I think I do want some kind of texture detection but it doesnt necessarily have to be with the value channel since that varies with luminance a ton lol
Open comments for this post
Started the day off by trying to get a siamese network to work alongside my algorithm but I didnt get any results yet. Afterwards I setup a system with my custom algorithm such that I give it a pre-made list of the best images to look at. I also actually went back to using EMD because I realized an issue with the program was that there were too few buckets. My previous way of using 12 hue buckets and 8 saturation buckets was being too lenient with EMD because a shift from orange-yellow to green in hue would just be like 1-2 buckets away. This means that the program wasn’t sensitive enough and as a result favored the extreme classes (dense and dry). I changed back to EMD, added the best list, and increased the buckets. The image used in this devlog actually is using random images from the 80 folder as the training sample, which is the eventual goal (Being able to use totally random training images to work the best) so I think this is hte most fair to post as progress. I’m thinking maybe I can add some system that automatically chooses the best images?
Open comments for this post
Worked on rewriting the code. Instead of using EMD I’m now using fisher weights and I readjusted the code for 3 classes, and as you can see there is a dramatic increase in performance! I’m going to start working on the Siamese network for comparison side of the paper
Open comments for this post
Began testing with an 80/20 split using my dataset. However, you can see here obviously that there are many issues with the program. Here is my new approach:
- Test out (Not completely change to) fisher chi squared weights, maybe EMD is the problem?
- Redo the dataset using three classes
- Scrap current shadow detection
Open comments for this post
Went through all of my data and sorted through images, specifically from forest8 and forest17 since those were incredibly problematic. I then collected averages for 50 images for each class from my training group for my HSV algorithm so i can start testing and creating a demo website.
Open comments for this post
Created a unified system that evaluates both the color and the noise! the algorithm is complete, and the next steps are completing the implementation of other algorithms to run comparative analysis and a demo website for people to play around with the system on.
Open comments for this post
a little bit of a breakthrough with using canny instead of laplachian to look out for density of sharp edges in value differences rather than entire fluctuations! You can see in the terminal that the canopy (good) image registers a much higher canniness score than the low shrub, which has fewer and less sharp shadows. This is the direction I want to take the texture detection algorithm in, now it’s just time to integrate it into the decision making machine
Open comments for this post
the final sort. ~2200 images fully sorted into their respective categories and ready for training.
Open comments for this post
horrible day today with the sorting process. I changed the types to canopy, dry, lowShrub, and patchy, which was a small change but that meant I had to redo the sorting which was OK with me at first because these category names make more sense. then I realized that there was an issue with my google colab project where it wouldnt send the images to lowShrub folder because i had hardcoded “flat” into there which was really stupid of me so I wasted another hour there. I’m back at 1100/2200 images sorted and unfortunately it looks like I’m gonna have to finish this tomorrow.
Open comments for this post
I’ve been going through a new set of images and classifying them for my yolov8 model that im gonna benchmark and compare this to with the categories “canopy”, “dry”, “flat”, and “patchy”. I got 1100/2200 of those images done and uploaded to lapse.
Open comments for this post
Worked on using Earth Mover’s Distance algorithm in order to calcualte HSV color distance rather than absolute difference. EMD is the standard for these types of applications so this is a good change. I also noticed that the visualiation from last devlog didn’t load so i also uploaded that in this devlog image
Open comments for this post
began on implementing my own HSV algorithm! i’ve already had some work put into it from previous project but most of this is made by hand. Essentially, it goes through each pixel in the image using vectorization and places it on a 2D histogram. it’s 12 buckets wide for hue and 8 buckets high for saturation. I then used matplotlib in python in order to visualize the 2D histograms and then start comparing it to the reference images that the uesr inputs, although I haven’t been able to numerically compare them yet. below attached is a result and its visualization
Open comments for this post
Set up a YOLOv8 model that is fine tuned to categorize vegetation images into good, mediocre, and poor vegetation. I actually started doing the categorization for training data a while ago but all of the technical stuff began after June 1st and that time was not logged. Ive done this before so it was quite easy, and its classifying well!