<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-US"><generator uri="https://jekyllrb.com/" version="4.3.4">Jekyll</generator><link href="https://yadu-tv.github.io/feed.xml" rel="self" type="application/atom+xml" /><link href="https://yadu-tv.github.io/" rel="alternate" type="text/html" hreflang="en-US" /><updated>2025-07-23T01:39:18+05:30</updated><id>https://yadu-tv.github.io/feed.xml</id><title type="html">Yadu Krishnan</title><subtitle>Engineer at Synergy Marine Private Limited.</subtitle><author><name>Yadu Krishnan</name><email>yaduk.tv@gmail.com</email></author><entry><title type="html">Multi level classification model</title><link href="https://yadu-tv.github.io/multi-level-classification-model/" rel="alternate" type="text/html" title="Multi level classification model" /><published>2025-07-21T17:48:00+05:30</published><updated>2025-07-21T17:48:00+05:30</updated><id>https://yadu-tv.github.io/multi-level-classification-model</id><content type="html" xml:base="https://yadu-tv.github.io/multi-level-classification-model/"><![CDATA[<p>This article talks about how i came up with a multi level classification model which includes both supervised and unsupervised models.</p>

<h4 id="tldr">TL;DR</h4>

<p>When labels are messy or partially wrong, a single supervised model isn’t enough. I stack two explainable supervised classifiers (Logistic Regression, Naive Bayes) with two unsupervised/anomaly models (e.g., Isolation Forest, DBSCAN/KNN) and feed their outputs into a weighted voting classifier that produces both a final prediction and a confidence score. High‑confidence predictions can be auto‑accepted; low‑confidence or conflicting results are routed for manual review. I track model quality using Accuracy, F1, Cohen’s Kappa, and NMI (for clustering/anomaly alignment) to judge overall reliability and guide iteration.</p>

<h4 id="why-this-matters">Why this matters?</h4>

<p>Let’s just say you have some sort of data, assume that its cleaned and all the preprocessing is done. What if the data itself is not correct? How will your model learn in such case if its supervised learning models? When ground truth values are itself incorrect, it’s not straight forward and we need to use complex solutions.</p>

<h4 id="whats-the-proposed-solution">What’s the proposed solution?</h4>

<p>A complex model built on top of 5 other models. 2 supervised, 2 unsupervise and a voting classifier in the final layer. The outputs of supervised and unsupervised models are taken as input in voting classifier model which then makes the final prediction. This way the prediction made by majority of the model wins.</p>

<h4 id="what-models-to-use-in-supervised-and-unsupervised">What models to use in supervised and unsupervised?</h4>

<p>Supervised models can be any classification model such as Logistic Regression and Naive Bayes. Logistic Regression and Naive Bayes because both of them are highly explainable. Explainability is important in a scenario where the ground truth in itself might be wrong. Not to mention both of these models have really good performance as well.</p>

<p>Unsupervised models can be something like Isolation Forest, KNN and <a href="https://github.com/mhahsler/dbscan">DBScan</a>. You might wonder why DBScan? DBScan is excellent at clustering similar nodes. This allows us to find anomalies which cannot be placed in one of the classes/clusters. I have also tried other methods for unsupervised models such as <a href="https://github.com/spotify/annoy">Annoy</a> by spotify which is also excellent at clustering and generating recommendations.</p>

<h4 id="how-does-the-voting-classifier-work">How does the voting classifier work?</h4>

<p>The voting classifier also doesn’t work on its own. It also needs to be trained and provided with all sorts of input and output data. It is also supervised learning. The classifier is also trained to give a confidence score which says how confident it is with a prediction - which is a very useful metric to have.</p>

<h4 id="what-happens-when-models-disagree">What happens when models disagree?</h4>

<p>The voting classifier is also given the weightages for each of the models. More weightage will allow the model to predict accordingly. The confidence scores generated also allows us to filter at later stage to even consider the prediction or not as something with low confidence is not preferrable or has a high probability of being wrong. Predictions with low confidence are then used for manual reviewing and see how such cases of inputs are handled by the model step by step.</p>

