OneNote ile Efor Sarf Etmeden Görüntülerinizde Arama Yapın!

“Bir sürü ekran görüntüsü almıştım acaba hangisinde şu an aradığım şey? Ne kadar geçmişe bakmalıyım? Aceleden yanına açıklama da yazamadım, nasıl bulacağım ki? Sayfa da gözümün önünde sanki..” Hepimizin aklından bir sefer bile geçmiştir bu özellik olmalı diye! Özellikle görüntüleri arşivlemek, yeni görüntüler geldiğinde eski düzene uygun şekilde yerleştirmek hayatın hızlı akışında gittikçe zorlaşıyor. Böyle bir durum için çözüm: OneNote.

Peki OneNote bunu nasıl başarıyor? Bir başka yazımızda OneNote’daki resimlerden metni almayı anlatmıştık. Orada da bahsettiğimiz üzere, OneNote’da Optik Karakter Tanıma (OCR) adlı bir özellik kullanılıyor. OCR teknolojisi; PDF, dijital ortamda bulunan taranmış evraklar veya dijital görüntü gibi belge türlerini aranabilir ve düzenlenebilir verilere dönüştürülmesine olanak sağlayan bir teknolojidir. Artık günümüzde de çoğu bilginin yazmak yerine mümkünse PDF’i, ekran görüntüsünün alınması, fotoğrafının çekilmesi gibi durumlar mevcut olduğu ileriki safhalarda bilgi yoğunluğunun artmasından doğan bir arşivleme problemi ortaya çıkıyor. OneNote da sistemine OCR teknolojisini entegre ederek bu durumdan kullanıcılarını koruma altına alıyor. Gelin birlikte deneyelim.

Bir sayfanın ekran görüntüsünü alıp OneNote’a yapıştıralım.

Aşağıdaki kırmızı çerçeveye aldığım “dijital” yazısını aratalım. Başlığa göre daha küçük ve OneNote’da çıplak gözle okumaya kalktığımızda okunması oldukça zor olduğu için bunu tercih ettim.

CTRL+E veya sağ tarafta sayfaları gösteren alanın hemen üstündeki alana görüntü üzerindeki herhangi bir alanı yazalım.

Bakın, demiyorum ki şu şu özellik. Yalnızca görüntüyü alıp OneNote’unuza yapıştırıyorsunuz. Bu kadar kullanıcı dostu bir çözüm. OneNote’un bu özelliğinden fiş, fatura vs. kullanmak için de yararlanabilirsiniz yani aslında aklınıza gelebilecek ve fotoğraflanabilecek her türlü görüntüde. Yalnız burada bir küçük handikaptan bahsedebiliriz. Alınan görüntünün kalitesi, netliği, keskinliği OneNote tarafında çözümlenmesini etkileyecektir. Buna dikkat etmenizde fayda olacaktır.

 

Başka bir makalede görüşmek dileğiyle, hoşçakalın.

Microsoft Cognitive Toolkit ( CNTK ) FastRCNN-BrainScript ile Görüntü İşleme

Bu yazımızda Microsoft’un açık kaynaklı derin öğrenme kütüphanesi olan daha önceki yazılarımızda incelediğimiz Cognitive Toolkit (CNTK) ile Microsoft’un kullanıcıların daha iyi gözlemlemesi için yayınladığı örneklerden bir tanesi olan ve tanıttığımız resimdeki objeleri algılamamızı sağlayan FastRCNN algoritmasını adım adım birlikte hayata geçireceğiz.

Azure Data Science Virtual Machine

Microsoft’un bulut sistemi olan Azure platformunda bilimsel çalışmalar yapabilmek adına geliştirilmiş ve ihtiyacımız olan bir çok yapının önceden kullanıma hazır bir şekilde bulundurduğu sana makinesidir. Adımları yapılandıracak donanımlara sahip değilseniz veya bulut üzerinde çalışmak istiyorsanız. https://azure.microsoft.com/tr-tr/ adresi üzerinden Azure hesabı oluşturup, aşağıdaki ekran görüntülerini sırasıyla takip ederek bu yazıdaki demoyu hayata geçirmek için gerekli sanal makineyi oluşturabilirsiniz.

