<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Sukrut Rao</title>
    <link>https://sukrutrao.github.io/</link>
      <atom:link href="https://sukrutrao.github.io/index.xml" rel="self" type="application/rss+xml" />
    <description>Sukrut Rao</description>
    <generator>Source Themes Academic (https://sourcethemes.com/academic/)</generator><language>en-us</language><copyright>© 2026 Sukrut Rao</copyright><lastBuildDate>Wed, 07 Oct 2026 08:24:07 +0100</lastBuildDate>
    <image>
      <url>https://sukrutrao.github.io/img/sukrutrao.jpg</url>
      <title>Sukrut Rao</title>
      <link>https://sukrutrao.github.io/</link>
    </image>
    
    <item>
      <title>DisParQ: Self-Supervised Part Concepts for Interpretable Vision Foundation Models</title>
      <link>https://sukrutrao.github.io/publication/disparq-self-supervised-part-concepts-for-interpretable-vision-foundation-models/</link>
      <pubDate>Wed, 07 Oct 2026 08:24:07 +0100</pubDate>
      <guid>https://sukrutrao.github.io/publication/disparq-self-supervised-part-concepts-for-interpretable-vision-foundation-models/</guid>
      <description></description>
    </item>
    
    <item>
      <title>AnyBottle: A Recipe to Only Keep the Concepts You Really Need</title>
      <link>https://sukrutrao.github.io/publication/anybottle-a-recipe-to-only-keep-the-concepts-you-really-need/</link>
      <pubDate>Tue, 06 Oct 2026 08:24:07 +0100</pubDate>
      <guid>https://sukrutrao.github.io/publication/anybottle-a-recipe-to-only-keep-the-concepts-you-really-need/</guid>
      <description></description>
    </item>
    
    <item>
      <title>CFM: Language-aligned Concept Foundation Model for Vision</title>
      <link>https://sukrutrao.github.io/publication/cfm-language-aligned-concept-foundation-model-for-vision/</link>
      <pubDate>Mon, 01 Jun 2026 08:24:07 +0100</pubDate>
      <guid>https://sukrutrao.github.io/publication/cfm-language-aligned-concept-foundation-model-for-vision/</guid>
      <description></description>
    </item>
    
    <item>
      <title>Align Once to Explain: Feature Alignment for Scalable B-cosification of Foundational Vision Transformers</title>
      <link>https://sukrutrao.github.io/publication/align-once-to-explain-feature-alignment-for-scalable-b-cosification-of-foundational-vision-transformers/</link>
      <pubDate>Fri, 01 May 2026 08:24:07 +0100</pubDate>
      <guid>https://sukrutrao.github.io/publication/align-once-to-explain-feature-alignment-for-scalable-b-cosification-of-foundational-vision-transformers/</guid>
      <description></description>
    </item>
    
    <item>
      <title>TEVI: Text-Conditioned Editing of Visual Representations via Sparse Autoencoders for Improved Vision-Language Alignment</title>
      <link>https://sukrutrao.github.io/publication/tevi-text-conditioned-editing-of-visual-representations-via-sparse-autoencoders-for-improved-vision-language-alignment/</link>
      <pubDate>Thu, 01 Jan 2026 08:24:07 +0100</pubDate>
      <guid>https://sukrutrao.github.io/publication/tevi-text-conditioned-editing-of-visual-representations-via-sparse-autoencoders-for-improved-vision-language-alignment/</guid>
      <description></description>
    </item>
    
    <item>
      <title>FaCT: Faithful Concept Traces for Explaining Neural Network Decisions</title>
      <link>https://sukrutrao.github.io/publication/fact-faithful-concept-traces-for-explaining-neural-network-decisions/</link>
      <pubDate>Mon, 01 Dec 2025 08:24:07 +0100</pubDate>
      <guid>https://sukrutrao.github.io/publication/fact-faithful-concept-traces-for-explaining-neural-network-decisions/</guid>
      <description></description>
    </item>
    
    <item>
      <title>B-cos LM: Efficiently Transforming Pre-trained Language Models for Improved Explainability</title>
      <link>https://sukrutrao.github.io/publication/b-cos-lm-efficiently-transforming-pre-trained-language-models-for-improved-explainability/</link>
      <pubDate>Wed, 19 Feb 2025 08:24:07 +0100</pubDate>
      <guid>https://sukrutrao.github.io/publication/b-cos-lm-efficiently-transforming-pre-trained-language-models-for-improved-explainability/</guid>
      <description></description>
    </item>
    
    <item>
      <title>B-cosification: Transforming Deep Neural Networks to be Inherently Interpretable</title>
      <link>https://sukrutrao.github.io/publication/b-cosification-transforming-deep-neural-networks-to-be-inherently-interpretable/</link>
      <pubDate>Wed, 23 Oct 2024 08:24:07 +0100</pubDate>
      <guid>https://sukrutrao.github.io/publication/b-cosification-transforming-deep-neural-networks-to-be-inherently-interpretable/</guid>
      <description></description>
    </item>
    
    <item>
      <title>Discover-then-Name: Task-Agnostic Concept Bottlenecks via Automated Concept Discovery</title>
      <link>https://sukrutrao.github.io/publication/discover-then-name-task-agnostic-concept-bottlenecks-via-automated-concept-discovery/</link>
      <pubDate>Fri, 05 Jul 2024 08:24:07 +0100</pubDate>
      <guid>https://sukrutrao.github.io/publication/discover-then-name-task-agnostic-concept-bottlenecks-via-automated-concept-discovery/</guid>
      <description></description>
    </item>
    
    <item>
      <title>Good Teachers Explain: Explanation-Enhanced Knowledge Distillation</title>
      <link>https://sukrutrao.github.io/publication/good-teachers-explain-explanation-enhanced-knowledge-distillation/</link>
      <pubDate>Mon, 05 Feb 2024 08:24:07 +0100</pubDate>
      <guid>https://sukrutrao.github.io/publication/good-teachers-explain-explanation-enhanced-knowledge-distillation/</guid>
      <description></description>
    </item>
    
    <item>
      <title>Better Understanding Differences in Attribution Methods via Systematic Evaluations</title>
      <link>https://sukrutrao.github.io/publication/better-understanding-differences-in-attribution-methods-via-systematic-evaluations/</link>
      <pubDate>Mon, 01 Jan 2024 08:17:46 +0100</pubDate>
      <guid>https://sukrutrao.github.io/publication/better-understanding-differences-in-attribution-methods-via-systematic-evaluations/</guid>
      <description></description>
    </item>
    
    <item>
      <title>Studying How to Efficiently and Effectively Guide Models with Explanations</title>
      <link>https://sukrutrao.github.io/publication/studying-how-to-efficiently-and-effectively-guide-models-with-explanations/</link>
      <pubDate>Sun, 01 Oct 2023 08:24:07 +0100</pubDate>
      <guid>https://sukrutrao.github.io/publication/studying-how-to-efficiently-and-effectively-guide-models-with-explanations/</guid>
      <description></description>
    </item>
    
    <item>
      <title>Towards Better Understanding Attribution Methods</title>
      <link>https://sukrutrao.github.io/publication/towards-better-understanding-attribution-methods/</link>
      <pubDate>Wed, 01 Jun 2022 00:00:00 +0000</pubDate>
      <guid>https://sukrutrao.github.io/publication/towards-better-understanding-attribution-methods/</guid>
      <description></description>
    </item>
    
    <item>
      <title>Adversarial Training against Location-Optimized Adversarial Patches</title>
      <link>https://sukrutrao.github.io/publication/adversarial-training-against-location-optimized-adversarial-patches/</link>
      <pubDate>Fri, 28 Aug 2020 00:00:00 +0000</pubDate>
      <guid>https://sukrutrao.github.io/publication/adversarial-training-against-location-optimized-adversarial-patches/</guid>
      <description></description>
    </item>
    
    <item>
      <title>Adversarial Patch Training</title>
      <link>https://sukrutrao.github.io/project/adversarial-patch-training/</link>
      <pubDate>Sun, 23 Aug 2020 05:39:01 +0200</pubDate>
      <guid>https://sukrutrao.github.io/project/adversarial-patch-training/</guid>
      <description>&lt;p&gt;In this project, we explored the use of adversarial training to defend against adversarial patch attacks on image classification networks. Unlike imperceptible attacks, adversarial patches involve clearly visible contiguous perturbations covering a small area of an image that cause the network to misclassify the image. They are easier to use in practice since the patch can be printed out as a sticker and can be placed on an object or a the camera lens, causing subsequent automated analysis of the image to fail. An example where such an attack could be critical is the classification of stop signs by autonomous vehicles.&lt;/p&gt;
&lt;h3 id=&#34;approach&#34;&gt;Approach&lt;/h3&gt;
&lt;p&gt;Adversarial training improves a network&amp;rsquo;s robustness to adversarial examples by training it to correctly classify them. The training process of the network then involves alternating between training the network to classify against strong adversarial examples, and generating strong adversarial examples that can fool the current iteration of the network. Consequently, it is desirable to using a stronger attack to generate adversarial examples would result in a more robust network.&lt;/p&gt;
&lt;p&gt;To defend against adversarial patches, we make the following choices on the nature of the patches to get a strong attack, and then perform adversarial training against it:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Image-Specific:&lt;/strong&gt; A separate patch is generated for each image, which is more effective against that particular image as compared to a universal patch intended to work on any image of that class.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Untargeted:&lt;/strong&gt; The patch only needs to cause the network to misclassify the image, but does not require it to classify it as any specific alternative class. This is done by optimizing for patch values that maximize the network&amp;rsquo;s classification loss for each image.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Location-Optimized:&lt;/strong&gt; The patch values and location are jointly optimized. We use two location optimization strategies to approximately find the optimal location of the image to place the patch that results in the strongest attack.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;experimental-results&#34;&gt;Experimental Results&lt;/h3&gt;
&lt;p&gt;We evaluate on the CIFAR10 and GTSRB datasets on the ResNet-20 architecture. On a high level, the experimental evaluation shows that:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Location optimization makes the attack stronger.&lt;/li&gt;
&lt;li&gt;Adversarial training against adversarial patches improves network robustness. Adversarial training against location-optimized adversarial patches improves it further.&lt;/li&gt;
&lt;li&gt;The accuracy of the network against non-adversarial examples does not decrease.&lt;/li&gt;
&lt;li&gt;Visualization of successful attack suggests that adversarial training reduces the area on an image where an adversarial patch attack can succeed.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Further details can be found in the &lt;a href=&#34;https://sukrutrao.github.io/publication/adversarial-training-against-location-optimized-adversarial-patches&#34;&gt;paper&lt;/a&gt;. A visualization of the approach can be found in the &lt;a href=&#34;https://sukrutrao.github.io/publication/adversarial-training-against-location-optimized-adversarial-patches/slides.pdf&#34;&gt;slides&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Open-WBO-Inc: Approximation Strategies for Incomplete Weighted MaxSAT</title>
      <link>https://sukrutrao.github.io/publication/open-wbo-inc-approximation-strategies-for-incomplete-weighted-maxsat/</link>
      <pubDate>Sun, 01 Sep 2019 00:00:00 +0000</pubDate>
      <guid>https://sukrutrao.github.io/publication/open-wbo-inc-approximation-strategies-for-incomplete-weighted-maxsat/</guid>
      <description></description>
    </item>
    
    <item>
      <title>Open-WBO-Inc in MaxSAT Evaluation 2019</title>
      <link>https://sukrutrao.github.io/publication/open-wbo-inc-in-maxsat-evaluation-2019/</link>
      <pubDate>Thu, 01 Aug 2019 00:00:00 +0000</pubDate>
      <guid>https://sukrutrao.github.io/publication/open-wbo-inc-in-maxsat-evaluation-2019/</guid>
      <description></description>
    </item>
    
    <item>
      <title>Fast Dawid-Skene</title>
      <link>https://sukrutrao.github.io/project/fast-dawid-skene/</link>
      <pubDate>Thu, 01 Nov 2018 00:00:00 +0000</pubDate>
      <guid>https://sukrutrao.github.io/project/fast-dawid-skene/</guid>
      <description>&lt;p&gt;Fast Dawid-Skene (FDS) is an algorithm for crowdsourced vote aggregation. Given a dataset with labels for each data point annotated by a group of people (the crowd), the algorithm aggregates the responses to predict the true labels. Fast Dawid-Skene is based on the well-known Dawid-Skene (DS) algorithm, and improves upon it by providing aggregated labels in much fewer iterations with comparable accuracy. This allows it to be usable for real-time, online applications. While the algorithm has been shown to be useful for sentiment classification, it can also be applied to any other domain.&lt;/p&gt;
&lt;h3 id=&#34;motivation&#34;&gt;Motivation&lt;/h3&gt;
&lt;p&gt;The motivation for the problem stems from the need for large, labeled, training datasets for effective supervised learning, which can often be difficult to obtain. Moreover, in today’s world, problems such as sentiment classification need quick, real-time decisions, such as identifying hate speech on social media platforms. Such problems could be solved by obtaining labels (out of a set of labels) from viewers of such platforms, and aggregating them to make decisions.&lt;/p&gt;
&lt;h3 id=&#34;existing-approaches&#34;&gt;Existing Approaches&lt;/h3&gt;
&lt;p&gt;One of the simplest vote aggregation algorithms is the Majority Voting algorithm. In this algorithm, the aggregated label for each data point is simply the label that appears most among the crowd annotations for that data point. However, this fails to take into account potentially useful information: the reliabilities of the annotators vary. Some of the annotators might be domain experts, with very high accuracy, while some might have answered randomly. Others might not be sufficiently trained to accurately provide a label, or might be spammers. The majority voting algorithm does not take these differences into account. It would be useful to identify the experts and give their labels more weight during aggregation.&lt;/p&gt;
&lt;p&gt;Many other aggregation algorithms have been proposed, that overcome the shortcomings of majority voting. One of the well-known approaches, and among the state-of-the-art, is the Dawid-Skene algorithm. It is an EM-based algorithm, which in the E-step estimates the proposed true labels given parameters, and in the M-step estimates parameters maximizing the likelihood. This results in expert annotators getting more weight. This algorithm has been effective, and has become the baseline on which newer approaches are based. However, we found that the convergence of Dawid-Skene would often be slow, which would prevent it from being usable for real-time applications. To overcome this, we proposed an algorithm based on the Dawid-Skene approach, called Fast Dawid-Skene (FDS), that could provide comparable accuracy to Dawid-Skene in much fewer iterations.&lt;/p&gt;
&lt;h3 id=&#34;fast-dawid-skene-approach&#34;&gt;Fast Dawid-Skene: Approach&lt;/h3&gt;
&lt;p&gt;The key idea of Fast Dawid-Skene is to binarize the proposed labels at each EM iteration. In Dawid-Skene, the proposed answer sheet at each iteration is a probability distribution. Our approach fixes the labels to be 0 or 1 at each step. The idea can be perceived as a &amp;lsquo;hard&amp;rsquo; version of Dawid-Skene. We then showed theoretical convergence guarantees for our approach. We also proposed a few variants of our approach:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Hybrid algorithm:&lt;/strong&gt;
It was observed that the while Fast Dawid-Skene would quickly converge, the likelihood values attained by Dawid-Skene would be better, due to the use of softer marginals. To achieve the best of both worlds, the Hybrid variant starts with the Dawid-Skene algorithm, and switches to Fast-Dawid Skene after the sum of the absolute values of the differences of class marginals falls below a certain threshold. While this helped achieve better likelihood values, it did not necessarily perform better than FDS.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Online Vote Aggregation:&lt;/strong&gt;
It is often the case that data is available in a stream, where newer data arrives with time. In such a situation, it would be expensive, wasteful, and perhaps prohibitive to repeat aggregation on the entire dataset from scratch. This variant of Fast Dawid-Skene allows using the information from past iterations to perform aggregation of new data points as they arrive.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Multiple-Answer Correct setting:&lt;/strong&gt;
One of the assumptions made was that for any data point, only one label was the true label. This variant relaxes the assumption by allowing multiple true labels. This is done by interpreting each question-label pair as a binary classification problem, and then applying the Fast-Dawid Skene algorithm.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;An example run of the Fast Dawid-Skene algorithm can be found &lt;a href=&#34;https://sukrutrao.github.io/publication/fast-dawid-skene-a-fast-vote-aggregation-scheme-for-sentiment-classification/slides.pdf&#34;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;experimental-evaluation&#34;&gt;Experimental Evaluation&lt;/h3&gt;
&lt;p&gt;The algorithms were evaluated over seven datasets, most of them corresponding to sentiment analysis. They were compared against Dawid-Skene, and two other existing approaches: GLAD and IWMV. It was found that on most of the datasets, the Fast-Dawid Skene and the Hybrid algorithms had similar accuracies to Dawid-Skene. However, FDA converged up to 8x faster than DS on some datasets, and up to 6x faster than IWMV, which is reported to be a fast algorithm. As expected, the Hybrid algorithm converged to better likelihoods, but in more time, though it was still faster than DS and mostly faster than IWMV.&lt;/p&gt;
&lt;p&gt;For online vote aggregation, FDS and Hybrid again converged faster than DS with similar accuracy. In the multiple-answer setting, FDS performed 7x better than DS, and outperformed previously reported state-of-the-art results on that setting.&lt;/p&gt;
&lt;p&gt;Further details about the algorithm and the experimental results can be found in the &lt;a href=&#34;https://sentic.net/wisdom2018sinha.pdf&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;paper&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Open-WBO-Inc Incomplete MaxSAT Solver</title>
      <link>https://sukrutrao.github.io/project/open-wbo-inc/</link>
      <pubDate>Thu, 01 Nov 2018 00:00:00 +0000</pubDate>
      <guid>https://sukrutrao.github.io/project/open-wbo-inc/</guid>
      <description>&lt;p&gt;Open-WBO-Inc is a MaxSAT solver tailored to the incomplete MaxSAT problem. In incomplete MaxSAT, the goal is to find an approximate solution to a given MaxSAT formula in very little time. Open-WBO-Inc uses various approximation techniques, such as those that reduce encoding sizes, to find a solution close to the optimal in much lesser time than would otherwise be needed. Open-WBO-Inc is based on Open-WBO, a state-of-the-art MaxSAT solver, and has been implemented in C++.&lt;/p&gt;
&lt;h3 id=&#34;motivation&#34;&gt;Motivation&lt;/h3&gt;
&lt;p&gt;In the weighted MaxSAT problem, the input consists of a set of clauses and positive integral weights associated with each clause. The goal is to obtain an assignment of variables that minimizes the cost (sum of unsatisfied weights) of the formula. The weighted MaxSAT problem typically involves encoding a pseudo-boolean (PB) constraint in the CNF form to constrain the number of clauses that may be unsatisfied in a given iteration of the solution search process. The number of clauses added for this encoding could often be a large fraction of the resulting formula size. As a result, having a large encoding increases the time needed to find the solution. One of the best performing encodings, GTE, can generate an exponential number of clauses in the size of the PB constraint in the worst case, which is when the number of unique weights are very high. However, for many applications, it might be sufficient to obtain an approximate solution while greatly speeding up the search.&lt;/p&gt;
&lt;h3 id=&#34;approach&#34;&gt;Approach&lt;/h3&gt;
&lt;p&gt;We proposed two approximation algorithms:&lt;/p&gt;
&lt;h4 id=&#34;apx-weight-open-wbo-inc-cluster&#34;&gt;apx-weight (Open-WBO-Inc-Cluster)&lt;/h4&gt;
&lt;p&gt;This algorithm aims to reduce the size of the encoding, thus reducing the search time. A key observation is that the size of the GTE encoding increases based on the number of distinct weights in the formula. If this could be reduced, the encoding size would also reduce. We achieve this by clustering the weights to a small number of clusters using divisive hierarchical clustering.  In each cluster, all the weights are replaced by a representative weight, such as their mean. As a result, the number of unique weights now reduces to the number of clusters. Clustering $n$ weights to $k$ clusters can be done in $\mathcal O(nk)$ time, which was observed to be negligible compared to the total time taken by the solver.&lt;/p&gt;
&lt;h4 id=&#34;apx-subprob-open-wbo-inc-bmo&#34;&gt;apx-subprob (Open-WBO-Inc-BMO)&lt;/h4&gt;
&lt;p&gt;This extends the ideas in apx-weight. Once the clusters are obtained, the clauses in the formula are arranged in the descending order of their weights. Then, iterating from the largest representative weight to the smallest, the formula in each cluster is solved. Once an optimum is obtained for any cluster, it is fixed, and no further relaxation is made when operating over subsequent clusters. This breaks the problem into multiple subproblems, effectively enforcing the boolean multilevel optimization (BMO) condition. This can often be an effective strategy because many real-world MaxSAT formulae might have weights that satisfy the BMO assumption.&lt;/p&gt;
&lt;h3 id=&#34;results&#34;&gt;Results&lt;/h3&gt;
&lt;p&gt;Both algorithms outperformed most of the existing state-of-the-art incomplete MaxSAT solvers. In particular, apx-subprob outperformed maxroster, which was the best performing solver in the MaxSAT Evaluation 2017.&lt;/p&gt;
&lt;p&gt;In the MaxSAT Evaluation 2018, apx-subprob in Open-WBO-Inc secured the first position in the 60 seconds category and the second position in the 300 seconds category in the weighted incomplete MaxSAT track. apx-weight secured the fourth position in both these categories.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Timetabler</title>
      <link>https://sukrutrao.github.io/project/timetabler/</link>
      <pubDate>Thu, 01 Nov 2018 00:00:00 +0000</pubDate>
      <guid>https://sukrutrao.github.io/project/timetabler/</guid>
      <description>&lt;p&gt;A timetabling program for educational institutions. Given a set of courses along with their details (class strength, instructors, relevant programs, and so on) as input, and a list of resources available (instructors, classrooms, time slots, etc.), the program generates a feasible timetable, if it exists. Custom constraints can also be given with the input. Each constraint can also be specified weights to signify their importance. The program also has the capability to list soft constraints that could not be satisfied, and to suggest changes in the parameters to make the problem satisfiable. Moreover, it can also complete an existing partial timetable.&lt;/p&gt;
&lt;p&gt;Timetabler continues to be developed, and is currently being used for timetabling at IIT Hyderabad.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Visual Relationship Detection</title>
      <link>https://sukrutrao.github.io/project/visual-relationship-detection/</link>
      <pubDate>Thu, 01 Nov 2018 00:00:00 +0000</pubDate>
      <guid>https://sukrutrao.github.io/project/visual-relationship-detection/</guid>
      <description>&lt;p&gt;The Visual Relationship Detection (VRD) task involves detecting relationships between pairs of objects in an image. An example of such relationships might be &amp;ldquo;Man kicks Ball&amp;rdquo;, for which the VRD task would involve detecting the bounding boxes and object class labels for both the man and the ball, and the relationship class &amp;ldquo;kicks&amp;rdquo; for the pair, in the image. The goal of this project was to improve on existing Visual Relationship Detection techniques, and test our methods against other participants in the Google AI Open Images Challenge 2018 in the Visual Relationship Detection track. The Open Images V4 dataset was used by the challenge. Our team finished sixth out of 232 teams, and a poster on our method was presented at the Open Images Challenge Workshop at ECCV 2018.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Detecting Diabetic Retinopathy from Fundus Images</title>
      <link>https://sukrutrao.github.io/project/detecting-dr-fundus-images/</link>
      <pubDate>Sat, 01 Sep 2018 00:00:00 +0000</pubDate>
      <guid>https://sukrutrao.github.io/project/detecting-dr-fundus-images/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://en.wikipedia.org/wiki/Diabetic_retinopathy&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Diabetic Retinopathy (DR)&lt;/a&gt; is a condition to the eye caused by diabetes, and can cause blindness. If detected early, effective countermeasures can be taken. For this purpose, Bosch has developed a hand-held device to automatically detect diabetic retinopathy from images of the fundus of the eye. This project’s goal was to improve the accuracy of the detection process.&lt;/p&gt;
&lt;p&gt;My work consisted of three components:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Quality Assessment:&lt;/strong&gt; Designing and implementing a quality assessment network to judge the suitability of an image for diagnosis.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DR-Healthy Binary Classification:&lt;/strong&gt; Improving the accuracy of the existing network that performed binary classification based on the presence or absence of the disease.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Five-stage Classification:&lt;/strong&gt; Designing and implementing a pipeline that would enable an image to be classified among one of the five grades of diabetic retinopathy.&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    
    <item>
      <title>Approximation Strategies for Incomplete MaxSAT</title>
      <link>https://sukrutrao.github.io/publication/approximation-strategies-for-incomplete-maxsat/</link>
      <pubDate>Wed, 29 Aug 2018 00:00:00 +0000</pubDate>
      <guid>https://sukrutrao.github.io/publication/approximation-strategies-for-incomplete-maxsat/</guid>
      <description></description>
    </item>
    
    <item>
      <title>Fast Dawid-Skene: A Fast Vote Aggregation Scheme for Sentiment Classification</title>
      <link>https://sukrutrao.github.io/publication/fast-dawid-skene-a-fast-vote-aggregation-scheme-for-sentiment-classification/</link>
      <pubDate>Mon, 20 Aug 2018 00:00:00 +0000</pubDate>
      <guid>https://sukrutrao.github.io/publication/fast-dawid-skene-a-fast-vote-aggregation-scheme-for-sentiment-classification/</guid>
      <description></description>
    </item>
    
    <item>
      <title>IntervalAI</title>
      <link>https://sukrutrao.github.io/project/intervalai/</link>
      <pubDate>Fri, 10 Aug 2018 00:00:00 +0000</pubDate>
      <guid>https://sukrutrao.github.io/project/intervalai/</guid>
      <description>&lt;p&gt;An abstract interpreter for an integer interval domain supporting basic operations. IntervalAI can verify a C program for correctness against a given specification, provided using assertions. During verification, it treats the domain of each variable as an interval, and performs arithmetic operations, joins, and meets on intervals. It works for a restricted set of C programs consisting only of integer variables.&lt;/p&gt;
&lt;p&gt;IntervalAI uses CBMC to convert the C program to a Goto program. It then verifies the Goto program. IntervalAI has been implemented in C++.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Second Order Momentum</title>
      <link>https://sukrutrao.github.io/project/second-order-momentum/</link>
      <pubDate>Fri, 10 Aug 2018 00:00:00 +0000</pubDate>
      <guid>https://sukrutrao.github.io/project/second-order-momentum/</guid>
      <description>&lt;p&gt;In this project, we explored the effects of applying momentum and Nesterov&amp;rsquo;s accelerated gradient, in their usual formulations, to second order methods. We applied these acceleration techniques Newton&amp;rsquo;s method and quasi-Newton methods such as BFGS and cubic regularization. We then compared the empirical rate of convergence of first and second order methods, with and without momentum, on a set of benchmark optimization problems.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>COOL Compiler</title>
      <link>https://sukrutrao.github.io/project/cool-compiler/</link>
      <pubDate>Wed, 01 Aug 2018 00:00:00 +0000</pubDate>
      <guid>https://sukrutrao.github.io/project/cool-compiler/</guid>
      <description>&lt;p&gt;A compiler for the COOL programming language. It accepts a COOL program, and outputs equivalent LLVM IR. This project implements a parser, semantic analyzer and a code generator. An implementation of a lexical analyzer for COOL can be found &lt;a href=&#34;https://github.com/sukrutrao/Lexical-Analyser-Cool&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;here&lt;/a&gt;. The compiler has been implemented in Java.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Parser:&lt;/strong&gt; Converts tokens provided by the lexical analyzer into an abstract syntax tree (AST), in accordance to the grammar rules of COOL. Flags errors if any grammar rule is violated.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Semantic Analyzer:&lt;/strong&gt; Type checks the parsed program according to the type rules of COOL, and annotates each AST node with a type. Flags errors if any semantic or type rules are violated, for example, the case where the input program calls non-existent methods or performs an invalid type conversion.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Code Generator:&lt;/strong&gt; Converts the annotated AST into LLVM intermediate representation (IR). At some points, code might be inserted to handle run-time errors. The LLVM IR can then be converted to machine code by clang, the LLVM frontend, and executed.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The compiler implements a restricted version of COOL, i.e., some of the constructs in the language specification are not covered.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>DeepAgg</title>
      <link>https://sukrutrao.github.io/project/deepagg/</link>
      <pubDate>Wed, 01 Aug 2018 00:00:00 +0000</pubDate>
      <guid>https://sukrutrao.github.io/project/deepagg/</guid>
      <description>&lt;p&gt;An implementation of the crowdsourced aggregation network proposed in the paper&lt;/p&gt;
&lt;p&gt;&amp;ldquo;Alex Gaunt, Diana Borsa, and Yoram Bachrach. 2016. Training deep neural nets to aggregate crowdsourced responses. In Proceedings of the Thirty-Second Conference on Uncertainty in Artificial Intelligence (UAI&#39;16), Alexander Ihler and Dominik Janzing (Eds.). AUAI Press, Arlington, Virginia, United States, 242-251.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;The implementation also contains an extension to the proposed model, by adding a third dimension to account for the multiple-correct answer scenario.&lt;/p&gt;
&lt;p&gt;This was used for experimenting in the initial stages for the &lt;a href=&#34;../fast-dawid-skene&#34;&gt;Fast Dawid-Skene&lt;/a&gt; project.&lt;/p&gt;
&lt;p&gt;This implementation is written in Python.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Extreme Classification</title>
      <link>https://sukrutrao.github.io/project/extreme-classification/</link>
      <pubDate>Wed, 01 Aug 2018 00:00:00 +0000</pubDate>
      <guid>https://sukrutrao.github.io/project/extreme-classification/</guid>
      <description>&lt;p&gt;This project explored methods to effectively perform multi-label classification from a very large set of labels.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Open-WBO-Inc in MaxSAT Evaluation 2018</title>
      <link>https://sukrutrao.github.io/publication/open-wbo-inc-in-maxsat-evaluation-2018/</link>
      <pubDate>Mon, 09 Jul 2018 00:00:00 +0000</pubDate>
      <guid>https://sukrutrao.github.io/publication/open-wbo-inc-in-maxsat-evaluation-2018/</guid>
      <description></description>
    </item>
    
    <item>
      <title>Crowdsourced Data Simulator</title>
      <link>https://sukrutrao.github.io/project/crowdsourced-data-simulator/</link>
      <pubDate>Sun, 01 Jul 2018 00:00:00 +0000</pubDate>
      <guid>https://sukrutrao.github.io/project/crowdsourced-data-simulator/</guid>
      <description>&lt;p&gt;A program to simulate a synthetic dataset of annotations from a crowd to a set of multiple-choice questions. It accepts a configuration of indicators on the crowd, such as fraction of people with high accuracy, and the fraction of malicious labelers, and generates responses. Both single answer and multiple answer questions are supported. It can be used for experimenting with crowdsourced aggregation algorithms, such as the Dawid-Skene algorithm.&lt;/p&gt;
&lt;p&gt;The program accepts classes of people, each having two parameters - (1) their percentage in the population, and (2) their range of probabilities of getting the answer to any question correctly. For example, one can specify that 20% of the population gets the answer correctly with probability between 0.6 and 0.7. The input also includes the number of questions to simulate, the number of options per question, the number of annotators to simulate, and whether the setting is single-answer or multiple-answer. It then provides simulated crowd labels and ground truths.&lt;/p&gt;
&lt;p&gt;Instructions on setup, usage, and examples can be found on &lt;a href=&#34;https://github.com/sukrutrao/crowdsourced-data-simulator&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;GitHub&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The program does not account for the difficulty of questions, and the simulated labels might be sometimes unnatural because of the predictable nature of the annotators. However, it could still be very useful to quickly generate synthetic data for testing aggregation algorithms.&lt;/p&gt;
&lt;p&gt;This program was used for experimenting in the initial stages for the &lt;a href=&#34;../fast-dawid-skene&#34;&gt;Fast Dawid-Skene&lt;/a&gt; project.&lt;/p&gt;
&lt;p&gt;This program has been implemented in Python.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Load Balancer</title>
      <link>https://sukrutrao.github.io/project/load-balancer/</link>
      <pubDate>Sun, 01 Jul 2018 00:00:00 +0000</pubDate>
      <guid>https://sukrutrao.github.io/project/load-balancer/</guid>
      <description>&lt;p&gt;This project implements a plug-and-play load balancer, in GoLang. The setup consists of a master node, that receives requests, and a set of slave nodes, that can execute the requests. The master node allocated tasks to slave nodes depending on the expected load of the task and the current load of each slave, using a load balancing algorithm. A few simple load balancing algorithms have been implemented in this project.&lt;/p&gt;
&lt;p&gt;The entire setup is plug-and-play, where slaves can enter and leave at any time. No intervention is needed to add a new slave to the pool of slaves, or to handle tasks left incomplete by disconnected slaves. The load balancer is tested using each algorithm on a few simple tasks. The effectiveness of load balancing is monitored using &lt;a href=&#34;https://prometheus.io/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Prometheus&lt;/a&gt; and visualized using &lt;a href=&#34;https://grafana.com/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Grafana&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>CDCL SAT Solver</title>
      <link>https://sukrutrao.github.io/project/sat-solver-cdcl/</link>
      <pubDate>Tue, 01 May 2018 00:00:00 +0000</pubDate>
      <guid>https://sukrutrao.github.io/project/sat-solver-cdcl/</guid>
      <description>&lt;p&gt;A SAT solver that implements the &lt;a href=&#34;https://en.wikipedia.org/wiki/Conflict-driven_clause_learning&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Conflict-Driven Clause Learning (CDCL) algorithm&lt;/a&gt;. The solver is implemented in C++.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>DPLL SAT Solver</title>
      <link>https://sukrutrao.github.io/project/sat-solver-dpll/</link>
      <pubDate>Tue, 01 May 2018 00:00:00 +0000</pubDate>
      <guid>https://sukrutrao.github.io/project/sat-solver-dpll/</guid>
      <description>&lt;p&gt;A SAT solver that implements the &lt;a href=&#34;https://en.wikipedia.org/wiki/DPLL_algorithm&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Davis-Putnam-Logemann-Loveland (DPLL) algorithm&lt;/a&gt;. The solver is implemented in C++.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>MaxSAT Solver</title>
      <link>https://sukrutrao.github.io/project/maxsat-solver/</link>
      <pubDate>Tue, 01 May 2018 00:00:00 +0000</pubDate>
      <guid>https://sukrutrao.github.io/project/maxsat-solver/</guid>
      <description>&lt;p&gt;This project implements a partial unweighted MaxSAT solver. It uses the &lt;a href=&#34;http://minisat.se/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Minisat SAT solver&lt;/a&gt; as its backbone. It uses sequential encoding to encode pseudo-boolean constraints in the conjunctive normal form (CNF). The LUS search algorithm is used to find the optimal solution.&lt;/p&gt;
&lt;p&gt;This solver is implemented in C++.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Artillery Game</title>
      <link>https://sukrutrao.github.io/project/artillery-game/</link>
      <pubDate>Sun, 01 Apr 2018 00:00:00 +0000</pubDate>
      <guid>https://sukrutrao.github.io/project/artillery-game/</guid>
      <description>&lt;p&gt;A turn-based, three-player game written in Haskell. Each player controls a tank, with a set of weapons, and the objective is to destroy the tanks of the other players.&lt;/p&gt;
&lt;p&gt;The project implements all game physics from scratch, by implementing the equations for gravity and kinematics. Tracking and movement of projectiles (weapons), tanks, and their turrets is handled by these equations, along with detection of collisions and their magnitude of impact. The GLUT library has been used for graphics. The game map internally consists of a highly granular grid of points, with all operations happening at various coordinates on the grid.&lt;/p&gt;
&lt;p&gt;The game, along with the code and rules to play, can be found on &lt;a href=&#34;https://github.com/sukrutrao/Artillery-Game&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;GitHub&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>MIPS Simulator</title>
      <link>https://sukrutrao.github.io/project/mips-simulator/</link>
      <pubDate>Sun, 01 Apr 2018 00:00:00 +0000</pubDate>
      <guid>https://sukrutrao.github.io/project/mips-simulator/</guid>
      <description>&lt;p&gt;A program to simulate execution of programs written in the MIPS assembly language. It can simulate a subset of instructions in the MIPS instruction set. There are two modes available:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Step-by-Step Mode: To execute one instruction at a time, and to display the state of the registers and memory after each step.&lt;/li&gt;
&lt;li&gt;Execution Mode: To execute the entire program.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;An additional instruction, &lt;code&gt;halt&lt;/code&gt;, is defined to specify the end of the program.&lt;/p&gt;
&lt;p&gt;The simulator has been implemented in C++.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Platform Game</title>
      <link>https://sukrutrao.github.io/project/platform-game/</link>
      <pubDate>Sun, 01 Apr 2018 00:00:00 +0000</pubDate>
      <guid>https://sukrutrao.github.io/project/platform-game/</guid>
      <description>&lt;p&gt;A multiplayer platformer that can be played on a local network. Each player controls a character, with the goal of reaching the door at the other end of the map while collecting as many gems as possible and avoiding zombies and fire. Players are ranked according to their score, determined by the number of gems collected, and the time taken to reach the door.&lt;/p&gt;
&lt;p&gt;The game is written in C++ and uses Qt libraries. It creates multiple threads to efficiently manage tasks and respond to events. A single server is created to maintain game state, and each player runs a client that connects to the server.&lt;/p&gt;
</description>
    </item>
    
  </channel>
</rss>