<h4 id="evaluation-metrics">Evaluation metrics</h4>

<p>I used Accuracy, F1 score, <a href="https://en.wikipedia.org/wiki/Cohen%27s_kappa">Cohen’s Kappa</a> and <a href="https://en.wikipedia.org/wiki/Mutual_information">NMI</a> for unsupervised learning. These allowed me to get a good idea of how good the models work.</p>

<h4 id="conclusion">Conclusion</h4>

<p>Building a multi-level classification model by combining supervised and unsupervised approaches with a voting classifier can greatly enhance robustness, especially when data quality is uncertain. The inclusion of confidence scores and evaluation metrics like F1, Cohen’s Kappa, and NMI ensures that predictions are reliable and actionable. This architecture not only handles anomalies effectively but also offers transparency and flexibility for future improvements.</p>]]></content><author><name>Yadu Krishnan</name><email>yaduk.tv@gmail.com</email></author><summary type="html"><![CDATA[This article talks about how i came up with a multi level classification model which includes both supervised and unsupervised models.]]></summary></entry><entry><title type="html">Identifying plastic using multispectral images</title><link href="https://yadu-tv.github.io/identify-plastic-using-multispectral-images/" rel="alternate" type="text/html" title="Identifying plastic using multispectral images" /><published>2024-08-09T22:00:00+05:30</published><updated>2024-08-09T22:00:00+05:30</updated><id>https://yadu-tv.github.io/identify-plastic-using-multispectral-images</id><content type="html" xml:base="https://yadu-tv.github.io/identify-plastic-using-multispectral-images/"><![CDATA[<p>This article is on a research paper to identify plastic using reflactance values from multispectral images.</p>

<h4 id="what-is-multispectral-images">What is multispectral images?</h4>

<p>Multispectral images are images that contain data across the electromagnetic spectrum. Our human eye is capable of capturing light in the wavelegth of 380 to 700 nanometers. Multispectral cameras can capture images in range of 400 to 1000 nanometers.</p>

<h4 id="what-tech-did-we-use">What tech did we use?</h4>

<p>We made use of a <a href="https://www.dji.com/global/p4-multispectral">DJI P4 multispectral</a> drone which was equipped with a multispectral camera. This camera is capable of giving us 6 images as output (each of 2MP):</p>

<ol>
  <li>Regular RGB image</li>
  <li>Red image</li>
  <li>Green image</li>
  <li>Blue image</li>
  <li>Red edge image</li>
  <li>Near-Infrared image</li>
</ol>

<p>You can visit <a href="https://github.com/yadu-tv/yadu-tv.github.io/tree/main/_posts/identify-plastic-using-multispectral-images/assets/">here</a> to see all the images.</p>

<h4 id="how-is-this-different-from-regular-cnn-detection">How is this different from regular CNN detection?</h4>

<p>Regular CNN detection is done by learning the pixel values in the image after they are masked out. In this case, we read the value of each pixel and calculate the reflectance of each pixel. Different objects have different reflectance values based on how much light they reflect when a light of particular wavelength strikes it. We found out that <em>Blue</em> images best helped in highlighting the plastic from the background. The value is calculated by subtracting the co-efficient of soil from the pixel value.</p>

<p>Using of YOLO is also not possible as YOLO is not recommended for any images that is not RGB. We made our own Encoder-Decoder to generate images and compare with the ground truth.</p>

<h4 id="result">Result</h4>

<p>The results and detailed explanation of the research can be found <a href="https://github.com/Deceptrax123/Plastic-Detection-using-Reflectance-Images-of-Hyperspectral-Bands/blob/Main/deep_learning_report.pdf">here</a>. You can also find the complete project with code <a href="https://github.com/Deceptrax123/Plastic-Detection-using-Reflectance-Images-of-Hyperspectral-Bands">here</a>.</p>]]></content><author><name>Yadu Krishnan</name><email>yaduk.tv@gmail.com</email></author><summary type="html"><![CDATA[This article talks about how me and my team made use of multispectral drone cameras to effectively detect plastic.]]></summary></entry></feed>