This repository contains code, documentation, and research artifacts for an undergraduate thesis.
- Thesis Title: Identifikasi Mineral Kasiterit Pada Citra Mikroskop Menggunakan Model Mask R-CNN
- Author: Kevin Naufal Dany
- Study Program: Informatics Engineering, Institut Teknologi Sumatera
- Student ID: 122140222
- Model demo (Hugging Face Space): https://huggingface.co/spaces/kevinndny/cassiterite-segmentation
- Institutional repository/archive: https://repo.itera.ac.id/depan/submission/SB2602200095
This work develops an instance segmentation pipeline to identify cassiterite minerals in microscopic images using Mask R-CNN variants, including standard and amodal approaches for occlusion handling.
The main scripts in the code directory cover:
- k-fold cross-validation training
- standard test-set evaluation
- tiled test-set evaluation
- code/train.py: k-fold model training
- code/test_evaluation.py: standard test-set evaluation
- code/test_evaluation_tiled.py: tiled evaluation (tile-based inference)
- code/requirements.txt: Python dependencies
- thesis: thesis manuscript source (LaTeX)
- figure: experiment visualizations and outputs
This section explains how to fully reproduce the environment from scratch.
- Python 3.10+ (recommended: Python 3.10 or 3.11)
- PyTorch 2.x
- OS compatibility: Windows/Linux (commands below can be adapted)
Dependencies are defined in code/requirements.txt, including:
- torch, torchvision
- numpy, opencv-python, Pillow
- scikit-learn, albumentations
- matplotlib, seaborn, tqdm
- pycocotools, wandb, shapely
- Clone the repository
git clone https://github.com/mctosima/Repo_Thesis_Kevin.git
cd Repo_TA_Kevin- Create and activate a virtual environment
Windows (PowerShell):
python -m venv .venv
.\.venv\Scripts\Activate.ps1Linux/macOS:
python -m venv .venv
source .venv/bin/activate- Upgrade pip and install dependencies
python -m pip install --upgrade pip
pip install -r code/requirements.txt- Verify installation
python -c "import torch; import torchvision; import cv2; import albumentations; print('Environment ready')"By default, training expects a dataset directory named dataset142 (see the default data_dir argument in code/train.py).
Ensure your dataset follows the expected experiment format, where each image has its paired JSON annotation. If your dataset is stored elsewhere, pass the custom path through data_dir.
Run all commands from the repository root.
Example (basic training):
python code/train.py --data_dir dataset142 --n_folds 5 --model_type amodal --backbone resnet50_fpn_v2 --optimizer sgd --lr 0.01 --epochs 50 --batch_size 1 --output_dir output --checkpoint_dir checkpointsExample (Adam optimizer):
python code/train.py --data_dir dataset142 --n_folds 5 --model_type amodal --backbone resnet50_fpn_v1 --optimizer adam --lr 1e-4 --epochs 50 --batch_size 1 --output_dir output --checkpoint_dir checkpointspython code/test_evaluation.py --checkpoint checkpoints/<checkpoint_name>.pth --model_type standard --backbone resnet50_fpn_v2 --testset_dir testset --output_dir test_evaluation --threshold 0.5 --iou_threshold 0.5 --confidence_threshold 0.7python code/test_evaluation_tiled.py --checkpoint checkpoints/<checkpoint_name>.pth --model_type amodal --backbone resnet50_fpn_v1 --testset_dir testset --output_dir test_evaluation_tiled --threshold 0.5 --iou_threshold 0.5 --confidence_threshold 0.7- model_type: standard or amodal
- backbone: resnet50_fpn_v1 or resnet50_fpn_v2
- optimizer: sgd or adam
- lr: learning rate
- n_folds: number of cross-validation folds
If this repository, model, or thesis contributes to your work, please cite it as follows.
Kevin Naufal Dany. 2026. Identifikasi Mineral Kasiterit Pada Citra Mikroskop Menggunakan Model Mask R-CNN. Undergraduate Thesis, Informatics Engineering Program, Institut Teknologi Sumatera.
@thesis{dany2026kasiterit,
author = {Kevin Naufal Dany},
title = {Identifikasi Mineral Kasiterit Pada Citra Mikroskop Menggunakan Model Mask R-CNN},
type = {Undergraduate Thesis},
school = {Informatics Engineering Program, Institut Teknologi Sumatera},
year = {2026},
url = {https://repo.itera.ac.id/depan/submission/SB2602200095},
note = {Code and demo: https://huggingface.co/spaces/kevinndny/cassiterite-segmentation}
}- Historical review notes are available in LOGBOOK.md and history/review.md.
- For reproducible experiments, use the same random seed as the main runs.
Repositori ini berisi kode, dokumentasi, dan artefak penelitian untuk skripsi sarjana.
- Judul Skripsi: Identifikasi Mineral Kasiterit Pada Citra Mikroskop Menggunakan Model Mask R-CNN
- Penulis: Kevin Naufal Dany
- Program Studi: Teknik Informatika, Institut Teknologi Sumatera
- NIM: 122140222
- Demo model (Hugging Face Space): https://huggingface.co/spaces/kevinndny/cassiterite-segmentation
- Repositori/arsip institusi: https://repo.itera.ac.id/depan/submission/SB2602200095
Penelitian ini mengembangkan pipeline instance segmentation untuk mengidentifikasi mineral kasiterit pada citra mikroskop menggunakan varian Mask R-CNN, termasuk pendekatan standard dan amodal untuk menangani oklusi.
Script utama pada folder code mencakup:
- training berbasis k-fold cross validation
- evaluasi test set standar
- evaluasi test set berbasis tile
- code/train.py: training model k-fold
- code/test_evaluation.py: evaluasi test set standar
- code/test_evaluation_tiled.py: evaluasi tiled (inferensi per tile)
- code/requirements.txt: dependensi Python
- thesis: sumber dokumen skripsi (LaTeX)
- figure: visualisasi dan hasil eksperimen
Bagian ini menjelaskan langkah reproduksi environment secara lengkap dari awal.
- Python 3.10+ (disarankan Python 3.10 atau 3.11)
- PyTorch 2.x
- Kompatibel untuk Windows/Linux (command dapat disesuaikan)
Dependensi didefinisikan di code/requirements.txt, antara lain:
- torch, torchvision
- numpy, opencv-python, Pillow
- scikit-learn, albumentations
- matplotlib, seaborn, tqdm
- pycocotools, wandb, shapely
- Clone repository
git clone <URL_REPOSITORY_KAMU>
cd Repo_TA_Kevin- Buat dan aktifkan virtual environment
Windows (PowerShell):
python -m venv .venv
.\.venv\Scripts\Activate.ps1Linux/macOS:
python -m venv .venv
source .venv/bin/activate- Upgrade pip dan install dependencies
python -m pip install --upgrade pip
pip install -r code/requirements.txt- Verifikasi instalasi
python -c "import torch; import torchvision; import cv2; import albumentations; print('Environment ready')"Secara default, training membaca folder dataset bernama dataset142 (lihat nilai default argumen data_dir di code/train.py).
Pastikan format data mengikuti format eksperimen, yaitu setiap image berpasangan dengan file anotasi JSON. Jika lokasi data berbeda, berikan path tersebut melalui argumen data_dir.
Jalankan seluruh command dari root repository.
Contoh training dasar:
python code/train.py --data_dir dataset142 --n_folds 5 --model_type amodal --backbone resnet50_fpn_v2 --optimizer sgd --lr 0.01 --epochs 50 --batch_size 1 --output_dir output --checkpoint_dir checkpointsContoh training dengan Adam:
python code/train.py --data_dir dataset142 --n_folds 5 --model_type amodal --backbone resnet50_fpn_v1 --optimizer adam --lr 1e-4 --epochs 50 --batch_size 1 --output_dir output --checkpoint_dir checkpointspython code/test_evaluation.py --checkpoint checkpoints/<nama_checkpoint>.pth --model_type standard --backbone resnet50_fpn_v2 --testset_dir testset --output_dir test_evaluation --threshold 0.5 --iou_threshold 0.5 --confidence_threshold 0.7python code/test_evaluation_tiled.py --checkpoint checkpoints/<nama_checkpoint>.pth --model_type amodal --backbone resnet50_fpn_v1 --testset_dir testset --output_dir test_evaluation_tiled --threshold 0.5 --iou_threshold 0.5 --confidence_threshold 0.7- model_type: standard atau amodal
- backbone: resnet50_fpn_v1 atau resnet50_fpn_v2
- optimizer: sgd atau adam
- lr: learning rate
- n_folds: jumlah fold cross-validation
Jika repositori, model, atau skripsi ini membantu penelitian Anda, silakan gunakan sitasi berikut.
Kevin Naufal Dany. 2026. Identifikasi Mineral Kasiterit Pada Citra Mikroskop Menggunakan Model Mask R-CNN. Skripsi, Program Studi Teknik Informatika, Institut Teknologi Sumatera.
@thesis{dany2026kasiterit,
author = {Kevin Naufal Dany},
title = {Identifikasi Mineral Kasiterit Pada Citra Mikroskop Menggunakan Model Mask R-CNN},
type = {Skripsi},
school = {Program Studi Teknik Informatika, Institut Teknologi Sumatera},
year = {2026},
url = {https://repo.itera.ac.id/depan/submission/SB2602200095},
note = {Kode dan demo: https://huggingface.co/spaces/kevinndny/cassiterite-segmentation}
}- Catatan review historis tersedia di LOGBOOK.md dan history/review.md.
- Untuk menjaga reproduktibilitas eksperimen, gunakan random seed yang sama dengan eksperimen utama.