1-) Azure hesabınıza giriş yaptıktan sonra karşımıza çıkan gösterge panelinden gösterilen adımları takip ediniz.

2-) Sonraki adım olarak aşağıdaki ekran görüntüsü yardımıyla bir sonraki adıma geçiniz.

3-)Ardından karşımıza çıkan sayfada dikkat etmeniz gereken nokta Kullanıcı Adı ve Şifreyi bağlantı sırasında kullanacağımız için bir yere mutlaka not etmeniz.

4-) Demo için bizim kullandığımız sanal makine özellikleri aşağıda gösterildiği gibidir ihtiyacınız doğrultusunda farklı donanımlara sahip olan sanal makineleri tercih edebilirsiniz.

5-) Bu kısım sanal makinemizi ayrıntılı bir şekilde özelleştirmemiz için gerekli seçeneklerin bulunduğu yerdir. Demo özelinde böyle ayrıntılara ihtiyaç duymadığımız için tamam dedikten sonra sanal makinemizi oluşturabiliriz.

6-) Bu işlemleri tamamladıktan sonra kaynaklarım kısmında ismini verdiğimiz sanal makinemizi görebiliriz.

7-) Sanal makinemizin üzerine tıkladıktan sonra karşımıza çıkan göster panelinde önce başlat butonu ile sanal makinemizi hazırladıktan sonra, bağlan butonuna tıklayınız. Uzaktan bağlantı kurabilmek için çok hızlı bir şekilde .rdp uzantılı bir dosya indirecektir. İndirilen dosyayı çalıştırdıktan sonra sanal makinemizi oluştururken kullandığımız bilgiler ile sanal makinemize bağlanabiliriz

Sanal makinemize sorunsuz bir şekilde bağlantımızı gerçekleştirdikten sonra aşağıdaki adımları takip edebilecek duruma geldiğiniz demektir.

BAŞLANGIÇ ADIMLARI

Öncelikle ön paket yükleyicisi olan Anaconda’yı https://www.anaconda.com/download/ adresinden işletim sisteminize göre indirmemiz gerekiyor.

Kurulumumuzun ardından ekran görüntüsünün yönlendirmesi ile Anaconda Prompt’imizi açıyoruz. Konsol ekranında ilk olarak bize uygun olan ve kullanacağımız Python sürümünü
conda install python=3.5
komutu ile bilgisayarımıza indiriyoruz. 
Python 3.5 versiyonu ile bir çalışma alanı(environment) oluşturmamız gerekiyor bunun içinde
conda create -n py35 python=3.5 anaconda
komutunu kullanıyoruz. Hatırlatma olarak “py35″ çalışma alanınızın(environment) ismi istediğiniz gibi kişiselleştirebilirsiniz. Tüm bu işlemlerin ardından artık çalışma alınımız bilgisayarımızda hazır bir hale geldi, bunu aktif olarak kullanabilmek için
activate py35
komutunu kullanıyoruz.

CNTK KURULUMU

Kendi çalışma alanımızı oluşturduk. Şimdi bizim için gerekli olan kütüphaneleri çalışma alanımıza
pip install numpy scipy h5py jupyter 
easydict
komutu ile entegre etmemiz gerekiyor. Sırada asıl bizi ilgilendiren CNTK kurulumu var. Bunun için konsolumuza ilk olarak CPU 
uyumlu olan CNTK kurulumu için
pip install https://cntk.ai/PythonWheel/CPU-Only/cntk-2.4-cp35-cp35m-win_amd64.whl
komutunu yazıyoruz böylelikle çalışma alanımıza CNTK kütüphanesini entegre etmiş olduk. İndirme işleminin ardından kontrol etmek için
python -c “import cntk; print(cntk.__version__)”
komutunu konsol üzerinde kullanarak CNTK versiyonunu kontrol edebilirsiniz.

Artık Microsoft tarafından yayınlanan örnekleri incelemeye başlayabiliriz. Bunun için kontrol ekranımıza
python -m cntk.sample_installer
komutunu kullanıyoruz. Bu işlem ile birlikte bilgisayarımıza CNTK-Samples-2-4 dosyasını indirmiş olduk. Başlat çubuğu CNTK-Samples-2-4 ile arama yapıp dosya konumunu istediğiniz yere taşıyabiliriz. Şuana kadar yaptığımız işlemlerin doğrulu kontrol etmek için.

