Microsoft Cognitive Services – Computer Vision API
Bir önceki yazımızda Makine Öğrenmesi(Machine Learning) kavramından ve makine öğrenmesi algoritmalarının servis olarak sunulmasından kısaca bahsetmiştik. Bu yazıda artık uygulamaya yöneliyoruz. Bu amaçla Microsoft’un Cognitive Services hizmetini inceleyeceğiz. Microsoft Project Oxford adıyla başlattığı ve algoritmaları servis olarak sunmayı amaçlayan projesini Bing API’leri ile de birleştirerek Cognitive Services adını verdiği platformda buluşturdu ve kısa bir süre önce duyurarak kullanıcıların hizmetine sundu. Cognitive Services içerisinde Bilgisayar Görmesi (Computer Vision), Konuşma (Speech), Bilgi Çıkarımı (Knowledge Extraction) gibi Makine öğrenmesinin alt uygulama alanları için oluşturulmuş ve servis olarak sunulan çok sayıda API var. API’ler belli limitlere kadar ücretsiz olarak kullanılabiliyor yani belli sayıda API çağrısını ücretsiz yapabiliyorsunuz eğer limitler size yetmiyorsa doğal olarak ücretli olan seçenekleri de mevcut. API’ler REST, JSON gibi artık neredeyse standart haline gelen teknolojileri kullanıyor ve ayrıca SDK’larda üretilmiş durumda.
İlk olarak Computer Vision (Bilgisayar Görmesi veya Bilgisayar Görüşü) API’leri ile başlayacağız. Başlamadan önce kısaca “Bilgisayar Görmesi”nden bahsedelim. Hepimiz biliyoruz ki dijital görüntüler piksel adı verilen küçük renkli noktalardan meydana geliyor. Dijital görüntü denilen şey piksellerin içerisindeki renk değerlerinin iki boyutlu matrisinden başka bir şey değil. Bilgisayarlar (veya bilgisayar özelliği gösteren diğer cihazlar) içerinde saklanan ve gösterilen dijital görüntüleri onlara “bakarak” bizler yani insanlar “anlamlandırıyoruz”. Bilgisayarlar için görüntünün anlamı diye birşey sözkonusu değil onlar için görüntü denen şey, içerisinde renklerin sayısal değerleri bulunan “anlamsız” ve uzun bir pikseller dizisi. Bilgisayar görmesinin tam da merkezinde bu kavram yer alıyor. Dijital görüntülerden “anlam” ve “bilgi” çıkarmak. (Bu arada “anlam” meselesi ve bilgisayarlar, algoritmalar hatta matematikle olan ilişkisi hep ilgimi çekmiştir. Bu çok derin bir konu) Anlayacağınız, bilgisayar görmesi kapsamında yapılan işler dijital görüntüyü oluşturan pikseller dizisi analiz edilerek bu görüntülerden anlam ve bilgi çıkarma etrafında dönüp duruyor.
Bilgisayar görmesini kısaca tanıdıktan sonra Cognitive Services içerinde bilgisayar görmesi ile ilgili neler sunulmuş hangi API’ler var şöyle bir bakalım.
Görüntü Analizi
Görüntü analizi API’de girdi olan verilen bir dijital görüntü analiz ediliyor ve görüntü içerisinde yer alan insan yüzlerinin yaşları, cinsiyetleri, görüntünün yetişkin içeriğe sahip olup olmadığı, hangi kategorilerle ilgili olduğu gibi bilgiler sunuluyor. 3-4 yıl önce çekilmiş olan kendi profil fotoğrafımı API’ye girdi olarak verdiğimde yaşımı 32 olarak tespit etti. Sonuç fena değil.
Profil fotoğrafımın analizi ile ilgili detaylı sonuçları aşağıda görebilirsiniz.
Görüntü İçerisinden Metin Okuma
Dijital görüntülerin piksellerden meydana geldiğinden yukarıda bahsettik. Dolayısıyla görüntüler içerisindeki metinsel ifadeler de piksellerden meydana gelmektedir. Bu API dijital görüntü içerisinde yer alan metinsel ifadeleri tespit ederek listelemektedir. Örnek olarak aşağıdaki dijital görüntüyü API’ye girdi olarak verdiğimizde çıktı olarak aşağıdaki JSON formatındaki sonuç üretilmektedir.
{ "language": "en", "textAngle": 0, "orientation": "Up", "regions": [ { "boundingBox": "791,118,592,838", "lines": [ { "boundingBox": "799,118,453,58", "words": [ { "boundingBox": "799,118,102,58", "text": "IF" }, { "boundingBox": "937,119,109,57", "text": "WE" }, { "boundingBox": "1087,118,165,58", "text": "DID" } ] }, { "boundingBox": "792,184,512,176", "words": [ { "boundingBox": "792,184,512,176", "text": "ALL" } ] }, { "boundingBox": "796,368,515,60", "words": [ { "boundingBox": "796,368,155,59", "text": "THE" }, { "boundingBox": "993,368,318,60", "text": "THINGS" } ] }, { "boundingBox": "791,441,312,57", "words": [ { "boundingBox": "791,441,108,57", "text": "WE" }, { "boundingBox": "937,441,166,57", "text": "ARE" } ] }, { "boundingBox": "797,508,586,87", "words": [ { "boundingBox": "797,508,586,87", "text": "CAPABLE" } ] }, { "boundingBox": "795,607,452,72", "words": [ { "boundingBox": "795,607,106,59", "text": "OF" }, { "boundingBox": "941,607,306,72", "text": "DOING," } ] }, { "boundingBox": "791,678,424,60", "words": [ { "boundingBox": "791,680,108,57", "text": "WE" }, { "boundingBox": "937,678,278,60", "text": "WOULD" } ] }, { "boundingBox": "793,750,498,59", "words": [ { "boundingBox": "793,750,498,59", "text": "LITERALLY" } ] }, { "boundingBox": "791,821,390,60", "words": [ { "boundingBox": "791,821,390,60", "text": "ASTOUND" } ] }, { "boundingBox": "795,893,531,63", "words": [ { "boundingBox": "795,893,531,63", "text": "OURSELVES." } ] } ] } ] }
JSON çıktısında görüntünün içerisindeki metinleri, hangi dile ait oldukları ve bu metinlerin görüntünün neresinde konumlandırıldıkları gibi bilgileri görmekteyiz.
Ünlüleri Tanıma
Bu API ise dijital görüntü içerisinde iş dünyası, spor, sanat, politika, eğlence gibi alanlarda dünyada tanınmış yüzlerin olup olmadığını eğer varsa da bu kişilerin kimler olduğunu listeleyebilmektedir. Örnek olarak Microsoft CEO’su Satya Nadella’nın fotoğrafı için API’nin ürettiği JSON çıktısı:
{ "requestId": "cfdb3625-6ba9-4022-a418-dedef9b34f20", "metadata": { "height": 300, "width": 200, "format": "Jpeg" }, "result": { "celebrities": [ { "name": "Satya Nadella", "faceRectangle": { "width": 43, "height": 43, "left": 81, "top": 36 }, "confidence": 0.9988739 } ] } }
Bu API’lere ilave olarak verilen video içeriğinin analiz edilerek kategorilerin çıkarılması, görüntülerin parçalara bölünmesi gibi API’lerin de olduğunu söyleyebilirim. Bilgisayar görmesi API’lerile ilgili detaylı bilgi için https://www.microsoft.com/cognitive-services/en-us/computer-vision-api adresini inceleyebilirsiniz.
Bilgisayar görmesi API’leri aylık 5000 çağrıya kadar ücretsiz olarak sunulmaktadır. Eğer bu limit sizin için yeterli değilse Microsoft Azure üzerinden üye olarak ücretli seçeneklerini de kullanabilirsiniz. API’lerin REST ve SDK’lar sayesinde mobil, web, masaüstü gibi herhangi bir programlama ortamı için kullanabilmesi ayrıca bir esneklik sunuyor.
Bilgisayar görmesi API’leri ile gerçekten çok yaratıcı uygulamalar geliştirebilirsiniz. Hepimiz biliyoruz ki son yıllarda özellikle de mobil cihaz devrimi ile birlikte dijital görüntüler gerçekten inanılmaz önem kazanmış durumda. Milyar dolarlık servislerin bir çoğunun dijital görüntülerle ilgili olduğunu söylemem sanırım gerek yok.
1 Comment
Mahmut ilhan
10 Nisan 2017 at 00:23Çok güzel bir yazı elinize sağlık bir video olarak örnek olsaydı benim için daha da iyi olurdu.
Teşekkürler güzel yazı için.