‫Şimdi bir görüntünün neye benzediğini, yoğun formunu gördük.
‫Buradaki adımları gerçekleştirecek olan bu küçük fonksiyonu oluşturalım.
‫Aşağıda görebilmemiz için bunları kopyalayabiliriz.
‫Ve buraya sadece küçük bir hücre yazacağım.
‫Şimdi, bir görüntünün tensör olarak neye benzediğini gördük.
‫Bunları önceden işlemek için bir fonksiyon yapalım.
‫Tamamdır.
‫Yapabileceğimiz şey burada görüntü boyutu 224 değişkenini tanımlamaktır ve merak ediyor olabilirsiniz.
‫Açıklanmayan böyle şeyler gördüğümde hep yaptığım gibi.
‫224 nedir?
‫Nereden buldum bunu?
‫Bunu daha sonraki bir videoda, kullanabileceğimiz bir makine öğrenimi modeli seçtiğimizde göreceğiz.
‫Dolayısıyla makine öğreniminin büyük bir kısmı, girdilerinizin boyutunu veya girdilerinizin şeklini, bizim durumumuzda
‫görüntüleri, kullandığınız modelle uyumlu hale getirmektir.
‫Bu konuyu daha sonra tekrar ele alacağız.
‫Ancak esasen, bir makine öğrenimi modeline beslediğimiz görüntülerimizin bu şekilden
‫çıktığından emin oluyoruz, yani 24 yüksekliğe 24 genişliğe, çünkü kullanacağımız makine öğrenimi modeli aynı şekildeki
‫görüntüler üzerinde eğitilmiştir, tahminler yapmaya çalışırken makine öğrenimi modelinize eğitildiği
‫gibi aynı formatta ve şekilde veri beslemenin ne kadar önemli olduğunu hatırlayın.
‫Ama bunu daha sonra pratikte göreceğiz.
‫Ama bu fonksiyonu düzeltelim.
‫Bu yüzden görüntüleri ön işleme için bir fonksiyon oluşturun.
‫Bu yüzden buna güzel ve basit bir işlem görüntüsü diyeceğim.
‫Girdi olarak bir görüntü yolu alacaktır.
‫Ve.
‫Küçük docstring bir görüntü dosyası yolunu etiketleyebilir ve görüntüyü bir tensöre dönüştürür.
‫Bunun gibi basit bir şey.
‫Bunu daha sonra biraz daha sezgisel hale getirebiliriz, ancak başlangıçta bu kendimiz için yeterli
‫bir açıklamadır.
‫Bu yüzden bir resim dosyasını okumak istiyoruz ve bunu yapmak için onu image adlı bir değişkene kaydedeceğiz.
‫Ve şimdi yükleme görüntülerini okursak, bunu diğer veri türleri için de yapabilirsiniz, değil mi?
‫Orada metin verileri var.
‫Pandas, dataframe, numpy, csv var.
‫Ancak burayı okuduğumuzda, giriş, çıkış, okuma, dosya için IO'ya gidebileceğimizi görüyoruz.
‫İşte oldu.
‫Ne diyor?
‫Girdi dosyası adının tüm içeriğini okur ve çıktısını verir.
‫Bu mantıklı.
‫Dize türünde bir tensör döndürür.
‫Çok güzel.
‫Görüntü yolu yapalım, ama benim sözüme güvenmeyin.
‫Yapacağımız şey şu ve bu uygulamayı sizin de benimsemenizi istiyorum.
‫Ne işe yaradığından tam olarak emin olmadığınız bir fonksiyon görürseniz.
‫Satır satır yeniden yaz.
‫Şunu bir kontrol edelim.
‫Tensor equals t io read, read, file diyeceğiz ve sonra bir görüntü yoluna ihtiyacımız var.
‫Bu yüzden dosya isimleri yapacağız.
‫26 yaşındayım, o yüzden dosya isimleri alacağız.
‫26.
‫Peki bu neye benziyor?
‫Oh.
‫Yani bir ip şeklinde.
‫Ve sonra bir sürü karakteri anlamıyorum, ama bu sorun değil çünkü bilgisayar onları
‫benden daha iyi anlıyor.
‫Yani yaptığı şey sadece dosya adını almak ve içeriğini dönüştürmek.
‫Bu uzun, gergin.
‫Harika.
‫Bir sonraki adımda, dosyayı okumak için TensorFlow'u kullanın.
‫Resme kaydedin.
‫Evet.
‫Resmimizi bir jpeg zamanlara dönüştürün.
‫Tamam, yapalım o zaman.
‫JPEG görüntüsünü üç renk kanalı ile sayısal tensöre dönüştürün.
‫Kırmızı yağmur.
‫Mavi.
‫Ve yine, yükleme görüntüleri belgelerine göz atın.
‫Yani bu değişkeni burada tekrar kullanıyoruz.
‫Şimdi bunu b tf'ye sıfırlayacağız.
‫Görüntü nokta kod çözme.
‫Burada nasıl bazı seçeneklerimiz olduğunu görün.
‫Görüntü dosyası türü olan PNG'miz var.
‫Resimlerimiz JPEG görüntüsünde olduğu için JPEG kullanacağız ve ardından değişkeni ileteceğiz.
‫Kanallar.
‫Atta kanalları, kodu çözülen görüntü için istenen renk kanalı sayısını gösterir.
‫Bizim durumumuzda, üç, dört, kırmızı, yeşil ve mavi istiyoruz.
‫Çok güzel.
‫Şimdi, tekrar, bunun tam olarak ne yaptığını kontrol etmek istersek.
‫Tensörü alalım ve tf dot image decode'a gidelim.
‫JPEG.
‫Tensörü alacağız ve sonra gideceğiz.
‫Kanallar eşittir üç.
‫Oh, şuna bak.
‫Ellerinde bizim burada sahip olduğumuz verilerle tamamen aynı türden veriler var.
‫Harika.
‫Tamam.
‫Şimdi, zamandan tasarruf etmek için bu fonksiyona birkaç satır daha yazacağız,
‫ancak benzer adımlardan geçmeyeceğiz.
‫Ben de bunu istiyorum.
‫Biraz pratik yapmanı istiyorum.
‫Eğer bir fonksiyon görürseniz ve ne işe yaradığını merak ediyorsanız.
‫Satır satır yazmayı deneyin ve ne olacağını görün.
‫Bu yüzden bu çizgilerin ne işe yaradığı konusunda bana güvenmeniz gerekecek.
‫Bu yüzden renk kanalı değerini dönüştürün.
‫Yani buna normalleştirme denir.
‫Önce kodu yazacağım ve sonra size 0'dan 2'ye, 55'ten 0'a ve bire kadar olan değerleri anlatacağım.
‫Bu yüzden görüntü eşittir TF'yi görüntüye dönüştürmek istiyoruz görüntü d türü görüntü tf float 32.
‫Şimdi burada doküman dizisi ne diyor?
‫Gerekirse değerlerini ölçeklendirerek görüntüyü d tipine dönüştürün.
‫Kayan nokta değerleri kullanılarak temsil edilen görüntülerin sıfır bir aralığında değerlere sahip olması
‫beklenir.
‫Harika.
‫Şimdi nasıl diye düşünüyor olabilirsiniz.
‫Bunu nereden biliyorsun, Daniel?
‫Sıfırdan 55'e ve sıfır ile bir arasına dönüştürmeniz gerektiğini nereden biliyorsunuz?
‫Aslında, yalan söyledim.
‫Buna bakmayacağımızı söylemiştim ama bu araştırılması gereken iyi bir konu.
‫Görebilmeniz için gerginleştirin, sıfır ile 255 arasında değerlerimiz var ve şimdi.
‫Bunu çalıştıracağım.
‫Oh, hayır, aslında burada kendimi mahvetmek istemiyorum.
‫Bunu tekrar çalıştır.
‫Bu yüzden sadece bunun ne yaptığını göstermek istiyorum.
‫Yani görüntü dönüştürme.
‫Yani temelde yaptığı tek şey değerlerimizi dönüştürmektir, sıfır ile 255 arasında olmak yerine onları ölçeklendirir.
‫Artık aynı ölçekte sıfır ile bir arasındadırlar.
‫Float 32.
‫Oh.
‫Freefloat 32.
‫Harika.
‫Yani aynı şekle sahibiz.
‫Ancak şimdi sıfır ile iki veya 55 arasında olmak yerine, sıfır ile bir arasındalar.
‫Ve şimdi bu tür bir süreç, bunlar üzerinde hesaplamayı daha verimli hale getiriyor.
‫Bilmeniz gereken en fazla şey bu.
‫Buna normalleştirme deniyor.
‫Ve yine, bu doğrudan resim yükleme belgelerinden alınmıştır.
‫Şimdi, ne yapmamız gerekiyor?
‫Aslında burada bunun için bir adımımız olduğunu sanmıyorum.
‫Görüntümüzü normalleştirmek için renk kanalı değerlerini 0 ila 255'ten 0 ila 1'e dönüştürmemiz gerekebilir.
‫Beş olsun.
‫Altı.
‫Tamam.
‫Şimdi, son olarak, görüntüyü yeniden boyutlandırabiliriz.
‫Şimdiye kadar bana ve bu hattın ne yapacağına güvendiğinize inanıyorum.
‫Bu yüzden bunu yazmayacağız.
‫Bunu 24'e kadar size bırakıyorum.
‫24'e.
‫Yani temelde bir kare.
‫Aynen öyle.
‫Aslında bir kare.
‫Görüntü yeniden boyutlandırılır.
‫Görüntüleri belirtilen yöntemi kullanarak yeniden boyutlandırır.
‫Ve şimdi görüntüyü yeniden boyutlandırmak istiyoruz ve boyut yükseklik olacak.
‫Bekle.
‫Şimdi bunu neden burada tanımladığımızı anlıyorsunuz.
‫Belki bu fonksiyonu biraz daha iyi yazsaydık, resim boyutunu resim boyutu olarak girebilirdik.
‫Bu muhtemelen biraz daha iyi.
‫Harika.
‫Ve şimdi kendi fonksiyonlarınızı yazmaya başladığınızda bu tür bir alıştırma yapacaksınız.
‫İlk kez bir fonksiyon yazdığınızda, muhtemelen oldukça kötü, oldukça berbat olacaksınız.
‫Ancak daha sonra iş akışınızın ne olduğunu anlamaya başladığınızda, nasıl daha iyi bir fonksiyon yazacağınızı da anlamaya
‫başlayacaksınız.
‫Şimdi görüntüyü döndürebiliriz.
‫Peki bu ne işe yarıyor?
‫Az önce söylediğimiz şeyi tam olarak yaptı mı?
‫Bir görüntü yolu ve bir görüntü boyutu alır.
‫Bunu burada tanımlayabiliriz.
‫Görüntü dosyasını güzel yol adından okur.
‫JPEG'i sayısal tensöre dönüştürür.
‫Bu yüzden onu kırmızı, yeşil ve mavi olmak üzere üç renk kanalına sahip bir tensöre dönüştürüyoruz, çünkü çoğu
‫derin öğrenme görüntü modeli için kullanılan kural budur.
‫Kırmızı istiyorlar.
‫Oku dedim.
‫Bu kötü bir şey değil.
‫Okumak harika bir şeydir.
‫Daha sonra renk kanallarını 0 ila 55 ila 0 ila 1 değerlerine dönüştürdük ve son olarak görüntüyü istediğimiz değere yeniden boyutlandırdık.
‫Şimdi bunu bir fonksiyon içinde yazdık, bu yüzden güzel olan şey bunu daha sonra kullanabilmemiz.
‫Eskiden yaptığım şey buydu, değil mi?
‫Eskiden bir görüntüyü her işlemek istediğimde bu kod satırlarından geçerdim, korkunç bir iş akışı, bu yüzden bunları
‫gerçekten kaldırabiliriz.
‫Unutmayın, fonksiyonun gerçekte ne yaptığını kontrol etmek istiyorsanız, onu satır satır parçalayın.
‫Girdi olarak bir görüntü yolu alır ve ardından geri kalanının ne yaptığını görür.
‫Sanırım bu video için bu kadar yeter.
‫Fonksiyonumuzu oluşturduk ve bazı görüntüleri işlemeye hazırız.
‫Şimdi yapabileceğimiz şey, yine, TensorFlow'daki yükleme verilerini okuyacak olursak, sanırım
‫bu.
‫Evet, buradan.
‫Burada TensorFlow'un olayları yığınlar şeklinde görmeyi sevdiğine dair küçük bir bölüm var.
‫Bu yüzden bir sonraki videoda hangi partilerin olduğunu bulacağız.