CNTK-Samples-2-4 -> Tutorials -> NumpyInterop yoluna gittikten sonra python FeedForwardNet.py komutu ile python dosyamızı çalışılıyoruz.

FastRCNN Algoritmasının Çalıştırılması

Tüm kurulumları doğru bir şekilde gerçekleştirebildiysek FeedForwardNet.py dosyasını çalıştırdıktan sonra yukarıdaki gibi bir ekran görüntüsü elde etmeliyiz. Herhangi bir hata alıyorsanız önceki adımları tekrardan gözden geçiriniz.

Artık resimlerdeki objeleri algılamak için yazımızın başında bahsettiğimiz FastRCNN örneğini başlatabilmek için gerekli adımları gerçekleştirmeye hazırız. CNTK-Samples-2-4 dosyasının bulunduğu konuma içerisinde
pip install -r requirements.txt
komutu ile hangi kütüphanelere ihtiyacımız olduğunu gözlemleyebiliriz ve indirebilrisiniz.

conda install scikit-image opencv
komutu ile örnek için gerekli görüntü işleme kütüphaneleri çalışma alanımıza entegre etmemiz gerekiyor. Sonraki adım olarak pre-trained (önceden eğitilmiş) olan AlexNet modelini adresinden indirerek ..CNTK-Samples-2-4PretrainedModels yoluna taşıyınız. Bu işlemin artından artık veri setimizi indirme zamanımız geldi. Konsol ekranımız yardımıyla ..CNTK-Samples-2-4ExamplesImageDataSetsGrocery yoluna gittikten sonra
python install_grocery.py
komutu ile veri setimizi indiriyoruz. Modelimizi eğittikten sonra artık örneğimizi çalıştırma vaktimiz geldi. ..CNTK-Samples-2-4ExamplesImageDetectionFastRCNNBrainScript yoluna giderek önce
python A1_GenerateInputROIs.py
ile test ve eğitim için modelimize girdilerimizi entegre ediyoruz hemen ardından python A2_RunWithBSModel.py ile eğitimi gerçekleştiriyoruz. Ardından
python A3_ParseAndEvaluateOutput.py
ile elde ettiğimiz sonuçları gözlemlemiyoruz.

Elde edilen resim çıktılarını gözlemlemek için
python B1_VisualizeInputROIs.py
dosyasını çalıştırabilirsiniz.


Evet sonunda başardık! Görüntü işleme ile resimlerdeki objeleri CNTK derin öğrenme kütüphanesi ile algılama işlemini gerçekleştirdik. Bir sonraki yazımızda kendi veri setimizi nasıl eğitip, nasıl test edeceğimize dair örnekler üzerinde geliştirme yapacağız.

HATIRLATMA

bu aşamaya gelene kadar geride bıraktığımız aşamalara göz atmak için aşağıdaki linklere göz atabilirsiniz.

1-) Yeni Başlayanlar için Görüntü İşlemeye Giriş

2-) Görüntü İşleme için Öğrenilmesi Gereken Yapılar

3-) Görüntü İşleme için Gerekli Kurumlar ve İlk Örnek

Bir sonraki yazımızda görüşmek üzere…

 

Görüntü işleme için Öğrenilmesi Gereken Yapılar

Önceki yazımızda görüntü işleme konseptine giriş yapmıştık. Bu bölümde sizlere görüntü işleme ile ilgili bilinmesi gereken yapılar genel hatlarıyla tanıtılacaktır. Bu bilgiler ışığında ileri ki zamanlarda yapılacak olan geliştirmelerde karşı karşıya gelinebilecek sorunlar ve yapılacak araştırmalar daha efektif bir şekilde gerçekleştirilebilecektir.

1-Anaconda

Anakonda; Python, R programlama dili, veri bilimi ve bilimsel araştırmalar ile uğraşan insanlar için Anaconda kuruluşu tarafından geliştirilmiş bir ön yükleyicidir. Geliştirilen bu on yükleyici kullanıcıların işlerini büyük ölçüde kolaylaştırmaktadır. Yüklendiği zaman kendisiyle beraber veri işleme ve raporlama dahil olmak üzere bu işlemlerle ilgili 100’den fazla pakete otomatik olarak erişilebilmektedir. Aynı zamanda istenilen 600’den fazla paket conda yükleyicisi sayesinde rahatlıkla kurulabilmektedir. Daha fazla bilgi için https://www.anaconda.com/ adresine göz atabilirsiniz.

