GLASS ile MVTec veri seti Anomali Tespiti

GLASS ile MVTec veri seti Anomali Tespiti

MVTec AD veri setini kullanarak GLASS (Gradient Ascent ile Anomali Sentezi Stratejisi) yöntemiyle anomali tespiti gerçekleştirmek için aşağıdaki adımları izleyebilirsiniz:

1. Ortamın Hazırlanması:

  • Python Sürümü: Python 3.9.15
  • Gerekli Kütüphaneler: PyTorch ve diğer bağımlılıklar

2. GLASS Deposu ve Veri Setlerinin İndirilmesi:

  • GLASS’ın resmi GitHub deposunu klonlayın:

git clone https://github.com/cqylunlun/glass
cd glass

  • MVTec AD veri setini indirin ve uygun bir dizine yerleştirin.

3. Ortamın Kurulumu:

  • Yeni bir conda ortamı oluşturun ve etkinleştirin:

conda create -n glass_env python=3.9.15
conda activate glass_env

GLASS kütüphanesini yüklediğiniz yere gidin. Ben Masaüstüme yükledim:

cd ~/Desktop/glass_project/glass/

  • Gerekli Python paketlerini yükleyin:

pip install -r requirements.txt

4. Veri Setinin Hazırlanması:

  • MVTec AD veri setini indirin ve ./datasets dizinine yerleştirin. Veri seti yapısı aşağıdaki gibi olmalıdır: Bu adım önemlidir.

./datasets/mvtec
├── bottle
├── cable
├── capsule
└── …

5. Deneylerin Çalıştırılması:

  • ./shell/run-mvtec.sh dosyasını açın ve aşağıdaki parametreleri kendi sisteminize göre düzenleyin:
  • –datapath: MVTec AD veri setinin yolu
  • –augpath: Veri artırma için kullanılacak yol
  • –classes: Çalıştırmak istediğiniz sınıflar
  • Eğitim ve test modları arasında geçiş yapmak için –test parametresini ‘ckpt’ (eğitim) veya ‘test’ (test) olarak ayarlayın.
  • Deneyi başlatmak için:

bash shell/run-mvtec.sh

6. Sonuçların İncelenmesi:

  • Eğitim ve test sonuçları ./results dizininde saklanacaktır.

Ayrıca aşağıdaki modüller gerekecektir.

pip install imgaug

pip install openpyxl

Açık dosya sayısını arttırın yoksa hata alacaksınız:

ulimit -n 65536

echo “ulimit -n 65536” >> ~/.bashrc
source ~/.bashrc

Mac İçin Özel Ayarlar:

MacOS’ta açık dosya sınırını artırmak için sistem ayarlarını düzenlemeniz gerekebilir:

  • 1. /etc/sysctl.conf dosyasını düzenleyin (yoksa oluşturun):

sudo nano /etc/sysctl.conf

  • 2. Aşağıdaki satırları ekleyin:

kern.maxfiles=65536
kern.maxfilesperproc=65536

  • 3. Değişiklikleri uygulayın:

sudo sysctl -w kern.maxfiles=65536
sudo sysctl -w kern.maxfilesperproc=65536

  • 4. /etc/launchd.conf dosyasını düzenleyin (yoksa oluşturun):

sudo nano /etc/launchd.conf

  • 5. Aşağıdaki satırı ekleyin:

limit maxfiles 65536 65536

  • 6. Sistemi yeniden başlatın.

Eğitim ve test sonuçlarını incelemek için GLASS projesinin ./results dizininde oluşturduğu dosyaları ve görselleri analiz edebilirsiniz. Aşağıda sonuçların incelenmesi için detaylı bir rehber verilmiştir:

7. Sonuç Dosyalarının Konumu

  • Eğitim ve test süreçleri tamamlandıktan sonra sonuçlar ./results dizininde saklanır.
  • Dosya yapısı genellikle şu şekildedir:

./results/

├── experiment_name/

│   ├── logs/

│   ├── models/

