On 1,546 held-out test images it reached 58.9% top-1 and 83.3% top-3 accuracy, against a 4.5% random baseline. The student received the dissertation report, seminar slides, the web app and the training code.
What is this project, at a glance?
A skin disease detection project using a CNN (EfficientNet-B0), trained in PyTorch and shipped as a static website, so the model runs on the visitor’s own device. The research angle is deployment: a useful model that is small, fast and private.
| Item | Details |
|---|---|
| Level | M.E. (Dissertation Stage-I) |
| Domain | Medical image analysis, web deployment |
| Problem type | 22-class image classification of everyday skin photos, with uneven class sizes |
| Core methods | Two-phase transfer learning on EfficientNet-B0, weighted random sampling, augmentation, top-1 and top-3 evaluation, ONNX export and INT8 quantization |
| Stack | Python, PyTorch, torchvision, ONNX, ONNX Runtime Web (WebAssembly), HTML/CSS/JavaScript, optional Flask |
| Deliverables | Dissertation Stage-I report, extended results chapters, seminar slide deck, static web app, training and export code |
What problem does the project solve?
Skin conditions are common, and seeing a dermatologist can be slow or expensive. Because skin problems are visible, a photo-based classifier can help as a first screening step.
Most published tools, though, send the photo to a remote GPU server, which raises privacy questions and costs money to host. Many also use small dermoscopy benchmarks rather than the everyday photos people take. The goal was a many-class classifier for ordinary photos that runs entirely on the user’s device and offers ranked possibilities, not a diagnosis.
How does the training and deployment pipeline work?
Two halves: train a compact model well, then make it light enough to run in a browser tab.
- Preprocessing: resize and normalise; random crops, flips, small rotations and colour jitter during training only.
- Model: ImageNet-pre-trained EfficientNet-B0, chosen for its small size, with a new dropout-regularised head for the 22 classes.
- Two-phase training: first only the head learns on a frozen backbone; then the top backbone blocks are fine-tuned at a lower learning rate (AdamW, cosine schedule).
- Imbalance: a weighted random sampler keeps mini-batches roughly class-balanced.
- Deployment: export to ONNX, confirm it matches the PyTorch model, make a smaller INT8-quantized copy for lighter downloads, and run it with ONNX Runtime Web on WebAssembly, using the same preprocessing in JavaScript.
How does skin disease classification in the browser work for the user?
DermaAI is a single-page app. The model downloads once, the browser caches it, and every prediction happens on the device.
- Home screen: an upload panel, a “model ready” status and a clear “not a diagnosis” notice, with the 22 recognised conditions listed below.
- Prediction panel: the top condition with confidence and a severity tag, four ranked alternatives and the measured inference time.
- Hosting: only static files, so any free host such as Vercel, Netlify or GitHub Pages can serve it. An optional Flask version runs the same model locally.
What were the results?
On 1,546 held-out test images the model reached 58.9% top-1 and 83.3% top-3 accuracy, against 4.5% for random guessing. So the correct condition is among the top three suggestions in more than four cases out of five.
The training curves show why two phases matter: accuracy jumps once the top backbone blocks are unfrozen, and validation loss keeps falling. The dissertation is frank about the limits: look-alike conditions such as eczema, psoriasis and tinea cause many errors, photo quality varies, and the compact backbone trades some accuracy for a small download.
Shown with student, guide and institute details removed. No patient photos are shown.
What did the student receive?
| Deliverable | Format | What it covers |
|---|---|---|
| Dissertation Stage-I report | PDF + DOCX | Literature review, research gap, objectives, proposed method |
| Extended chapters | PDF + DOCX | Implementation, in-browser inference, results, limitations, future scope |
| Seminar slide deck | PDF + PPTX | Problem, gap, method, results and conclusion |
| Web app | Static HTML/CSS/JS + ONNX model | Upload, in-browser prediction, top-5 results, list of conditions |
| Code | Python (PyTorch) | Two-phase training, ONNX export, optional Flask server |
The brief was the M.E. dissertation and seminar, so there is no paper here. For a project that shipped with an IEEE-format paper, see skin lesion classification using a Vision Transformer; for write-up help alone, see our dissertation writing services.
How is it different from the Vision Transformer skin project?
- Images: everyday photos of 22 conditions here, dermoscopic images of 7 lesion types there.
- Focus: private, server-free deployment here; a transformer versus CNN research comparison there.
- Model: one compact EfficientNet-B0 here; four larger models compared there.
- Write-up: an M.E. dissertation and seminar here; an M.Tech thesis and IEEE-format paper there.
How could you adapt this project?
The browser-first design leaves room for a clear, testable extension. Directions to discuss with your guide, alongside the deployment ideas in our list of machine learning projects for final year and M.Tech:
These are suggestions for your own topic. The delivered work is the project above.
- Topic ideaGrad-CAM in the browserShow a heatmap of the region behind each prediction, computed on the device.
- Topic ideaBigger model on WebGPUTry a larger backbone with WebGPU and measure the accuracy and speed trade-off.
- Topic ideaOffline phone app (PWA)Package the site as an installable app that works offline after the first visit.
- Topic ideaFairness across skin tonesTest on a skin-tone-annotated public dataset and report where accuracy drops.
Frequently asked questions
Can I get a similar skin disease detection project?
Yes. Share your degree, deadline and your college’s report format. We scope a version with its own contribution, such as a different backbone, dataset or deployment target, and deliver the code, dissertation chapters and seminar slides.
Which dataset does it use?
A public 22-class skin disease photo dataset from Kaggle: 13,893 training images and a separate 1,546-image test set. Class sizes are uneven, so training uses weighted sampling.
Why run the model in the browser instead of on a server?
Privacy and cost. The photo never leaves the device, and a free static host can serve the app with no GPU server to pay for. The trade-off is a smaller model to keep the download light.
Is 58.9% top-1 accuracy good enough?
For 22 look-alike conditions it is far above the 4.5% random baseline, and the right answer is in the top three 83.3% of the time. It is not enough for diagnosis, which is why the app shows ranked possibilities and a “not a diagnosis” notice. Expect this question in the viva.
What will I need to explain in the viva?
Why EfficientNet-B0, how the two training phases work, how weighted sampling handles imbalance, what top-1 and top-3 accuracy mean, how ONNX export and quantization work, and how the browser preprocessing matches training. The handover walkthrough covers each one.
DermaAI is an educational tool, not a medical device. Our work is building, writing support, guidance and explanation, so check what your university allows before you submit.