2- OpenCV

OpenCV (Open Source Computer Vision) açık kaynak kodlu görüntü işleme ve makine öğrenimi için geliştirilmiş bir yazılım kütüphanesidir. 2 ve 2.1 bir sürümleriyle Pyhton programlama dili desteği getirilmiştir. Google, Microsoft, IBM, Yahoo, Sony, Honda, Toyota gibi köklü şirketler tarafından aktif olarak kullanılmaktadır. OpenCV kütüphanesi içerisinde görüntü işlemeye ve makine öğrenmesine yönelik 2500’den fazla algoritma bulunmaktadır. Bu algoritmalar ile yüz tanıma, nesneleri ayırt etme, insan hareketlerini tespit edebilme, nesne sınıflandırma, plaka tanıma gibi bir çok işlem rahatlıkla yapılabilmektedir. Daha fazla bilgi için https://opencv.org/ adresine bakabilirsiniz. Alternatif görüntü işleme kütüphaneleri:
-OpenFrameworks
-Fiji
-Halcon
-Matlab
-Lead Tools
-Pink
-Image Magick
görüntü işleme kütüphanelerinin bazılarıdır.

3- Cognitive Toolkit

Daha önce CNTK olarak bilinen aynı zamanda Microsoft Cognitive Toolkit olarak adlandırılan, Microsoft araştırmacıları tarafından geliştirilmiş veri akış grafiklerinden faydalanarak sayısal hesaplama için kullanılan açık kaynak kodlu bir derin öğrenme kütüphanesidir. CNTK, kullanıcıların ileri beslemeli (DNN), konvolüsyonel sinir ağıları (CNN) ve tekrarlayan sinir ağları (RNN / LSTM) gibi popüler model türlerini kolaylıkla fark etmesini ve birleştirilmesine olanak sağlar. CNTK, çoklu GPU’lar ve sunucular arasında otomatik farklılaşma ve paralelleştirme ile stokastik inişini (SGD, hata geri yazılımı) ile uygular. Daha ayrıntılı bilgi için https://www.microsoft.com/en-us/cognitive-toolkit/ adresine göz atabilirsiniz. CNTK alternatif kütüphaneleri olarak:
– TensorFlow
– Theano
– Keras
– Infer.Net
– Torch
derin öğrenme kütüphanelerinden bazılarıdır.

4- Visual Studio Code

Microsoft tarafından geliştirilen Visual Studio Light olarak tanımlayabileceğimiz güçlü, kurulum kolaylığı ve işimize yarayan paketlere ulaşma rahatlığı açısından oldukça kullanışlı, JavaScript, TypeScript, Node.JS C++, C#, Java, Python, PHP, Go gibi programlama dillerini destekleyen aynı zamanda, Windows, macOS ve Linux işletim sistemlerinde kullanabileceğimiz bir geliştirme ortamıdır. Daha fazla bilgi için https://code.visualstudio.com/.Kısa bir tanıtımın ardından, genel olarak sonraki bölümlerde işleyeceğimiz konular için bilinmesi gereken genel yapılar bunlardır, belirtmeliyim ki her bir yapı kendi içerisinde çok derin incelenmesi gereken konu başları. Daha sonrasında hepsini teker teker daha ayrıntılı bir şekilde inceleyeceğiz. Bir sonraki yazımızda basit kurulum adımlarının ardından ilk örneğimizi hayata geçireceğiz.

Görüntü işleme için Gerekli Kurulumlar ve İlk Örnek

Kurulum Adımları

Önceki yazımızda görüntü işleme için gerekli yapıları genel olarak inceledikten sonra;
1- İlk olarak Python programlama dilini belirttiğim adresten 2.7 sürümünü indirin ve kurulumunu tamamlayınız. https://www.python.org/downloads/#pubkeys
2- Sonra Visual Studio Code’u belirttiğim adresten size uygun olan işletim sistemine göre indirme işlemini yapıp, kurulumu tamamlayınız.
https://code.visualstudio.com/Download.
3- Ardından aşağıda bulunan ekran görüntüsündeki adımları uygulayarak Python programlama dilini kullanmak için gerekli eklentiyi entegre ediniz.