│   ├── metrics.json

│   ├── visualizations/

│   └── test_results/

2. Sonuç Dosyalarını Anlama

  • metrics.json: Eğitim ve test sırasında elde edilen metrikler (örneğin, Precision, Recall, F1-Score) JSON formatında saklanır.
  • Bu dosyayı incelemek için:

cat ./results/experiment_name/metrics.json

  • Python kullanarak daha okunabilir bir biçimde incelemek için:

import json

with open(‘./results/experiment_name/metrics.json’) as f:

    metrics = json.load(f)

print(metrics)

  • logs/: Eğitim sırasında oluşturulan detaylı log dosyalarını içerir. Eğitim süreci sırasında hangi adımların uygulandığını anlamak için kullanılır.

cat ./results/experiment_name/logs/train.log

  • models/: Eğitim sırasında kaydedilen model ağırlıklarını içerir. Bu dosyaları kullanarak daha sonra modeli yükleyip test edebilirsiniz.
  • visualizations/: Anomalilerin görselleştirildiği ve işaretlendiği görüntüleri içerir. Görselleri açarak hangi örneklerin anomal olarak sınıflandırıldığını görselleştirebilirsiniz.

open ./results/experiment_name/visualizations/anomaly1.png

  • test_results/: Test veri seti üzerindeki tahmin sonuçlarını içerir. Bu dosyalarda hangi örneklerin anormal olarak sınıflandırıldığını bulabilirsiniz.

3. Sonuçları Görselleştirme

Elde edilen sonuçları görselleştirmek için matplotlib veya başka bir kütüphane kullanabilirsiniz.

  • Anomali Görsellerini İncelemek

Anomalilere ait görseller visualizations/ dizininde yer alır. Bu görselleri Python ile görselleştirmek için:

import matplotlib.pyplot as plt

import cv2

# Örnek bir anomal görselini yükleme

image_path = ‘./results/experiment_name/visualizations/anomaly1.png’

image = cv2.imread(image_path)

# Görseli göster

plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))

plt.axis(‘off’)

plt.title(‘Anomaly Example’)

plt.show()

Metriklerin İncelenmesi

Elde edilen metrikleri analiz etmek için şu yöntemi kullanabilirsiniz:

import matplotlib.pyplot as plt

# Örnek metrikler

metrics = {

    “Precision”: 0.85,

    “Recall”: 0.90,

    “F1-Score”: 0.87

}

# Bar grafiği ile metrik görselleştirme

plt.bar(metrics.keys(), metrics.values())

plt.title(‘Model Performance Metrics’)

plt.xlabel(‘Metric’)

plt.ylabel(‘Score’)

plt.ylim(0, 1)

plt.show()

4. Sonuçları Raporlama

Sonuçları raporlamak için elde edilen görselleri ve metrikleri birleştirerek bir rapor oluşturabilirsiniz:

  • Precision, Recall ve F1-Score: Metriklerinizi analiz ederek modelin doğruluk oranını değerlendirin.
  • Anomali Görselleri: Görselleri gözden geçirerek modelin doğru sınıflandırmalar yapıp yapmadığını kontrol edin.
  • Loglar: Eğitim sırasında ortaya çıkan potansiyel sorunları analiz etmek için logs/ dosyalarını inceleyin.

5. Ek Adım: TensorBoard ile Analiz

Eğitim ve test süreçlerini daha görsel bir şekilde incelemek için TensorBoard kullanabilirsiniz:

tensorboard –logdir ./results/experiment_name/logs/

Tarayıcınızda http://localhost:6006 adresine giderek metrikleri ve süreçleri inceleyebilirsiniz.

Elde edilen tüm sonuçları bu şekilde detaylıca analiz edebilir, performansı ölçebilir ve iyileştirme adımları planlayabilirsiniz.

24.11.2024
43
Ziyaretçi Yorumları

Henüz yorum yapılmamış. İlk yorumu aşağıdaki form aracılığıyla siz yapabilirsiniz.