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_envGLASS 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.