3- Bu adımdan sonra sol üst köşede bulunan file sekmesinden File > New File adamalarıyla yeni bir dosya oluşturunuz.
4- Ardından kodlarımızı geliştirmeye başlamadan önce Visual Studio Code’un Python dosyasını tanıyabilmesi için oluşturduğumuz dosyayı CTRL+ SHIFT+S (Farklı Kaydet) kısa yolu yardımıyla uzantısını .py olarak değiştirmelisiniz.
5- Bu işlemin ardından aşağıdaki fotoğrafı indirip .py uzantılı dosyanızla aynı klasöre taşıyışınız.



5- Artık kullanacağımız kütüphaneleri Visual Studio Code terminali vasıtasıyla indirmeye başlayabiliriz.
6- Python programlama dilinin bilimsel hesaplamaların temel kütüphanesi olan NumPy‘yi indirmek için terminale “pip install numpy” komutunu yazarak ulaşabilirsiniz.

7- Ardından görseller üzerinde gerekli manipüle işlemlerini yapabilmemiz için gerekli olan OpenCV kütüphanesini indirmek için terminale “pip install opencv-python” komutunu yazarak ulaşabilirsiniz.

Tebrikler eğer bu adıma kadar sorunsuz gelmeyi başardıysanız artık Python programlama dili ile geliştirmeye başlayabiliriz.

import numpy  
import cv2    

fotograf = cv2.imread('peakup.jpg')fotografGri = cv2.cvtColor(fotograf, cv2.COLOR_BGR2GRAY)
cv2.imwrite("peakupGri.jpg",fotografGri)


ret,fotografBW = cv2.threshold(fotografGri,110,240,cv2.THRESH_BINARY) 
cv2.imshow('Binary Fotograf', fotografBW)

cv2.imshow('Orijinal Fotograf', fotograf)
cv2.imshow('Gri tonlarina cevrilmis fotograf', fotografGri)
cv2.imwrite("peakup01.jpg",fotografBW)cv2.waitKey(0) 
cv2.destroyAllWindows()

kodların ayrıntılı açıklamalarına https://goo.gl/KUpwYk adresinden ulaşabilirsiniz.

ekteki kodu yazıp kaydettikten sonra Terminal tarafından dosyamızın bulunduğu ilgili dizine gidip “python demo.py” komutu ile kodlarımızı çalıştırabiliriz.

ve yazdığımız kod çıktımız aşağıdaki gibi gözükecektir. Aynı zamanda ilgili dizinde manipüle ettiğimiz fotoğrafların ayrı ayrı çıktılarını görebilirsiniz.

Bir sonraki yazımızda Python programlama dili ile daha kompleks görüntü işleme örneklerine değineceğiz. Sıradaki yazımızda görüşmek üzere…

Yeni Başlayanlar İçin Görüntü işleme’ye Giriş

Görüntü İşlemeye Giriş

Günümüzde teknoloji önüne geçilemez bir hızla gelişirken insan hayatına her gün birbirinden farklı buluş, yöntem ve teknikler girmektedir. Bundan birkaç sene öncesine kadar sadece bilim kurgu filmlerinde yer alan teknolojinin şu an insan hayatında yadsınamaz bir noktaya geldiği çok net bir şekilde görülmektedir. Blockchain, chatbotlar, sürücüsüz araçlar, nano teknoloji endüstrisi, sanal gerçeklik ve nesnelerin interneti gibi bir çok kavramı insan hayatına giren önemli noktalar arasında sıralamak mümkündür. Bu önemli noktalardan bir tanesi de Bilgisayar Bilimlerinde popüler araştırma alanları içerisinde yer alan ve günden güne artı gösteren görüntü işleme tekniğidir. Gelecek yıllarda hayatımızın daha derinlerinde yer edinecek görüntü işleme tekniğini ana hatlarıyla ele alalım.

