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.

Ham kayıt
AlanDeğerAnlam
Boyut400 × 300Genişlik × yükseklik
EXIF yön6Gö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 boyutu100 × 60Alan 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.

400 × 300 ham alandaki kutu ile saat yönünde döndürülmüş 300 × 400 alandaki aynı kutunun konumu.
Özgün sentetik geometri: çizim sürekli kenar koordinatlarını kullanır; fotoğraf ve model çıktısı değildir.

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.

Köşelerin bağımsız izi
Ham köşeGörüntü köşesi
(40, 50)(250, 40)
(140, 50)(250, 140)
(40, 110)(190, 40)
(140, 110)(190, 140)
Elle hesaplanmış beklenen geometri
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.

Kopyalanabilir kontrol istemi
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.

Alıştırmanın yanıtı
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

İlgili okumalar

Ü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