Görüntü verisinin doğası
Bir görüntünün sayısal temsilini, renk uzayı ile yeniden ölçekleme kararlarını ve eğitimle çıkarım arasında aynı kalmak zorunda olan önişleme sözleşmesini öğretir.
BU DERSİN SONUNDA
- Bir görüntü dosyasını şekil, veri tipi ve değer aralığı üçlüsüyle tanımlamak
- Renk uzayı ve kanal sırası kararını göreve göre gerekçelendirmek
- Yeniden ölçekleme yöntemini bilgi kaybına göre seçmek
- Eğitim ve çıkarım önişlemesini tek bir yazılı sözleşmede sabitlemek
- 1
Teori
Kavramın çalışma mantığı
- 2
Örnek
Gerçek bir senaryo üzerinde gösterim
- 3
Lab
Uygulamalı alıştırma
- 4
Test
Kısa ölçüm
- 5
Proje
Rotadaki projeye katkı
Kısa cevap
Bir görüntü, model açısından yükseklik × genişlik × kanal biçiminde bir sayı dizisidir. Modelin gördüğü şey fotoğraf değil, bu dizinin veri tipi, değer aralığı, kanal sırası ve renk uzayıdır. Bu dörtlü eğitimde ne ise çıkarımda da aynı olmak zorundadır; görü hattındaki en pahalı hatalar mimaride değil, bu sözleşmenin iki tarafta ayrışmasında doğar.
Teori: piksel bir ölçüm değil, bir kodlamadır#
Bir piksel değeri sahnedeki ışık miktarının doğrudan karşılığı değildir. Yaygın dosya biçimleri değerleri gamma kodlu bir uzayda saklar: insan gözünün karanlık tonlara duyarlılığı daha yüksek olduğu için bitler oraya kaydırılmıştır. Bunun pratik sonucu şudur: iki pikselin aritmetik ortalaması fiziksel bir ışık ortalaması değil, algısal bir ara değerdir. Ölçme amaçlı işlerde (parlaklık farkı, pozlama düzeltme) doğrusal uzaya geçmek gerekir; sınıflandırma ve tespitte ise ağın kendisi bu kodlamayı öğrendiği için genellikle olduğu gibi bırakılır.
Normalizasyon da aynı mantığın uzantısıdır. Ağın ilk katmanındaki ağırlıklar belirli bir girdi dağılımına göre kalibre olmuştur; 0–255 arası tam sayı yerine kanal bazlı ortalaması çıkarılmış ve standart sapmasına bölünmüş bir girdi beklerler. Yanlış istatistikle beslenen bir ağ çökmez, sessizce kötüleşir. Bu yüzden normalizasyon bir estetik tercih değil, ağırlıklarla birlikte taşınan bir sözleşme maddesidir.
Renk uzayları#
| Renk uzayı | Ayırdığı bilgi | Nerede işe yarar | Dikkat |
|---|---|---|---|
| RGB (sRGB) | Üç renk kanalı; parlaklık ile renk iç içedir | Önceden eğitilmiş omurgaların beklediği varsayılan giriş | Değerler gamma kodludur; kanal sırasının RGB mi BGR mi olduğu kütüphaneye göre değişir |
| Gri tonlama | Yalnızca parlaklık | Renk hiçbir sınıfı ayırmıyorsa bellek ve giriş katmanı maliyetini düşürür | Renkle ayrılan sınıflar birleşir; kayıp geri alınamaz |
| HSV / HSL | Renk tonunu doygunluk ve parlaklıktan ayırır | Eşikleme, renk tabanlı maskeleme, aydınlatma artırması | Ton dairesel bir eksendir; uçları komşudur, doğrudan ortalaması alınmaz |
| YCbCr | Parlaklığı renk farklarından ayırır | Sıkıştırma ve kodek hattı; kayıplı fotoğraf biçimleri bu uzayda çalışır | Renk kanalları alt örneklenmiş olabilir; ince renkli ayrıntı dosyada zaten kayıptır |
| Lab | Algısal olarak daha düzgün bir renk uzaklığı | Renk farkı ölçmek, renk düzeltmesi yapmak | Dönüşüm bir beyaz nokta varsayar; kaynak profili bilinmiyorsa sonuç kayar |
Çözünürlük ve yeniden ölçekleme#
Yeniden ölçekleme bilgi atma işidir; sorun atmak değil, neyi attığınızı bilmemektir. Küçültürken ince desenler örnekleme frekansının altına düştüğünde örtüşme (aliasing) oluşur: tuğla dokusu dalgalanmaya, ince metin okunmaz bir tarama desenine döner. En-boy oranını korumadan germek biçim bilgisini bozar; kenar dolgusu (letterbox) oranı korur ama etkin çözünürlüğü düşürür; kırpma çözünürlüğü korur ama kenardaki nesneyi kesebilir. Ölçekleme ile kırpmanın sırası bile çıktıyı değiştirir, bu yüzden sıra da yazılı olmalıdır.
- Küçültürken alan ortalaması veya kenar yumuşatmalı bir süzgeç kullanın; saf en yakın komşu ile küçültmek örtüşme üretir.
- Büyütürken bilineer makul bir varsayılandır; bikübik kenarı keskinleştirir ama yüksek karşıtlıklı kenarların iki yanında halka izi (ringing) bırakabilir.
- Etiket maskesi, sınıf kimliği haritası veya indeksli görüntüde her zaman en yakın komşu kullanın: ara değer var olmayan bir sınıf uydurur.
- En-boy oranı politikasını hedefin konumuna göre seçin; nesne çoğunlukla kenardaysa kırpma, ortadaysa dolgu daha az zarar verir.
- Aynı görüntüyü hattın iki farklı yerinde iki kez ölçeklemeyin; her ölçekleme bir yumuşatma katmanı ekler.
Karar: önişleme sözleşmesi#
- 1Kod çözme ve yönlendirme
Dosyayı hep aynı kütüphaneyle açın ve EXIF yön bilgisini ya açıkça uygulayın ya da açıkça yok sayın; ikisinin arasında kalmak, aynı görüntünün iki farklı yönde işlenmesi demektir.
- 2Renk sözleşmesi
Renk uzayını ve kanal sırasını hattın tek bir noktasında sabitleyin. Dönüşüm en başta yapılır; sonraki hiçbir adım kanal sırasını varsaymaz.
- 3Geometri
Hedef boyutu, en-boy oranı politikasını (kırp, doldur, ger), interpolasyonu ve ölçekleme-kırpma sırasını yazın.
- 4Sayısal aralık
Tam sayıdan kayan noktaya geçiş noktasını, bölme sabitini ve kanal bazlı ortalama-standart sapmayı kaydedin. Önceden eğitilmiş omurga kullanıyorsanız bu değerler omurganın eğitildiği değerlerle aynı olmalıdır.
- 5Tensör düzeni
Kanalın önde mi sonda mı olduğunu ve toplu iş boyutunun nereye eklendiğini belirtin; dışa aktarılan modelde bu düzen girdi imzasının parçasıdır.
from PIL import Image, ImageOps
import numpy as np
def kunye(yol):
"""Onisleme sozlesmesini denetlemek icin bir goruntunun kimlik bilgisi."""
with Image.open(yol) as ham:
exif_yonu = ham.getexif().get(274) # 274 = Orientation etiketi
im = ImageOps.exif_transpose(ham) # yonu ACIKCA uygula
dizi = np.asarray(im)
return {
"mod": im.mode, # RGB, L, CMYK, P ...
"sekil": dizi.shape, # (yukseklik, genislik, kanal)
"tip": str(dizi.dtype), # uint8 mi float32 mi
"aralik": (int(dizi.min()), int(dizi.max())),
"exif_yonu": exif_yonu,
}Sık yapılan hata#
Birinci sık hata, aynı dönüşümü hattın iki ayrı yerinde uygulamaktır: 0–255 aralığını hem kütüphanenin yükleyicisinde hem kendi kodunuzda bölmek ya da normalizasyonu iki kez geçirmek, girdiyi beklenen aralığın çok altına indirir ve hiçbir yerde hata vermez. İkinci hata, tam sayı aritmetiğini unutmaktır: uint8 bir dizide 255 üzerine 1 eklemek 0 verir, parlaklık artırma denemesi karanlık lekeler üretir. Üçüncüsü, artırma hattında her adımda kayıplı biçime geri kaydetmektir; bozulma birikir ve eğitim setinin istatistiği sessizce kayar. Ara adımları kayıpsız tutup yalnızca son yazımda kayıplıya inmek bu birikimi kesen en ucuz önlemdir.
LAB · UYGULAMALI ALIŞTIRMA
Kendi görüntü setiniz için önişleme sözleşmesi yazın
- 1Kendi arşivinizden en az 20 görüntü seçin; farklı kaynaklardan (telefon fotoğrafı, ekran görüntüsü, taranmış belge) karışık olsun.
- 2Yukarıdaki künye fonksiyonunu koşturup her dosya için mod, şekil, veri tipi, değer aralığı ve EXIF yönünü bir tabloya yazın; beklenmedik değerleri işaretleyin.
- 3Aynı görüntüyü hedef boyuta üç yolla küçültün: en yakın komşu, bilineer, alan ortalaması. Üç çıktıyı yan yana kaydedip ince desende (kumaş, tuğla, küçük metin) farkı gözleyin.
- 4Setin kanal bazlı ortalama ve standart sapmasını hesaplayın; kayan noktaya geçiş noktasını ve bölme sabitini not edin.
- 5Bütün kararları tek sayfalık bir sözleşme dosyasına yazın: kod çözücü, EXIF politikası, renk uzayı, kanal sırası, en-boy politikası, interpolasyon, normalizasyon, tensör düzeni.
Beklenen çıktı
Kendi setinizin künye tablosu ve eğitimle çıkarımda aynen uygulanacak, yazılı tek sayfalık bir önişleme sözleşmesi.
Sık sorulan sorular
Görüntüleri gri tonlamaya çevirmek eğitimi hızlandırır mı?
Kanal sayısı üçten bire indiğinde yalnızca ilk evrişim katmanının iş yükü düşer; toplam maliyetin büyük kısmı sonraki katmanlarda olduğu için kazanç sınırlı kalır. Asıl soru hız değil bilgidir: sınıflarınız renkle ayrılıyorsa gri tonlama geri alınamaz bir kayıptır. Önceden eğitilmiş bir omurga kullanıyorsanız girdisinin üç kanal beklediğini de hesaba katın.
Normalizasyon istatistiğini kendi setimden mi hesaplamalıyım?
Önceden eğitilmiş bir omurgayı dondurup üstüne baş takıyorsanız omurganın eğitildiği istatistiği kullanın; katman ağırlıkları o dağılıma göre kalibredir. Sıfırdan eğitiyorsanız kendi setinizin istatistiği doğru seçimdir. İkisini karıştırmak, yani önceden eğitilmiş ağırlığa kendi ortalamanızı vermek, sık görülen sessiz hatalardan biridir.
Etiket maskelerini de görüntülerle aynı biçimde saklayabilir miyim?
Hayır. Maske bir görüntü değil, sınıf kimliklerinden oluşan bir tam sayı haritasıdır; kayıplı sıkıştırma kimlikleri komşu değerlere kaydırır ve var olmayan sınıflar üretir. Maskeler kayıpsız saklanır, yeniden boyutlandırılırken en yakın komşu kullanılır ve hiçbir renk dönüşümünden geçirilmez.
LEARN
Computer Vision Engineer rotasına devam et
Dersler tek başına da okunabilir, ama sıralı ilerlemek önkoşul boşluklarını kapatır.