Image Proccesing, görüntü işleme ile ilgili düzensiz çizgilerin ahenkle dansından ortaya çıkan insan yüzü
Çizgilerin birleşerek oluşturduğu insan silueti

Peki Görüntü İşleme Nedir?

Görüntü işleme: Dijital ortama aktarılmış görseller üzerinden ilgili ihtiyaca göre faydalı bilgiler elde etmek için farklı tekniklerle özdeşleştirebilen bir yöntemdir. Görüntü işleme yöntemi, kaydedilmiş olan belirli görüntülerin işlenip mevcut resim ve grafiklerin değiştirilerek yabancılaştırılması veya iyileştirilmesi için kullanılmaktadır. Örneklendirecek olursak, fotoğraf veya belgelerin taranıp dijital ortama aktarılırken yaşanan kalite düşüşlerini görmek mümkündür. İşte bu kalite düşüşleri sırasında görüntü işleme yöntemi devreye girmektedir. Düşen görüntü kalitesini ve görselde yaşanan bozulmaları en aza indirmek için görüntü işleme yöntemine başvurmaktayız. Başka bir örnek ise Google Earth üzerinden erişebildiğimiz haritalardır. Uydudan alınan görüntüler görüntü işleme teknikleri ile iyileştirilmektedir. Böylelikle insanlara daha kaliteli görseller sunulmaktadır. Bu ve daha bir çok farklı yerlerde kullanılabilen görüntü işleme hızla gelişen teknolojiler arasında yer almaktadır.
Aynı zamanda mühendislik ve bilgisayar bilimleri gibi disiplinlerin temel araştırma alanlarından biridir.

PeakUp Bilişim Teknolojileri logosu
PeakUp şirketinin logusu
PeakUp şirketi logosunun gri hali
PeakUp şirketi logosunun gri hali
PeakUp logosunun konturlenmiş hali
PeakUp logosunun konturlenmiş hali

Görüntü İşleme Nelerde Kullanılır?

Bu işlemlerin nasıl ilerlediğine değinmeden önce görüntü işlemenin genel olarak nerelerde ve nasıl kullanıldığına, göz atalım:

– Yüz tanıma ve güvenlik sistemleri.
– Demografik bilgi analizi.
– Trafik, astronomi, radar ve fotoğraf endüstrisi uygulamaları.
– Uygu görüntülerinden yararlanılarak nüfus yoğunluğunun tespit edilmesi.
– Radyoloji alanı (Tomografi, Ultrason vb.).
– Askeri Endüstri alanında hem su altındaki görüntülerin hem uydu görüntülerinin anlamlandırılması.
– Tıp alanı, çeşitli organ yapılarının ayırt edilmesinde
Daha fazla uygulama alanına bakmak için http://cvisioncentral.com/projects adresine göz atabilirsiniz.

Sokaktaki insanların görüntü işleme tekniği ile ekranda belirtilmesi
Görüntü işlemenin uygulandığı örnek bir görsel

Görüntü İşleme Adımları Nelerdir?

Görüntü işleme ile ilgili ana hatları öğrendikten sonra işlemlerin nasıl gerçekleştiğini anlamak gerekmektedir. Görüntü işleme temel olarak üç adımda incelenmektedir. – Gerekli araçlar ile imajı aktarılması
– Görüntünün analiz edilerek istenilen doğrultuda işlenmesi
– Analiz edilip işlenen veri raporu ve çıktısının, sonucunun alınması
Görüntü işleme adımlarının yanında görüntü işleme için iki tür yöntem kullanılmaktadır. Bunlardan ilki analog görüntü işleme diğeri dijital görüntü işleme yöntemidir. Dijital ve analog görüntü işleme için verinin geçmesi gereken birtakım temel aşamalar vardır. Bu aşamalar arasında:
– Ön işleme
– Geliştirme ve görüntüleme
– Bilgi çıkarımı
yer almaktadır. Bu asmaların ardından ilgili veriden ihtiyaca göre sonuçlar elde edilebilmektedir.

Görüntü işlemenin ayrıntılı bir şekilde gösterildiği şema
Görüntü İşleme İş Akış Şeması

Bir sonraki yazımızda Python ile görüntü işleme yapabilmek adına gerekli kurulumların yapılmasına değineceğiz. Sonraki yazımızda görüşmek üzere…