Inspiration

Breast cancer is one of the most common cancers worldwide, and outcomes improve a lot when it is found early. Ultrasound is a widely used, affordable imaging method, but in many low-resource areas there are very few radiologists to read the scans. We wanted to build a free tool that helps flag suspicious ultrasound images early, so that the cases that need attention are seen by a doctor sooner.

What it does

SonoTri Detect is a web app where a user uploads a breast ultrasound image and gets a result in seconds. The model classifies the image as normal, benign-looking or malignant-looking, and shows its confidence for every class. If the model is unsure, the app shows a low-confidence warning. The app is clearly framed as a screening-support tool, not a diagnosis: the final decision always belongs to a doctor.

How we built it Data: the public BUSI breast ultrasound dataset (780 images, 3 classes), with segmentation masks removed and a stratified 70/15/15 train/validation/test split. Model: EfficientNet-B0 pretrained on ImageNet, with a custom classification head. Training: a two-phase approach. Phase 1 was transfer learning with the backbone frozen and only the new head trained. Phase 2 was fine-tuning of the last backbone blocks with a small learning rate and a cosine schedule. Handling imbalance and overfitting: class-weighted loss, label smoothing, light augmentation, and selecting the best checkpoint by validation loss. Evaluation: the test set was used only once at the end. On 117 unseen images we got about 83% accuracy, AUC 0.94 and 87% malignant recall. App: a Streamlit interface with a result card, class probabilities and a medical disclaimer. Everything runs on CPU, so it needs no special hardware. Challenges we ran into

Our first training run reached only about 50% test accuracy. Debugging it taught us a lot: we were resizing images to 32×32 (destroying the ultrasound texture), using different normalization for training and testing, and skipping the head-training phase before fine-tuning. Fixing these took us to about 83%.

Other challenges were the small and imbalanced dataset, a very small test set (only 31 malignant images), and the fact that BUSI has no patient IDs, so we cannot rule out images of the same patient appearing in both train and test sets. We also had to decide on honest framing, since a medical AI tool should never claim to diagnose.

Accomplishments that we’re proud of Raising test accuracy from 50% to about 83% through systematic debugging Reaching 87% malignant recall, the metric that matters most for a screening tool Building a complete pipeline, from data to a working web app, within the hackathon timeline Being open about the limitations of our results instead of overstating them What we learned How transfer learning and fine-tuning work, and why the order and learning rates matter Why accuracy alone is misleading on imbalanced medical data, and why recall, AUC and the confusion matrix matter How easily data leakage and train/test mismatches can produce misleading results That responsible framing and clear limitations are as important as model performance in healthcare AI What’s next for SonoTri Detect Grad-CAM heatmaps in the app to show which region influenced each prediction An adjustable decision threshold to trade off false alarms against missed malignant cases An ensemble of several models for more stable predictions Validation on additional datasets and, in the future, with clinicians, using patient-level splits Deployment as a simple tool for clinics and community health workers in low-resource settings

Built With

Share this project:

Updates

Submission history