Yapay Zeka Destekli Mobil İlaç Takip ve Tanıma Uygulaması
PharmaApp, kullanıcıların ilaç kutusu fotoğraflarından otomatik olarak ilaç tanıma, takip etme ve hatırlatma alabilmelerini sağlayan kapsamlı bir mobil uygulamadır. Sistem, iki aşamalı derin öğrenme yaklaşımı (YOLOv8 + Vision Transformer) kullanarak yüksek doğruluk oranları elde etmektedir.
Bu proje aşağıdaki veri setlerini ve model dosyalarını kullanmaktadır:
- 12-Class Turkish Drug Detection Dataset: Kaggle Dataset
- 150-Class Pharmaceutical Medication Dataset: Kaggle Dataset
Not: Model eğitimi yapmak istiyorsanız, veri setlerini Kaggle'dan indirip proje klasörlerine yerleştirmeniz gerekmektedir. Detaylı kurulum adımları aşağıda verilmiştir.
- ONNX Model Dosyaları: Google Drive Linki
Not: Uygulamayı çalıştırmak için ONNX model dosyalarını Google Drive'dan indirip PharmaApp/android/app/src/main/assets/ klasörüne yerleştirmeniz gerekmektedir. Detaylı indirme ve kurulum adımları aşağıdaki "Hızlı Başlangıç" bölümünde verilmiştir.
- Veri Setleri
- Genel Bakış
- Özellikler
- Sistem Gereksinimleri
- ⚡ Hızlı Başlangıç: Sadece Uygulamayı Çalıştırmak
- Sıfırdan Kurulum Rehberi
- Kullanım
- Proje Yapısı
- Sorun Giderme
- Performans Metrikleri
PharmaApp, üç ana bileşenden oluşan entegre bir sistemdir:
- Python Backend: Model eğitimi, inference
- Mobil Uygulama: React Native tabanlı cross-platform uygulama (Android/iOS)
- Yapay Zeka Modelleri: YOLOv8 (Detection) + Vision Transformer (Classification)
Sistem, iki aşamalı (two-stage) derin öğrenme yaklaşımı kullanmaktadır:
Giriş Görüntüsü
↓
[YOLOv8 Detection] → İlaç kutusunu tespit et
↓
[Görüntü Kırpma] → Tespit edilen bölgeyi kırp
↓
[ViT Classification] → İlacı sınıflandır (12 veya 150 sınıf)
↓
Sonuç: İlaç adı + Güven skoru
Sistem, hibrit model yaklaşımı kullanmaktadır:
-
12 Sınıf Yüksek Doğruluk Modeli: Aferin, Apranax, Arveles, Aspirin, Dolorex, Hametan Krem, Hametan Merhem, Majezik, Metpamid, Parol, Terbisil, Unisom
- Doğruluk: %99.82
- Kullanım: Yüksek güven gereken durumlar
-
150 Sınıf Geniş Kapsam Modeli: 150 farklı Türk ilaç kategorisi
- Doğruluk: %85-90
- Kullanım: Geniş kapsam gereken durumlar
-
Birleştirilmiş Yaklaşım: Her iki model paralel çalıştırılır, sonuçlar birleştirilir ve en yüksek güven skorlu sonuç seçilir.
- ✅ İki Aşamalı Tanıma Sistemi: YOLOv8 (Detection) + Vision Transformer (Classification)
- ✅ 162 İlaç Sınıfı: 12 yüksek doğruluk + 150 geniş kapsam ilaç sınıfı
- ✅ Yüksek Doğruluk: %99.82 (12 sınıf), %85-90 (150 sınıf)
- ✅ Gerçek Zamanlı Inference: Mobil cihazlarda ~150-400ms inference süresi
- ✅ Hibrit Model Yaklaşımı: İki model entegrasyonu ile hem yüksek doğruluk hem geniş kapsam
- ✅ Offline Çalışma: İnternet bağlantısı olmadan çalışabilme
- ✅ İlaç Tanıma: Kamera ile fotoğraf çekerek otomatik ilaç tanıma
- ✅ İlaç Takibi: İlaç alım geçmişi ve istatistikler
- ✅ Alarm Sistemi: Özelleştirilebilir ilaç hatırlatıcıları
- ✅ Takvim Entegrasyonu: İlaç alım takvimi görüntüleme
- ✅ Offline Çalışma: SQLite yerel veritabanı ile offline çalışma
- ✅ Firebase Senkronizasyonu: Çoklu cihaz senkronizasyonu
- ✅ Kullanıcı Yönetimi: Firebase Authentication ile güvenli giriş
- Python: 3.8 veya üzeri
- CUDA: 11.0+ (GPU eğitimi için, opsiyonel)
- RAM: 8GB+ (16GB önerilir)
- Disk: 10GB+ boş alan
- GPU: NVIDIA GPU (RTX 3060 veya üzeri önerilir, opsiyonel)
- Node.js: 20 veya üzeri
- React Native: 0.82.1
- Android Studio: Son sürüm (Android geliştirme için)
- Xcode: Son sürüm (iOS geliştirme için, sadece macOS)
- Java JDK: 17 veya üzeri
- Android SDK: API Level 24+ (Android 7.0+)
Bu rehber, projeyi sıfırdan kurmak ve modelleri eğitmek için gerekli tüm adımları içermektedir.
- Bu rehber, hiçbir ön bilgisi olmayan kullanıcılar için hazırlanmıştır
- Her adımı sırayla takip edin
- Bir adımı atlamayın
- Hata alırsanız, önce "Sorun Giderme" bölümüne bakın
- Eğitim süreleri tahminidir ve donanımınıza göre değişebilir
Model eğitimi yapmadan, sadece uygulamayı çalıştırmak istiyorsanız:
Git Kurulumu:
- Git indirin ve kurun (eğer yoksa)
- Kurulumu doğrulayın:
git --version
Repository'yi Clone Et:
# Repository'yi klonlayın
git clone https://github.com/code-alchemist01/PharmaAPP.git
cd PharmaAPPİndirme Adımları:
-
Google Drive Linkine Gidin:
- Link: ONNX Model Dosyaları
- Tarayıcınızda linki açın
-
Dosyayı İndirin:
- Google Drive sayfasında "İndir" (Download) butonuna tıklayın
- ZIP dosyası indirilecek (~668 MB)
- İndirme tamamlanana kadar bekleyin
-
ZIP Dosyasını Açın:
- İndirilen ZIP dosyasını bulun (genellikle İndirilenler klasöründe)
- ZIP dosyasını sağ tıklayıp "Tümünü çıkart" veya "Extract All" seçin
- İçerik 4 ONNX dosyası olmalı:
detection.onnx(~11.71 MB)classification.onnx(~1.22 MB)classification.onnx.data(~327.38 MB)classification_150.onnx(~327.82 MB)
-
Dosyaları Assets Klasörüne Kopyalayın:
Windows:
# Ana klasöre gidin (PharmaAPP klasörü) cd PharmaAPP # Assets klasörünü oluşturun (eğer yoksa) mkdir PharmaApp\android\app\src\main\assets # ONNX dosyalarını kopyalayın # ZIP'ten çıkarttığınız dosyaları bulun ve şu komutu kullanın: copy "ZIP_TEN_ÇIKARTILAN_KLASÖR\*.onnx*" PharmaApp\android\app\src\main\assets\
Linux/Mac:
# Ana klasöre gidin (PharmaAPP klasörü) cd PharmaAPP # Assets klasörünü oluşturun (eğer yoksa) mkdir -p PharmaApp/android/app/src/main/assets # ONNX dosyalarını kopyalayın cp "ZIP_TEN_ÇIKARTILAN_KLASÖR/*.onnx*" PharmaApp/android/app/src/main/assets/
-
Dosyaları Kontrol Edin:
# Windows dir PharmaApp\android\app\src\main\assets\*.onnx* # Linux/Mac ls PharmaApp/android/app/src/main/assets/*.onnx* # Şu 4 dosyayı görmelisiniz: # - detection.onnx # - classification.onnx # - classification.onnx.data # - classification_150.onnx
✅ Başarılı! ONNX model dosyaları yerleştirildi.
❌ Sorun mu yaşıyorsunuz?
- Dosyaların doğru klasörde olduğundan emin olun:
PharmaApp/android/app/src/main/assets/ - Tüm 4 dosyanın (
.onnxve.onnx.datadahil) kopyalandığını kontrol edin - "Sorun Giderme" bölümüne bakın
- https://nodejs.org/ adresine gidin
- "LTS" versiyonunu indirin (20.x veya üzeri)
- İndirilen dosyayı çalıştırın ve kurulum sihirbazını takip edin
- Kurulumu doğrulayın:
node --version npm --version # Node.js 20.x.x ve npm 10.x.x görmelisiniz
# PharmaApp klasörüne gidin
cd PharmaApp
# Node modüllerini yükleyin (5-10 dakika sürebilir)
npm install
# Yükleme tamamlandığında "added XXX packages" mesajı göreceksiniz- https://developer.android.com/studio adresine gidin
- Android Studio'yu indirin ve kurun
- İlk açılışta Android SDK'yı kurun
- Java JDK 17+ otomatik kurulacak
- https://console.firebase.google.com/ adresine gidin
- Yeni proje oluşturun
- Android uygulaması ekleyin
google-services.jsondosyasını indirin- Dosyayı
PharmaApp/android/app/klasörüne kopyalayın
Terminal 1 (Metro Bundler):
cd PharmaApp
npm startTerminal 2 (Android Uygulaması):
cd PharmaApp
npm run android✅ Başarılı! Uygulama Android emülatörde veya bağlı cihazda çalışacak.
- Android Studio açılabilir
- Gradle build yapılacak (5-10 dakika sürebilir)
- Uygulama otomatik yüklenecek ve çalışacak
📝 Not: Model eğitimi yapmak istiyorsanız, aşağıdaki "Model Eğitimi" bölümünü takip edin.
Python Kurulumu:
- Python 3.8+ indirin ve kurun
- Kurulum sırasında "Add Python to PATH" seçeneğini işaretleyin
- Kurulumu doğrulayın:
python --version # Çıktı: Python 3.8.x veya üzeri olmalı
Git Kurulumu (Opsiyonel - Repository'yi klonlamak için):
- Git indirin ve kurun
- Kurulumu doğrulayın:
git --version
CUDA Kurulumu (GPU kullanmak için - Opsiyonel):
- NVIDIA CUDA Toolkit 11.0+ indirin ve kurun
- cuDNN indirin ve kurun
- Kurulumu doğrulayın:
nvidia-smi # GPU bilgilerini görmelisiniz
Git ile Klonlama (Önerilen):
Repository'yi Klonlama:
# Repository'yi klonlayın
git clone https://github.com/code-alchemist01/PharmaAPP.git
cd PharmaAPPONNX Model Dosyalarını İndirin (Google Drive):
ONNX model dosyaları GitHub'a yüklenemiyor (dosya boyutu limiti nedeniyle). Google Drive'dan indirmeniz gerekiyor:
-
Google Drive Linkine Gidin:
-
Dosyayı İndirin:
- Google Drive sayfasında "İndir" (Download) butonuna tıklayın
- ZIP dosyası indirilecek (~668 MB)
-
ZIP Dosyasını Açın ve Dosyaları Kopyalayın:
Windows:
# Assets klasörünü oluşturun (eğer yoksa) mkdir PharmaApp\android\app\src\main\assets # ZIP'ten çıkarttığınız ONNX dosyalarını kopyalayın copy "ZIP_TEN_ÇIKARTILAN_KLASÖR\*.onnx*" PharmaApp\android\app\src\main\assets\
Linux/Mac:
# Assets klasörünü oluşturun (eğer yoksa) mkdir -p PharmaApp/android/app/src/main/assets # ZIP'ten çıkarttığınız ONNX dosyalarını kopyalayın cp "ZIP_TEN_ÇIKARTILAN_KLASÖR/*.onnx*" PharmaApp/android/app/src/main/assets/
-
Kontrol Edin:
# Windows dir PharmaApp\android\app\src\main\assets\*.onnx* # Linux/Mac ls PharmaApp/android/app/src/main/assets/*.onnx* # Şu 4 dosyayı görmelisiniz: # - detection.onnx # - classification.onnx # - classification.onnx.data # - classification_150.onnx
Manuel İndirme (ZIP):
- Repository'yi ZIP olarak indirin (GitHub'dan "Code" → "Download ZIP")
- ZIP dosyasını açın
- ÖNEMLİ: ZIP indirme ONNX model dosyalarını içermez!
- ONNX dosyalarını Google Drive'dan indirin (yukarıdaki adımları takip edin)
- ONNX dosyalarını
PharmaApp/android/app/src/main/assets/klasörüne kopyalayın
Kaggle API Token Oluşturma:
- Kaggle hesabı oluşturun veya giriş yapın
- Hesap ayarlarına gidin: Account Settings
- "API" sekmesine gidin
- "Create New Token" butonuna tıklayın
kaggle.jsondosyası indirilecek
Kaggle API Token Yerleştirme:
Windows:
# Kaggle klasörünü oluşturun
mkdir C:\Users\%USERNAME%\.kaggle
# kaggle.json dosyasını bu klasöre kopyalayın
copy kaggle.json C:\Users\%USERNAME%\.kaggle\Linux/Mac:
# Kaggle klasörünü oluşturun
mkdir -p ~/.kaggle
# kaggle.json dosyasını bu klasöre kopyalayın
cp kaggle.json ~/.kaggle/
chmod 600 ~/.kaggle/kaggle.jsonKaggle API Kurulumu:
pip install kaggleYöntem 1: Kaggle API ile İndirme (Önerilen)
# 12-Class Dataset
kaggle datasets download -d kutayahin/12-class-turkish-drug-detection-dataset -p ilacverisi/
cd ilacverisi
# ZIP dosyasını açın
# Windows: Expand-Archive veya 7-Zip kullanın
# Linux/Mac: unzip komutu kullanın
unzip 12-class-turkish-drug-detection-dataset.zip -d SAP_BABA_CLEAN/
# veya manuel olarak ZIP'i açıp içeriğini SAP_BABA_CLEAN/ klasörüne kopyalayın
# 150-Class Dataset
cd ../turkish_pill
kaggle datasets download -d kutayahin/150-class-pharmaceutical-medication-dataset -p ./
# ZIP dosyasını açın
unzip 150-class-pharmaceutical-medication-dataset.zip -d "Mobile-Captured Pharmaceutical Medication Packages/"Yöntem 2: Manuel İndirme (Kaggle Web Sitesi)
12-Class Dataset (SAP_BABA_CLEAN):
12-Class Dataset (SAP_BABA_CLEAN):
- Kaggle Dataset sayfasına gidin
- "Download" butonuna tıklayın
- ZIP dosyasını indirin
- ZIP dosyasını açın ve içeriğini
ilacverisi/SAP_BABA_CLEAN/klasörüne kopyalayın
Klasör yapısı şöyle olmalı:
ilacverisi/
└── SAP_BABA_CLEAN/
├── train/
│ ├── images/
│ └── labels/
├── valid/
│ ├── images/
│ └── labels/
├── test/
│ ├── images/
│ └── labels/
└── data.yaml
150-Class Dataset (Mobile-Captured Pharmaceutical Medication Packages):
- Kaggle Dataset sayfasına gidin
- "Download" butonuna tıklayın
- ZIP dosyasını indirin
- ZIP dosyasını açın ve içeriğini
turkish_pill/Mobile-Captured Pharmaceutical Medication Packages/klasörüne kopyalayın
Klasör yapısı şöyle olmalı:
turkish_pill/
└── Mobile-Captured Pharmaceutical Medication Packages/
├── Acretin 30 g cream/
├── Adol 24 caplets/
├── ... (150 klasör)
└── drug list.xlsx
Sanal Ortam Nedir? Sanal ortam, projenizin bağımlılıklarını sistem Python'undan izole eder. Bu sayede farklı projeler farklı Python paket versiyonlarını kullanabilir.
Sanal Ortam Oluşturma:
Windows:
# Ana klasöre gidin
cd C:\PHARMA_APP
# Sanal ortam oluşturun
python -m venv venv
# Sanal ortamı aktifleştirin
venv\Scripts\activate
# Aktifleştirme başarılıysa terminal başında (venv) göreceksinizLinux/Mac:
# Ana klasöre gidin
cd ~/PHARMA_APP
# Sanal ortam oluşturun
python3 -m venv venv
# Sanal ortamı aktifleştirin
source venv/bin/activate
# Aktifleştirme başarılıysa terminal başında (venv) göreceksinizSanal Ortamı Deaktifleştirme:
# Herhangi bir zamanda deaktifleştirmek için
deactivateNot: Her yeni terminal açtığınızda sanal ortamı tekrar aktifleştirmeniz gerekir.
ÖNEMLİ: Sanal ortam aktif olmalı! Terminal başında (venv) görmelisiniz.
12 Sınıf Modeli (ilacverisi workspace):
cd ilacverisi
pip install --upgrade pip # pip'i güncelleyin
pip install -r requirements.txtYükleme sırasında hata alırsanız:
- CUDA hatası: GPU kullanmayacaksanız, CPU versiyonunu yükleyin:
pip install torch torchvision --index-url https://download.pytorch.org/whl/cpu
- Memory hatası: Bağımlılıkları tek tek yükleyin veya pip cache'i temizleyin:
pip cache purge pip install -r requirements.txt --no-cache-dir
150 Sınıf Modeli (turkish_pill workspace):
cd ../turkish_pill
pip install --upgrade pip
pip install -r requirements.txtKurulumu Doğrulayın:
# PyTorch kurulumunu kontrol edin
python -c "import torch; print(f'PyTorch: {torch.__version__}')"
python -c "import torch; print(f'CUDA Available: {torch.cuda.is_available()}')"
# Transformers kurulumunu kontrol edin
python -c "import transformers; print(f'Transformers: {transformers.__version__}')"
# Ultralytics kurulumunu kontrol edin (12 sınıf için)
python -c "import ultralytics; print(f'Ultralytics: {ultralytics.__version__}')"Beklenen Çıktı:
- PyTorch versiyonu gösterilmeli
- CUDA Available: True (GPU varsa) veya False (CPU kullanıyorsanız)
- Transformers versiyonu gösterilmeli
Adım 1: Veri Setini Kontrol Edin
cd ilacverisi
# Veri setinin doğru yerde olduğunu kontrol edin
dir SAP_BABA_CLEAN\train\images
# Çıktı: 10,443 görüntü dosyası görmelisinizAdım 2: Detection Model (YOLOv8) Eğitimi
Eğitim Öncesi Kontrol:
# ilacverisi klasöründeyken
# config.yaml dosyasını kontrol edin
type config.yaml # Windows
# veya
cat config.yaml # Linux/MacEğitimi Başlatın:
# ilacverisi klasöründeyken
python src/train_detection.pyEğitim Sırasında:
- Terminal'de epoch ilerlemesini göreceksiniz
- Her epoch sonunda validation sonuçları gösterilir
runs/detection/train/klasöründe grafikler ve metrikler kaydedilir- Eğitim sırasında bilgisayarınızı kapatmayın veya uyku moduna almayın
Parametreler (config.yaml):
- Model Boyutu:
n(nano) - Epochs: 100
- Batch Size: 16
- Image Size: 640x640
- Learning Rate: 0.01
Beklenen Süre:
- GPU (RTX 3060+): ~2-4 saat
- CPU: ~10-20 saat
Eğitim Sırasında Hata Alırsanız:
- CUDA out of memory:
config.yamldosyasındabatch_sizedeğerini küçültün (16 → 8 → 4) - Dosya bulunamadı: Veri seti yolunu kontrol edin
- Import hatası: Bağımlılıkları tekrar yükleyin:
pip install -r requirements.txt
Çıktı: models/detection/best.pt
Kontrol:
# Model dosyasının oluştuğunu kontrol edin
dir models\detection\best.pt # Windows
# veya
ls models/detection/best.pt # Linux/Mac
# Dosya boyutunu kontrol edin (yaklaşık 6-12 MB olmalı)Adım 3: Görüntü Kırpma (Detection Modeli Kullanarak)
ÖNEMLİ: Bu adım, detection modeli eğitildikten sonra yapılmalıdır!
# Detection modeli ile eğitim görüntülerini kırp
python src/crop_images.pyBu işlem ne yapar?
- Detection modeli ile eğitim görüntülerindeki ilaç kutularını tespit eder
- Tespit edilen bölgeleri kırpar
- Kırpılmış görüntüleri
data/cropped/train/vedata/cropped/valid/klasörlerine kaydeder - Her sınıf için ayrı klasörler oluşturur
İşlem Süresi:
- ~10,443 görüntü için: ~30-60 dakika (GPU) veya ~2-4 saat (CPU)
Kontrol:
# Kırpılmış görüntülerin oluştuğunu kontrol edin
dir data\cropped\train\aferin # Windows
# veya
ls data/cropped/train/aferin # Linux/Mac
# Her sınıf için görüntüler görmelisiniz
# Toplam 12 klasör olmalı (her biri bir ilaç sınıfı)
dir data\cropped\train # Windows
ls data/cropped/train # Linux/MacHata Alırsanız:
- Model bulunamadı:
models/detection/best.ptdosyasının varlığını kontrol edin - Dosya yolu hatası:
config.yamldosyasındaki yolları kontrol edin
Adım 4: Classification Model (ViT) Eğitimi
ÖNEMLİ: Bu adım, görüntü kırpma işlemi tamamlandıktan sonra yapılmalıdır!
# Kırpılmış görüntülerle classification modelini eğit
python src/train_classification.pyEğitim Sırasında:
- İlk çalıştırmada Hugging Face'den model indirilecek (~330MB)
- Her epoch sonunda validation accuracy gösterilir
- En iyi model otomatik olarak kaydedilir
Parametreler:
- Model:
google/vit-base-patch16-224 - Epochs: 20
- Batch Size: 32
- Image Size: 224x224
- Learning Rate: 0.00002
Beklenen Süre:
- GPU (RTX 3060+): ~1-2 saat
- CPU: ~5-10 saat
Eğitim Sırasında Hata Alırsanız:
- CUDA out of memory: Batch size'ı küçültün (32 → 16 → 8)
- Kırpılmış görüntü bulunamadı:
data/cropped/klasörünü kontrol edin - Internet bağlantısı hatası: İlk çalıştırmada model indirilir, internet gerekli
Çıktı: models/classification/ klasörü (config.json, model.safetensors, vb.)
Kontrol:
# Model dosyalarının oluştuğunu kontrol edin
dir models\classification # Windows
# veya
ls models/classification # Linux/Mac
# Şu dosyaları görmelisiniz:
# - config.json
# - model.safetensors (veya model.pt)
# - preprocessor_config.json
# - training_args.binAdım 1: Veri Setini Kontrol Edin
cd turkish_pill
# Veri setinin doğru yerde olduğunu kontrol edin
dir "Mobile-Captured Pharmaceutical Medication Packages"
# 150 klasör görmelisiniz (her biri bir ilaç sınıfı)Adım 2: Veri Seti Hazırlama
ÖNEMLİ: Veri seti klasörünün doğru yerde olduğundan emin olun!
# Klasör tabanlı veri setini train/val/test olarak böl
python prepare_dataset.pyBu script ne yapar?
Mobile-Captured Pharmaceutical Medication Packages/klasöründeki görüntüleri okur- Her sınıf için görüntüleri train/valid/test olarak böler (70/15/15 oranında)
data/train/,data/valid/,data/test/klasörlerini oluştururdata/data.yamldosyasını oluşturur
İşlem Süresi:
- ~3,900 görüntü için: ~5-10 dakika
Kontrol:
# Veri seti klasörlerinin oluştuğunu kontrol edin
dir data\train # Windows
dir data\valid
dir data\test
# veya
ls data/train # Linux/Mac
ls data/valid
ls data/test
# Her klasörde ilaç sınıfları görmelisiniz (150 klasör)
# data.yaml dosyasının oluştuğunu kontrol edin
type data\data.yaml # Windows
cat data/data.yaml # Linux/MacHata Alırsanız:
- Klasör bulunamadı:
Mobile-Captured Pharmaceutical Medication Packages/klasörünün varlığını kontrol edin - Görüntü okuma hatası: Görüntü dosyalarının bozuk olmadığından emin olun
Adım 3: Classification Model (ViT) Eğitimi
ÖNEMLİ: Veri seti hazırlama işlemi tamamlandıktan sonra bu adıma geçin!
# 150 sınıflı classification modelini eğit
python train_vit.pyEğitim Öncesi:
- İlk çalıştırmada Hugging Face'den model indirilecek (~330MB)
- Internet bağlantısı gerekli (sadece ilk çalıştırmada)
Eğitim Sırasında:
- Her epoch sonunda checkpoint kaydedilir
- Validation accuracy ve loss gösterilir
- En iyi model otomatik olarak seçilir
Parametreler (config.yaml):
- Model:
google/vit-base-patch16-224 - Epochs: 30
- Batch Size: 16
- Image Size: 224x224
- Learning Rate: 0.00002
Beklenen Süre:
- GPU (RTX 3060+): ~2-3 saat
- CPU: ~10-15 saat
Eğitim Sırasında Hata Alırsanız:
- CUDA out of memory: Batch size'ı küçültün (16 → 8 → 4)
- Veri seti bulunamadı:
data/train/klasörünü kontrol edin - Class imbalance uyarısı: Normal, 150 sınıf için beklenen bir durum
Çıktı: models/classification/checkpoint-XXXXX/ klasörleri
Kontrol:
# Checkpoint klasörlerinin oluştuğunu kontrol edin
dir models\classification\checkpoint-* # Windows
# veya
ls models/classification/checkpoint-* # Linux/Mac
# Birden fazla checkpoint görmelisiniz (her epoch sonunda oluşur)
# En iyi model genellikle checkpoint-1725 klasöründe olur
# trainer_state.json dosyasında "best_model_checkpoint" bilgisi var12 Sınıf Modeli - Detection Modeli:
cd ilacverisi
# Detection modeli ONNX'e dönüştür
python src/convert_detection_to_onnx.pyKontrol:
# ONNX dosyasının oluştuğunu kontrol edin
dir models\detection\detection.onnx12 Sınıf Modeli - Classification Modeli:
# Classification modeli ONNX'e dönüştür
python src/convert_classification_to_onnx.pyKontrol:
# ONNX dosyasının oluştuğunu kontrol edin
dir models\classification\classification.onnx150 Sınıf Modeli:
cd turkish_pill
# En son checkpoint'i otomatik bulur ve ONNX'e dönüştürür
python convert_to_onnx.pyBu script:
- En son checkpoint'i otomatik bulur (
checkpoint-XXXXX/) - Hugging Face modelini ONNX formatına dönüştürür
- Model doğrulaması yapar
- PyTorch ve ONNX inference sonuçlarını karşılaştırır
- External data dosyalarını birleştirir
models/classification/classification_150_merged.onnxdosyası oluşturur
Kontrol:
# ONNX dosyasının oluştuğunu kontrol edin
dir models\classification\classification_150_merged.onnxAdım 4: Model Dosyalarını Mobil Uygulamaya Kopyalama
# Ana klasöre dönün
cd C:\PHARMA_APP
# ONNX dosyalarını assets klasörüne kopyala
copy ilacverisi\models\detection\detection.onnx PharmaApp\android\app\src\main\assets\
copy ilacverisi\models\classification\classification.onnx PharmaApp\android\app\src\main\assets\
copy turkish_pill\models\classification\classification_150_merged.onnx PharmaApp\android\app\src\main\assets\classification_150.onnxKontrol:
# Tüm ONNX dosyalarının assets klasöründe olduğunu kontrol edin
dir PharmaApp\android\app\src\main\assets\*.onnx # Windows
# veya
ls PharmaApp/android/app/src/main/assets/*.onnx # Linux/Mac
# Şu dosyaları görmelisiniz:
# - detection.onnx (11.71 MB)
# - classification.onnx (1.22 MB)
# - classification.onnx.data (327.38 MB)
# - classification_150.onnx (327.82 MB)Not:
- ÖNEMLİ: ONNX dosyaları GitHub'a yüklenemiyor (dosya boyutu limiti nedeniyle). ONNX dosyalarını Google Drive'dan indirmeniz gerekiyor: ONNX Model Dosyaları
- Eğer model eğitimi yaptıysanız ve kendi ONNX dosyalarınızı oluşturduysanız, tüm dosyaları (
.onnxve.onnx.datadahil) kopyalayın:
copy ilacverisi\models\classification\classification.onnx.data PharmaApp\android\app\src\main\assets\ÖNEMLİ:
- Eğer repository'yi klonladıysanız, ONNX modelleri GitHub'da bulunmuyor. ONNX dosyalarını Google Drive'dan indirmeniz gerekiyor: ONNX Model Dosyaları
- Model eğitimi yapmadan direkt uygulamayı çalıştırmak istiyorsanız, yukarıdaki "Hızlı Başlangıç" bölümündeki "Adım 2: ONNX Model Dosyalarını İndirin" adımlarını takip edin.
- Eğer model eğitimi yaptıysanız, ONNX dönüştürme işlemlerini tamamladıktan sonra bu adıma geçin.
ONNX Modelleri Kontrol Edin:
# ONNX dosyalarının assets klasöründe olduğunu kontrol edin
dir PharmaApp\android\app\src\main\assets\*.onnx* # Windows
# veya
ls PharmaApp/android/app/src/main/assets/*.onnx* # Linux/Mac
# Şu 4 dosyayı görmelisiniz:
# - detection.onnx (11.71 MB)
# - classification.onnx (1.22 MB)
# - classification.onnx.data (327.38 MB)
# - classification_150.onnx (327.82 MB)Eğer ONNX dosyaları yoksa:
- Google Drive'dan indirin (Önerilen): Yukarıdaki "Hızlı Başlangıç" bölümündeki "Adım 2: ONNX Model Dosyalarını İndirin" adımlarını takip edin
- Veya model eğitimi yapın: Yukarıdaki "Model Eğitimi" bölümünü takip edin ve eğitilmiş modelleri ONNX'e dönüştürün
Node.js Kurulumu:
- Node.js 20+ indirin ve kurun
- Kurulumu doğrulayın:
node --version npm --version # Node.js 20.x.x ve npm 10.x.x görmelisiniz
cd C:\PHARMA_APP\PharmaApp
npm installYükleme Süresi:
- İlk kurulum: ~5-10 dakika
- ~500MB+ indirme yapılacak
Hata Alırsanız:
- Network hatası: Internet bağlantınızı kontrol edin
- Permission hatası: Terminal'i yönetici olarak çalıştırın (Windows) veya
sudokullanın (Linux/Mac) - Cache hatası: npm cache'i temizleyin:
npm cache clean --force npm install
Android Studio Kurulumu:
- Android Studio indirin ve kurun
- Android SDK'yı kurun (Android Studio içinden)
- Android SDK Platform 24+ kurun
- Java JDK 17+ kurun (Android Studio ile birlikte gelir)
Kurulumu Doğrulayın:
# Java versiyonunu kontrol edin
java -version
# Java 17 veya üzeri görmelisiniz
# Android SDK yolunu kontrol edin (Windows)
echo %ANDROID_HOME%
# veya (Linux/Mac)
echo $ANDROID_HOMEAndroid SDK Yolunu Ayarlayın (Gerekirse):
Windows:
# Environment Variables'a ekleyin:
# ANDROID_HOME = C:\Users\%USERNAME%\AppData\Local\Android\Sdk
# PATH'e ekleyin: %ANDROID_HOME%\platform-toolsLinux/Mac:
# ~/.bashrc veya ~/.zshrc dosyasına ekleyin:
export ANDROID_HOME=$HOME/Android/Sdk
export PATH=$PATH:$ANDROID_HOME/platform-tools# Android klasörüne gidin
cd android
# Gradle wrapper'ı çalıştırın (ilk kurulum)
./gradlew clean
# Geri dönün
cd ..cd ios
bundle install
bundle exec pod install
cd ..Firebase Projesi Oluşturma:
- Firebase Console'a gidin
- "Add project" butonuna tıklayın
- Proje adını girin ve "Continue" tıklayın
- Google Analytics'i etkinleştirin (opsiyonel)
- "Create project" tıklayın
Android Uygulaması Ekleme:
- Firebase Console'da projenizi seçin
- "Add app" → "Android" seçin
- Package name girin:
com.pharmaapp google-services.jsondosyasını indirin- Dosyayı
PharmaApp/android/app/klasörüne kopyalayın
iOS Uygulaması Ekleme (Opsiyonel):
-
"Add app" → "iOS" seçin
-
Bundle ID girin
-
GoogleService-Info.plistdosyasını indirin -
Dosyayı
PharmaApp/ios/klasörüne kopyalayın -
Firebase Console'da yeni bir proje oluşturun
-
Android uygulaması ekleyin
-
google-services.jsondosyasınıPharmaApp/android/app/klasörüne kopyalayın -
iOS uygulaması ekleyin (opsiyonel)
-
GoogleService-Info.plistdosyasınıPharmaApp/ios/klasörüne kopyalayın
Debug APK:
cd PharmaApp\android
.\gradlew assembleDebugAPK dosyası: android/app/build/outputs/apk/debug/app-debug.apk
Release APK:
cd PharmaApp\android
.\gradlew clean
.\gradlew assembleReleaseAPK dosyası: android/app/build/outputs/apk/release/app-release.apk
Not: Release APK için imzalama gerekir. İlk kez imzalama için:
android/app/build.gradledosyasında signing config ekleyin- Keystore dosyası oluşturun:
keytool -genkey -v -keystore pharmaapp.keystore -alias pharmaapp -keyalg RSA -keysize 2048 -validity 10000
12 Sınıf Modeli:
cd ilacverisi
streamlit run app.py150 Sınıf Modeli:
cd turkish_pill
streamlit run app.pyTarayıcıda otomatik olarak açılacaktır (genellikle http://localhost:8501).
Kullanım Adımları:
- Görüntü yükleyin veya kamera ile fotoğraf çekin
- "🚀 Tahmin Yap" butonuna tıklayın
- Sonuçları görüntüleyin:
- Tespit edilen sınıf ve güven seviyesi
- Bounding box ile işaretlenmiş görüntü
- Kırpılmış ilaç kutusu görüntüsü
- Tüm sınıf olasılıkları
12 Sınıf Modeli:
cd ilacverisi
python src/inference.py <görüntü_yolu>150 Sınıf Modeli:
cd turkish_pill
python inference.py <görüntü_yolu>Android:
# Metro bundler'ı başlatın (bir terminal)
cd PharmaApp
npm start
# Android uygulamasını çalıştırın (başka bir terminal)
npm run androidiOS (sadece macOS):
# Metro bundler'ı başlatın (bir terminal)
npm start
# iOS uygulamasını çalıştırın (başka bir terminal)
npm run iosAna Ekranlar:
- Home: İlaç listesi ve hızlı erişim
- İlaç Ekle: Kamera ile ilaç tanıma ve ekleme
- Takvim: İlaç alım takvimi
- Alarm: İlaç hatırlatıcıları
- İstatistikler: İlaç alım istatistikleri
- Profil: Kullanıcı ayarları
İlaç Tanıma Akışı:
- "İlaç Ekle" ekranına gidin
- Kamera butonuna tıklayın
- İlaç kutusu fotoğrafı çekin
- Sistem otomatik olarak:
- İlaç kutusunu tespit eder (YOLOv8)
- Her iki modeli paralel çalıştırır (12 sınıf + 150 sınıf)
- Sonuçları birleştirir ve en yüksek güven skorlu sonucu gösterir
- Alternatif tahminleri listeler (top-5)
- İlaç bilgilerini düzenleyip kaydedin
İlaç Doğrulama:
- Alarm bildirimi geldiğinde "Doğrula" butonuna tıklayın
- İlaç kutusu fotoğrafı çekin
- Sistem ilacı tanır ve beklenen ilaçla eşleştirir
- Eşleşme başarılıysa ilaç alımı kaydedilir
PHARMA_APP/
├── ilacverisi/ # 12 sınıf model workspace
│ ├── src/ # Python kaynak kodları
│ │ ├── train_detection.py # Detection model eğitimi
│ │ ├── train_classification.py # Classification model eğitimi
│ │ ├── crop_images.py # Görüntü kırpma
│ │ └── inference.py # Inference pipeline
│ ├── models/ # Eğitilmiş modeller
│ │ ├── detection/
│ │ │ └── best.pt # YOLOv8 modeli
│ │ └── classification/ # ViT modeli
│ ├── data/ # Veri setleri
│ │ ├── cropped/ # Kırpılmış görüntüler
│ │ └── SAP_BABA_CLEAN/ # Ham veri seti
│ ├── app.py # Streamlit uygulaması
│ ├── config.yaml # Konfigürasyon
│ └── requirements.txt # Python bağımlılıkları
│
├── turkish_pill/ # 150 sınıf model workspace
│ ├── Mobile-Captured.../ # Kaynak veri seti
│ ├── data/ # Hazırlanmış veri seti
│ │ ├── train/ # Eğitim görüntüleri
│ │ ├── valid/ # Validation görüntüleri
│ │ ├── test/ # Test görüntüleri
│ │ └── data.yaml # Sınıf tanımları
│ ├── models/
│ │ └── classification/ # Eğitilmiş model
│ ├── prepare_dataset.py # Veri seti hazırlama
│ ├── train_vit.py # Model eğitimi
│ ├── convert_to_onnx.py # ONNX dönüştürme
│ ├── inference.py # Inference script
│ ├── app.py # Streamlit uygulaması
│ ├── config.yaml # Konfigürasyon
│ └── requirements.txt # Python bağımlılıkları
│
└── PharmaApp/ # React Native mobil uygulama
├── android/ # Android native kod
│ └── app/src/main/
│ ├── assets/ # ONNX model dosyaları
│ │ ├── detection.onnx
│ │ ├── classification.onnx
│ │ └── classification_150.onnx
│ └── java/com/pharmaapp/
│ ├── mltest/ # ML native modülü
│ │ ├── MLTestModule.kt
│ │ └── MLTestPackage.kt
│ ├── MainActivity.kt
│ └── MainApplication.kt
├── ios/ # iOS native kod
├── src/
│ ├── screens/ # Uygulama ekranları
│ ├── services/ # Servisler (ML, Firebase, vb.)
│ │ ├── ml/
│ │ │ ├── MLService.ts # ML servisi
│ │ │ ├── MLTestNativeModule.ts
│ │ │ └── DrugNameNormalizer.ts
│ │ ├── database/
│ │ │ ├── LocalDatabase.ts
│ │ │ └── FirestoreService.ts
│ │ └── notification/
│ │ └── NotificationService.ts
│ ├── navigation/ # Navigation yapılandırması
│ ├── context/ # Context providers
│ └── utils/ # Yardımcı fonksiyonlar
│ └── constants.ts # İlaç sınıfları ve ayarlar
├── package.json # Node.js bağımlılıkları
└── README.md # Bu dosya
Sorun: "Model bulunamadı" hatası alıyorsunuz.
Çözüm:
-
Detection modeli eğitildi mi?
# Kontrol edin dir ilacverisi\models\detection\best.pt # Windows ls ilacverisi/models/detection/best.pt # Linux/Mac
Eğer yoksa:
python src/train_detection.pyçalıştırın -
Classification modeli eğitildi mi?
# 12 sınıf için dir ilacverisi\models\classification\config.json # 150 sınıf için dir turkish_pill\models\classification\checkpoint-*
Eğer yoksa: İlgili eğitim scriptini çalıştırın
-
ONNX dosyaları assets klasöründe mi?
dir PharmaApp\android\app\src\main\assets\*.onnx
Eğer yoksa: Model dönüştürme adımlarını tekrar yapın
-
config.yaml dosyasındaki yollar doğru mu?
- Dosya yollarını kontrol edin
- Windows'ta
\kullanın, Linux/Mac'te/kullanın
Sorun: CUDA kullanılamıyor hatası.
Çözüm:
- CPU kullanmak için
config.yamldosyasında:detection: device: "cpu" classification: device: "cpu"
Sorun: Mobil uygulamada modeller yüklenmiyor.
Çözüm:
- ONNX dosyaları
assets/klasöründe mi? - Native modül doğru build edildi mi?
- Android Studio'da "Clean Project" yapın:
cd android ./gradlew clean ./gradlew assembleDebug
Sorun: Metro bundler başlamıyor.
Çözüm:
# Cache'i temizleyin
npm start --reset-cacheSorun: Android build başarısız oluyor.
Çözüm:
cd android
./gradlew clean
./gradlew --stop
cd ..
npm start --reset-cache
npm run androidSorun: Model ONNX formatına dönüştürülemiyor.
Çözüm:
-
PyTorch ve ONNX sürümlerini kontrol edin:
python -c "import torch; import onnx; print(f'PyTorch: {torch.__version__}, ONNX: {onnx.__version__}')" -
Model dosyalarının doğru yolda olduğundan emin olun:
- Detection:
ilacverisi/models/detection/best.pt - Classification (12):
ilacverisi/models/classification/ - Classification (150):
turkish_pill/models/classification/checkpoint-XXXXX/
- Detection:
-
onnxruntime kurulu mu kontrol edin:
pip install onnxruntime
-
Script'i tekrar çalıştırın:
# 12 sınıf için python src/convert_detection_to_onnx.py python src/convert_classification_to_onnx.py # 150 sınıf için python convert_to_onnx.py
-
Hata mesajını okuyun: Genellikle hangi dosyanın eksik olduğunu söyler
- Toplam Test Görüntüsü: 2,256
- Başarılı Tespit: 2,256 (%100)
- Genel Doğruluk: %99.82
- Ortalama Inference Süresi: ~150ms (GPU), ~2-3s (CPU)
- Mobil Inference Süresi: ~300-700ms (Android)
Sınıf Bazında Doğruluk:
- Aferin: %100
- Apranax: %100
- Arveles: %100
- Aspirin: %100
- Dolorex: %99.46
- Hametan Krem: %99.46
- Hametan Merhem: %100
- Majezik: %100
- Metpamid: %99.46
- Parol: %99.46
- Terbisil: %100
- Unisom: %100
- Toplam Test Görüntüsü: ~3,900
- Başarılı Tespit: %98+
- Genel Doğruluk: %85-90
- Ortalama Inference Süresi: ~200-400ms (GPU), ~3-5s (CPU)
- Mobil Inference Süresi: ~400-800ms (Android)
- Kapsam: 150 farklı Türk ilaç kategorisi
| Özellik | 12 Sınıf Modeli | 150 Sınıf Modeli | Birleştirilmiş Yaklaşım |
|---|---|---|---|
| Doğruluk | %99.82 | %85-90 | %90-95 (en yüksek güven skorlu) |
| Kapsam | 12 ilaç | 150 ilaç | 162 ilaç (12 + 150) |
| Inference | ~150ms | ~200-400ms | ~300-700ms (paralel) |
| Model Boyutu | ~330MB | ~330MB | ~660MB (toplam) |
| Kullanım | Yüksek doğruluk gereken durumlar | Geniş kapsam gereken durumlar | Her durum için optimal |
Adım 1: Keystore Oluşturma
keytool -genkey -v -keystore pharmaapp.keystore -alias pharmaapp -keyalg RSA -keysize 2048 -validity 10000Adım 2: Signing Config Ekleme
PharmaApp/android/app/build.gradle dosyasına ekleyin:
android {
...
signingConfigs {
release {
storeFile file('pharmaapp.keystore')
storePassword 'your-store-password'
keyAlias 'pharmaapp'
keyPassword 'your-key-password'
}
}
buildTypes {
release {
signingConfig signingConfigs.release
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}Adım 3: Release APK Oluşturma
cd PharmaApp\android
.\gradlew clean
.\gradlew assembleReleaseAPK dosyası: android/app/build/outputs/apk/release/app-release.apk
- Google Play Console'da yeni uygulama oluşturun
- APK veya AAB dosyasını yükleyin
- Uygulama bilgilerini doldurun
- İçerik derecelendirmesi yapın
- Yayınlayın
- Firebase Console'da production projesi oluşturun
google-services.jsondosyasını güncelleyin- Firestore security rules'u yapılandırın
- Firebase Storage rules'u yapılandırın
Bu proje eğitim ve araştırma amaçlı geliştirilmiştir.
- Model Eğitimi ve Optimizasyon
- Mobil Uygulama Geliştirme
- Sistem Mimarisi ve Entegrasyon
Sorularınız için issue açabilir veya proje yöneticisi ile iletişime geçebilirsiniz.
Kurulumunuzun tamamlandığını doğrulamak için bu kontrol listesini kullanın:
- Python 3.8+ kurulu
- Sanal ortam oluşturuldu ve aktif
- 12 sınıf modeli bağımlılıkları yüklendi
- 150 sınıf modeli bağımlılıkları yüklendi
- PyTorch kurulu ve çalışıyor
- CUDA çalışıyor (GPU kullanıyorsanız)
- 12-Class dataset indirildi ve
ilacverisi/SAP_BABA_CLEAN/klasörüne yerleştirildi - 150-Class dataset indirildi ve
turkish_pill/Mobile-Captured Pharmaceutical Medication Packages/klasörüne yerleştirildi - Veri seti yapıları doğru (klasör yapıları kontrol edildi)
- Detection modeli eğitildi (
models/detection/best.ptmevcut) - Görüntü kırpma yapıldı (
data/cropped/klasörü mevcut) - Classification modeli eğitildi (
models/classification/klasörü mevcut) - Detection modeli ONNX'e dönüştürüldü
- Classification modeli ONNX'e dönüştürüldü
- Veri seti hazırlandı (
data/train/,data/valid/,data/test/mevcut) - Classification modeli eğitildi (
models/classification/checkpoint-*mevcut) - Model ONNX'e dönüştürüldü (
classification_150_merged.onnxmevcut)
- Node.js 20+ kurulu
- npm modülleri yüklendi
- Android Studio kurulu
- Java JDK 17+ kurulu
- Android SDK kurulu
- ONNX dosyaları
PharmaApp/android/app/src/main/assets/klasöründe - Firebase yapılandırıldı (
google-services.jsonmevcut)
- Streamlit uygulaması çalışıyor (12 sınıf)
- Streamlit uygulaması çalışıyor (150 sınıf)
- Android uygulaması build ediliyor
- Android uygulaması çalışıyor ve modeller yükleniyor
Son Güncelleme: 2025-12-24








