Fotoğrafın görünen yönü ile piksel dizisi ayrılabilir
Kalite kontrol ekranında nesne dik duruyor, fakat üzerine çizilen kutu yan tarafta kalıyor. Model yanlış nesneyi bulmuş olabilir. Başka bir olasılık da kutunun ham piksel dizisine, ekranın ise yön bilgisi uygulanmış görüntüye dayanmasıdır. Aynı dosyayı kullanmak, aynı koordinat düzleminde çalışıldığı anlamına gelmez.
Bu uygulamada EXIF yön değeri 6 olan sentetik bir dosyayı ele alacağız. Ham piksel alanı 400 × 300, görüntüye yön bilgisi uygulandıktan sonraki alan 300 × 400 boyutundadır. Bu yön için işlem saat yönünde 90 derece döndürmedir. Pillow ImageOps.exif_transpose, yön bilgisine göre pikselleri dönüştürür ve bu bilgiyi kaldırır; böylece sonraki okuyucunun aynı dönüşümü yeniden uygulaması önlenir.Kaynak: Pillow — ImageOps.exif_transpose
Dosyanın bir fotoğraf makinesinden gelmesi gerekmez. Test için tek renkli zemin ve renkli bir dikdörtgen yeterlidir. Burada sınıf tahmini veya gerçek üretim başarısı ölçülmüyor. Kontrol edilen şey, aynı nesnenin ham dosya ve normalize kopyada doğru yerde bulunmasıdır. Bu küçük geometrik sınama, model performansından önce yapılabilir.
Kutuyu hangi kenarlarla tarif ediyoruz?
Kutumuz [x1, y1, x2, y2] biçimindedir. Başlangıç sol üsttedir; x sağa, y aşağı büyür. Sayılar sürekli kenar koordinatlarını gösterir. Ham düzlemin sağ kenarı x=400, alt kenarı y=300 olur. Tek tek piksel merkezlerini sıfırdan indislemek farklı bir sözleşmedir; orada son indisler 399 ve 299 olur. Bu iki tanımı aynı formülde karıştırmayın.
| Alan | Değer | Anlam |
|---|---|---|
| Boyut | 400 × 300 | Genişlik × yükseklik |
| EXIF yön | 6 | Görüntüye saat yönünde 90 derece dönüşüm |
| Kutu | [40, 50, 140, 110] | Sürekli kenarlar, ham piksel düzlemi |
| Kutu boyutu | 100 × 60 | Alan 6.000 kare piksel |
Yön dönüşümünde kutunun yalnız sol üst köşesini taşımak yetmez. Eski sol üst köşe, yeni düzlemde sol üst köşe olarak kalmayabilir. Dört köşeyi dönüştürüp yeni x ve y değerlerinin en küçükleriyle en büyüklerini almak güvenilir bir yöntemdir. Eksenleri değiştirirken genişlik ve yüksekliğin yer değiştirmesini de bekleriz.
Dört köşeyi taşıyıp sınırları yeniden bulun
Ham yükseklik H=300 olsun. Saat yönünde dönüşümde bir kenar noktası için x′=H−y, y′=x kullanılır. Sol üst köşe (40,50) böylece (250,40) noktasına gelir; bu nokta yeni kutunun sağ üstüdür. Aynı işlem diğer köşelere uygulandığında yeni kutunun sol sınırını eski alt kenar belirler.
| Ham köşe | Görüntü köşesi |
|---|---|
| (40, 50) | (250, 40) |
| (140, 50) | (250, 140) |
| (40, 110) | (190, 40) |
| (140, 110) | (190, 140) |
Normalize görüntü: 300 × 400 Yeni kutu: [190, 40, 250, 140] Yeni genişlik: 60; yeni yükseklik: 100 Alan: 6.000; ham kutunun alanıyla aynı.
Alan eşitliği yararlı ama tek başına yetersiz bir kontroldür. Aynı boyuttaki kutuyu yanlış yere de koyabilirsiniz. Bu nedenle ters dönüşümü de yapın: x=y′ ve y=H−x′. Dönüştürülmüş dört köşeyi geri taşıyınca başlangıçtaki dört köşe kümesini bulmanız gerekir. Ek olarak yeni kutu 300 × 400 sınırlarının içinde kalmalıdır.
Yönü bir kez uygulayan dosya akışı
Önce ham dosyanın piksel boyutunu ve EXIF yönünü kaydedin. Ardından pikselleri yön bilgisine göre normalize ederek ayrı bir kopya oluşturun. Yeni dosyanın boyutunu tekrar okuyun ve eski yön değerinin taşınmadığını denetleyin. Sadece EXIF alanını silip pikselleri döndürmemek farklı bir işlemdir; bu örnekte görüntüyü yanlış yönde bırakır.
Sentetik görüntü ham 400x300, EXIF Orientation=6. Kutu sürekli kenar xyxy biçiminde [40,50,140,110]. Ham dosya ile normalize dosyayı ayrı kaydet. Piksellere yönü bir kez uygula, eski yön alanını normalize dosyaya taşıma. Dört kutu köşesini x'=300-y, y'=x ile dönüştür. Yeni boyutu, min/max sınırlarını, alanı ve ters dönüşümü raporla. Piksel merkezi indisleriyle kenar koordinatlarını karıştırma. Dosyanın görüntülenmesini model başarısı diye yorumlama.
Beklenen dosya kanıtı, ham dosyada 400 × 300 ve yön 6; normalize kopyada 300 × 400 ve kaldırılmış yön alanıdır. Renkli dikdörtgenin yeni yerde görünmesi ayrıca kontrol edilir. Boyut ve etiket denetimi yalnız dosyanın yapısını, görsel kontrol ise piksel yerleşimini doğrular. Bu iki kanıtı ayrı kaydetmek hangi aşamada sorun bulunduğunu gösterir.
Kutular görüntü normalize edildikten sonra model tarafından üretiliyorsa aynı dönüşümü yeniden uygulamayın. O kutular zaten yeni düzlemde olabilir. Kayıtta image_space gibi açık bir alan tutmak, “bu sayılar ham dosyaya mı, normalize görüntüye mi ait?” sorusunu cevaplar. Alan adının varlığı yetmez; görüntü sürümü ve boyutlarıyla birlikte doğrulanması gerekir.
Yanlış sonucu tanıyabileceğiniz üç belirti
İlk belirti, görüntünün 300 × 400 olmasına rağmen kutu sınırlarının hâlâ [40,50,140,110] kalmasıdır. İkincisi, doğru dönmüş kopyaya yön 6 etiketinin yeniden eklenmesi ve yönü okuyan bir görüntüleyicide ikinci kez dönmesidir. Üçüncüsü ise kenar formülüne gereksiz −1 eklenmesiyle bütün kutunun bir piksel kaymasıdır.
Bunların her biri farklı düzeltme gerektirir. İlkinde kutu düzlemi, ikincisinde dosya metaverisi, üçüncüsünde koordinat tanımı onarılır. Kutuyu ekranda elle sürükleyerek hizalamak bu nedenleri görünmez kılar. Denetim kaydında yalnız son görünümü değil, kullanılan ham boyutu, dönüşüm kuralını ve kaynak kutuyu da saklayın.
Tam görüntü ve küçük köşe kutusu
Önce [0,0,400,300] kutusunu dönüştürün. Sonra ham düzlemdeki [0,0,20,10] kutusunu taşıyın. İlk vaka boyutları, ikinci vaka yönü sınar. Cevaplara bakmadan iki kutunun normalize görüntünün hangi kısmında bulunacağını çizmek, yalnız formüle sayı koymaktan daha iyi bir kontrol sağlar.
Tam görüntü → [0,0,300,400]. Küçük kutu → [290,0,300,20]; yeni görüntünün sağ üstündedir. Küçük kutunun alanı 200 olarak kalır. Ters dönüşüm iki başlangıç kutusunu da geri verir.
Bu tek yön örneğinden bütün EXIF durumlarının aynı formülle çözüldüğü sonucunu çıkarmayın. Aynalama içeren yönler farklı dönüşümler gerektirir. Kendi akışınızda karşılaşılan her yön değerini ayrı dosyayla sınayıp kutu düzlemini açıkça tanımladığınızda, sonraki model değerlendirmesi daha anlamlı hale gelir.
Kaynaklar ve doğrulama
- Pillow — ImageOps.exif_transpose
EXIF yönüne göre görüntüyü dönüştürüp yön bilgisini kaldırma.
Erişim ve kontrol:
Üretimde Yapay Zekâ
Görsel kalite akışınız için Üretimde Yapay Zekâ programına yön bilgisi, görüntü boyutu ve kutu kayıtlarını içeren küçük bir deneme setiyle başlayabilirsiniz.
- Kuruma özel planlanır