Featured Image

A Step-By-Step Journey To Artificial Intelligence

Machine learning (ML) is the study of computer algorithms that develop automatically through experience [1]. According to Wikipedia, machine learning involves computers discovering how to perform tasks without being explicitly programmed [2]. The first thing that comes to most of you when it comes to artificial intelligence is undoubtedly robots, as you can see in the visual. Today I have researched the relevant courses at the basics of machine learning and artificial intelligence level for you, and here I will list the DataCamp and Coursera courses that I’m most pleased with.

DataCamp Courses


💠 Image Processing with Keras in Python: During this course, CNN networks will be taught how to build, train, and evaluate. It will be taught how to develop learning abilities from data and how to interpret the results of training.
Click to go to the course 🔗
💠 Preprocessing for Machine Learning in Python:  You’ll learn how to standardize your data to be the right format for your model, create new features to make the most of the information in your dataset, and choose the best features to improve your model compliance.
Click to go to the course  🔗
💠 Advanced Deep Learning with Keras: It shows you how to solve various problems using the versatile Keras functional API by training a network that performs both classification and regression.
Click to go to the course 🔗
💠 Introduction to TensorFlow in Python: In this course, you will use TensorFlow 2.3 to develop, train, and make predictions with suggestion systems, image classification, and models that power significant advances in fintech. You will learn both high-level APIs that will allow you to design and train deep learning models in 15 lines of code, and low-level APIs that will allow you to go beyond ready-made routines.
Click to go to the course 🔗
💠 Introduction to Deep Learning with PyTorch: PyTorch is also one of the leading deep learning frameworks, both powerful and easy to use. In this lesson, you will use Pytorch to learn the basic concepts of neural networks before creating your first neural network to estimate numbers from the MNIST dataset. You will then learn about CNN and use it to build more powerful models that deliver more accurate results. You will evaluate the results and use different techniques to improve them.
Click to go to the course 🔗
💠 Supervised Learning with scikit-learn: 

  • Classification
  • Regression
    • Fine-tuning your model
    • Preprocessing and pipelines

Click to go to the course 🔗

💠 AI Fundamentals:

  • Introduction to AI
  • Supervised Learning
    • Unsupervised Learning
    • Deep Learning & Beyond

Click to go to the course 🔗


Coursera Courses


💠 Machine Learning: Classification, University of Washington: 

  • The solution of both binary and multi-class classification problems
  • Improving the performance of any model using Boosting
  • Method scaling with stochastic gradient rise
  • Use of missing data processing techniques
  • Model evaluation using precision-recall metrics

Click to go to the course 🔗

💠 AI For Everyone, deeplearning.ai:  

  • Realistic AI can’t be what it can be?
  • How to identify opportunities to apply artificial intelligence to problems in your own organization?
  • What is it like to create a machine learning and data science projects?
  • How does it work with an AI team and build an AI strategy in your company?
  • How to navigate ethical and social discussions about artificial intelligence?

Click to go to the course  🔗

💠 AI for Medical Diagnosis, deeplearning.ai: 

  • In Lesson 1, you will create convolutional neural network image classification and segmentation models to diagnose lung and brain disorders.
  • In Lesson 2, you will create risk models and survival predictors for heart disease using statistical methods and a random forest predictor to determine patient prognosis.
  • In Lesson 3, you will create a treatment effect predictor, apply model interpretation techniques, and use natural language processing to extract information from radiology reports.

Click to go to the course 🔗
As a priority step in learning artificial intelligence, I took Artificial Neural Networks and Pattern Recognition courses in my Master’s degree. I developed projects related to these areas and had the opportunity to present these projects. So I realized that I added more to myself when I passed on what I knew. In this article, I mentioned the DataCamp and Coursera courses that you should learn in summary. Before this, I strongly recommend that you also finish the Machine Learning Crash Course.

REFERENCES

  1. Mitchell, Tom (1997). Machine Learning. New York: McGraw Hill. ISBN 0-07-042807-7. OCLC 36417892.
  2. From Wikipedia, The free encyclopedia, Machine learning, 19 November 2020.
  3. DataCamp, https://learn.datacamp.com.
  4. Coursera, https://www.coursera.org.
Featured Image

Yapay Zekaya Adım Adım Yolculuk

Makine öğrenimi (ML), deneyim yoluyla otomatik olarak gelişen bilgisayar algoritmalarının incelenmesidir [1]. Wikipedia’ ya göre ise makine öğrenimi, bilgisayarların, açıkça programlanmadan görevleri nasıl gerçekleştirebileceklerini keşfetmelerini içerir [2]. Yapay Zeka denilince çoğunuzun aklına ilk gelen şey kuşkusuz görselde gördüğünüz gibi robotlar gelmektedir. Bugün makine öğrenimi ve yapay zekanın temelleri seviyesinde ilgili kursları sizler için araştırdım ve en çok memnun kaldığım DataCamp ve Coursera kurslarını burada listeleyeceğim.

DataCamp Kursları

💠 Image Processing with Keras in Python:  Bu kurs boyunca CNN ağları nasıl inşa edileceği, eğitileceği ve değerlendirileceği öğretilecektir. Verilerden öğrenme yeteneklerinin nasıl geliştirileceğini ve eğitimin sonuçlarını nasıl yorumlanacağı öğretilecektir.
Kursa gitmek için tıklayın 🔗

💠 Preprocessing for Machine Learning in Python:  Verilerinizi, modeliniz için doğru biçimde olacak şekilde standartlaştırmayı, veri kümenizdeki bilgilerden en iyi şekilde yararlanmak için yeni özellikler oluşturmayı ve model uyumunuzu iyileştirmek için en iyi özellikleri seçmeyi öğreneceksiniz.
Kursa gitmek için tıklayın 🔗 

💠 Advanced Deep Learning with Keras: Hem sınıflandırma hem de regresyon yapan bir ağı eğiterek çok yönlü keras işlevsel API’sini kullanarak çeşitli problemleri nasıl çözeceğinizi gösterir.
Kursa gitmek için tıklayın 🔗

💠 Introduction to TensorFlow in Python: Bu derste, tensorflow 2.3’ü, öneri sistemleri, görüntü sınıflandırması ve Fintech’teki önemli ilerlemelere güç veren modellerle geliştirmek, eğitmek ve tahminler yapmak için kullanacaksınız. Hem 15 satırlık kodda derin öğrenme modelleri tasarlamanıza ve eğitmenize izin verecek üst düzey API’leri hem de hazır rutinlerin ötesine geçmenize izin verecek düşük seviyeli API’leri öğreneceksiniz.
Kursa gitmek için tıklayın 🔗

💠 Introduction to Deep Learning with PyTorch: PyTorch, aynı zamanda hem güçlü hem de kullanımı kolay olan önde gelen derin öğrenme çerçevelerinden biridir. Bu derste, MNIST veri kümesinden rakamları tahmin etmek için ilk sinir ağınızı oluşturmadan önce sinir ağlarının temel kavramlarını öğrenmek için Pytorch’ u kullanacaksınız. Daha sonra CNN hakkında bilgi edinecek ve daha doğru sonuçlar veren daha güçlü modeller oluşturmak için kullanacaksınız. Sonuçları değerlendirecek ve bunları geliştirmek için farklı teknikler kullanacaksınız.
Kursa gitmek için tıklayın 🔗

💠 Supervised Learning with scikit-learn: 

  • Classification
  • Regression
    • Fine-tuning your model
    • Preprocessing and pipelines

Kursa gitmek için tıklayın 🔗

💠 AI Fundamentals:

  • Introduction to AI
  • Supervised Learning
    • Unsupervised Learning
    • Deep Learning & Beyond

Kursa gitmek için tıklayın 🔗


Coursera Kursları

💠 Machine Learning: Classification, University of Washington: 

  • Hem ikili hem de çok sınıflı sınıflandırma problemlerinin çözümü
  • Boosting kullanarak herhangi bir modelin performansını artırımı
  • Stokastik gradyan yükselişi ile yöntem ölçeklendirme
  • Eksik verileri işleme teknikleri kullanımı
  • Hassas hatırlama metrikleri kullanılarak model değerlendirme

Kursa gitmek için tıklayın 🔗 

💠 AI For Everyone, deeplearning.ai:  

  • Gerçekçi AI ne olabilir ne olamaz?
  • Kendi kuruluşunuzdaki sorunlara yapay zeka uygulamak için fırsatlar nasıl belirlenir?
  • Makine öğrenimi ve veri bilimi projeleri oluşturmak nasıl bir şeydir?
  • Bir AI ekibi ile nasıl çalışır ve şirketinizde bir AI stratejisi nasıl oluşturulur?
  • Yapay zeka ile ilgili etik ve sosyal tartışmalarda nasıl gezinilir?

Kursa gitmek için tıklayın 🔗 

💠 AI for Medical Diagnosis, deeplearning.ai: 

  • Ders 1’de, akciğer ve beyin bozukluklarını teşhis etmek için konvolüsyonel sinir ağı görüntü sınıflandırması ve segmentasyon modelleri oluşturacaksınız.
  • Ders 2’de, hasta prognozunu belirlemek için istatistiksel yöntemler ve rastgele bir orman belirleyicisi kullanarak kalp hastalığı için risk modelleri ve sağkalım tahmincileri oluşturacaksınız.
  • Ders 3’te, bir tedavi etkisi belirleyicisi oluşturacak, model yorumlama tekniklerini uygulayacak ve radyoloji raporlarından bilgi almak için doğal dil işleme kullanacaksınız.

Kursa gitmek için tıklayın 🔗
Yapay zeka öğrenirken öncelikli adımlar olarak Yüksek Lisans dönemimde Yapay Sinir Ağları ve Örüntü Tanıma derslerini aldım. Bu alanlar ile ilgili projeler geliştirdim ve bu projeleri sunma fırsatım oldu. Böylelikle bildiklerimi aktarırken kendime daha çok şey kattığımı fark ettim. Bu yazıda özet olarak öğrenmeniz gereken DataCamp ve Coursera kurslarından bahsettim. Bunlardan önce Machine Learning Crash Course‘ u da bitirmenizi şiddetle tavsiye ediyorum.

REFERANSLAR

  1. Mitchell, Tom (1997). Machine Learning. New York: McGraw Hill. ISBN 0-07-042807-7. OCLC 36417892.
  2. From Wikipedia, The free encyclopedia, Machine learning, 19 November 2020.
  3. DataCamp, https://learn.datacamp.com.
  4. Coursera, https://www.coursera.org.
Featured Image

HTC (Hybrid Task Cascade) Network Architecture

As a result of my recent literature research for image segmentation, I have come across very different segmentation architectures. Before this article, I told you about the architecture of Mask R-CNN. Just like this mask R-CNN architecture, the Cascade Mask R-CNN structure has appeared in the literature. I will try to enlighten you about this with the information I have collected from the original academic documents and research I have read.

Cascade is a classic yet powerful architecture that improves performance in a variety of tasks. However, how to enter sample segmentation with steps remains an open question. A simple combination of Cascade R-CNN and Mask R-CNN provides only limited gains. In exploring a more effective approach, it was found that the key to a successful instance segmentation level is to take full advantage of the mutual relationship between detection and partitioning.
Hybrid Task Cascade for Instance Segmentation proposes a new Hybrid Task Cascade (HTC) framework that differs in two important respects:

  1. Instead of cascading these two tasks separately, it connects them together for common multi-stage processing.
  2. It adopts a fully convoluted branch to provide spatial context, which can help distinguish the rigid foreground from the complex background.

The basic idea is to leverage spatial context to improve the flow of information and further improve accuracy by incorporating steps and multitasking at each stage. In particular, a cascading pipeline is designed for progressive purification. At each stage, both bounding box regression and mask prediction are combined in a multi-tasking person.

Innovations ✨

The main innovation of HTC’s architecture is a cascading framework that connects object detection and segmentation, providing better performance. The information flow is also changed through direct branches between the previous and subsequent mask determinants. Architecture also includes a fully convolutional branch that improves spatial context, which can improve performance by better distinguishing samples from scattered backgrounds.
2017 Winner

Hybrid Task Cascade: Sample Segmentation Framework
  • It combines bounding box regression and mask prediction instead of executing in parallel. 
  • It creates a direct way to strengthen the flow of information between mask branches by feeding the mask features from the previous stage to the existing one.
  • It aims to gain more contextual information by fusing it with box and mask branches by adding an additional branch of semantic segmentation. 
  • In general, these changes in the framework architecture effectively improve the flow of information not only between states but also between tasks.

A comparison of the HTC network’s sample determination approaches with the latest technology products in the COCO dataset in Table 1 can be seen. In addition, the Cascade Mask R-CNN described in Chapter 1 is considered a strong basis for the method used in the article. Compared to Mask R-CNN, the naive cascading baseline brings in 3.5% and 1.2% increases in terms of box AP and mask AP. It is noted that this baseline is higher than PANet, the most advanced method of sample segmentation. HTC is making consistent improvements on different backbones that prove its effectiveness. ResNet-50 provides gains of 1.5%, 1.3% and 1.1%, respectively, for ResNet-101 and ResNeXt-101.
📌 Note: Cascade Mask R-CNN extends Cascade R-CNN to instance segmentation by adding a mask header to the cascade [3].

MS COCO METRICS

The image below shows the results of this segmentation in the COCO dataset.
New
In the results section of the article, the advantages of the HTC model they created over other models are mentioned.

We recommend the hybrid task cascade (HTC), a new graded architecture for Instance Segmentation. It intertwines box and mask branches for common multi-stage processing and uses a semantic partitioning branch to provide spatial context. This framework gradually improves mask estimates and combines complementary features at each stage. The proposed method without bells and whistles achieves a 1.5% improvement over a strong cascade Mask R-CNN baseline in the MS COCO dataset. In particular, our overall system reaches 48.6 masks AP in the test-inquiry dataset and 49.0 mask AP in test-dev.

📌 Finally, in order to understand the changes of variables in the table, I leave you a table of MS COCO metrics as a note.

REFERENCES

  1. Kai Chen, Jiangmiao Pang, Jiaqi Wang, Yu Xiong, Xiaoxiao Li, Shuyang Sun, Wansen Feng, Ziwei Liu, Jianping Shi, Wanli Ouyang, Chen Change Loy, Hybrid Task Cascade for Instance Segmentation, April 2019.
  2. Zhaowei Cai and Nuno Vasconcelos, Cascader-cnn:Delving into high quality object detection, In IEEE Conference on Computer Vision and Pattern Recognition, 2018.
  3. https://paperswithcode.com/method/cascade-mask-r-cnn.
  4. https://cocodataset.org/#home
Featured Image

HTC (Hybrid Task Cascade) Ağ Mimarisi

Son günlerde görüntü segmentasyonu için yaptığım literatür araştırması sonucunda çok farklı segmentasyon mimarileri ile karşılaştım. Bu yazımdan önce sizlere Mask R-CNN mimarisinden bahsetmiştim. Tıpkı bu Mask R-CNN mimarisi gibi Cascade Mask R-CNN yapısı da literatürde karşıma çıktı. Okuduğum orijinal akademik dokümanlardan ve araştırmalarımdan topladığım bilgiler ile sizleri bu konuda aydınlatmaya çalışacağım.

Cascade,çeşitli görevlerde performansı artıran klasik ama güçlü bir mimaridir. Bununla birlikte, örnek segmentasyonuna basamaklar ile nasıl girilir açık bir soru olmaya devam etmektedir. Cascade R-CNN ve Mask R-CNN’ in basit bir kombinasyonu sadece sınırlı kazanç sağlar. Daha etkili bir yaklaşımı keşfederken, başarılı bir örnek bölümleme (instance segmentation) kademesinin anahtarının, algılama ve bölümleme arasındaki karşılıklı ilişkiden tam olarak yararlanmak olduğu görülmüştür.
Hybrid Task Cascade for Instance Segmentation adlı çalışmada iki önemli açıdan farklılık gösteren yeni bir Hybrid Task Cascade (HTC) çerçevesi önerilmektedir:

  1. Bu iki görevi ayrı ayrı basamaklı olarak rafine etmek yerine, bunları ortak çok aşamalı işleme için birbirine bağlar.
  2. Uzamsal bağlam sağlamak için tamamen evrişimli bir dal benimser, bu da sert ön planı karmaşık arka plandan ayırt etmeye yardımcı olabilir. 

Temel fikir, her aşamada basamak ve çoklu görev dahil ederek bilgi akışını iyileştirmek ve doğruluğu daha da artırmak için mekansal bağlamdan yararlanmaktır. Özellikle, ilerici arıtma için basamaklı bir boru hattı tasarlanmıştır. Her aşamada, hem sınırlayıcı kutu regresyonu hem de maske tahmini, çok görevli bir insanda birleştirilir.

Yenilikler ✨

HTC mimarisinin ana yeniliği, nesne algılama ve segmentasyonu birbirine bağlayarak daha iyi performans sağlayan basamaklı bir çerçevedir. Bilgi akışı, önceki ve sonraki maske belirleyicileri arasındaki doğrudan dallar aracılığıyla da değiştirilir. Mimari ayrıca, dağınık arka planlardan örnekleri daha iyi ayırt ederek performansı artırabilen mekansal bağlamı geliştiren tamamen konvolüsyonel bir dal içerir.
2017 Winner

Hybrid Task Cascade (Hibrit Görev Basamağı) : Örnek Segmentasyon Çerçevesi
  • Paralel olarak yürütmek yerine sınırlayıcı kutu regresyonunu ve maske tahminini birleştirir. 
  • Önceki aşamadaki maske özelliklerini mevcut olana besleyerek maske dalları arasındaki bilgi akışını güçlendirmek için doğrudan bir yol oluşturur.
  • Ek bir semantik segmentasyon dalı ekleyerek kutu ve maske dalları ile kaynaştırarak daha fazla bağlamsal bilgi edinmeyi amaçlamaktadır. 
  • Genel olarak, çerçeve mimarisindeki bu değişiklikler, yalnızca aşamalar arasında değil, görevler arasında da bilgi akışını etkili bir şekilde geliştirir.


HTC ağının Tablo 1′ deki COCO veri kümesindeki en son teknoloji ürünleri ile örnek belirleme yaklaşımlarının karşılaştırılması görülmektedir. Ayrıca, Bölüm 1’de açıklanan Cascade Mask R-CNN’i makalede kullanılan yöntemin güçlü bir temeli olarak değerlendirilmektedir. Mask R-CNN ile karşılaştırıldığında, naif basamaklı taban çizgisi, box AP ve mask AP açısından %3.5 ve %1.2’lik bir artış getiriyor. Bu taban çizgisinin, en gelişmiş örnek segmentasyon yöntemi olan PANet ‘ den daha yüksek olduğu belirtilmektedir. HTC, etkinliğini kanıtlayan farklı omurgalarda tutarlı iyileştirmeler gerçekleştiriyor. ResNet-50, ResNet-101 ve ResNeXt-101 için sırasıyla %1.5, %1.3 ve %1.1 kazanç sağlar.
📌 NOT: Cascade Mask R-CNN, kademeye bir maske başlığı ekleyerek Cascade R-CNN’yi örnek segmentasyonuna genişletir [3].
Aşağıda görmüş olduğunuz görsel ise COCO veri setindeki bu segmentasyon sonuçlarını göstermektedir.
New
Makalede sonuç bölümünde ise oluşturdukları HTC modelinin diğer modellere göre üstünlüklerinden bahsedilmektedir.

Örnek bölümleme (Instance Segmentation) için yeni bir kademeli mimari olan Hibrit Görev Kademesini (HTC) öneriyoruz. Ortak bir çok aşamalı işleme için kutu ve maske dallarını iç içe geçirir ve uzamsal bağlam sağlamak için anlamsal bir bölümleme dalı kullanır. Bu çerçeve, maske tahminlerini aşamalı olarak iyileştirir ve her aşamada tamamlayıcı özellikleri bir araya getirir. Çanlar ve ıslıklar olmadan önerilen yöntem, MS COCO veri setinde güçlü bir Cascade Mask R-CNN taban çizgisine göre% 1.5 iyileştirme elde eder. Özellikle, genel sistemimiz test-sorgulama veri setinde 48.6 maske AP’ye ve test-dev’de 49.0 maske AP’ye ulaşır.

📌 Son olarak tablodaki değişkenlerin değişimlerini anlamanız adına sizlere MS COCO metriklerinin tablosunu not olarak bırakıyorum.

REFERANSLAR

  1. Kai Chen, Jiangmiao Pang, Jiaqi Wang, Yu Xiong, Xiaoxiao Li, Shuyang Sun, Wansen Feng, Ziwei Liu, Jianping Shi, Wanli Ouyang, Chen Change Loy, Hybrid Task Cascade for Instance Segmentation, April 2019.
  2. Zhaowei Cai and Nuno Vasconcelos, Cascader-cnn:Delving into high quality object detection, In IEEE Conference on Computer Vision and Pattern Recognition, 2018.
  3. https://paperswithcode.com/method/cascade-mask-r-cnn.
  4. https://cocodataset.org/#home
Featured Image

Data Labeling Tools For Machine Learning

The process of tagging data is a crucial step in any supervised machine learning projects. Tagging is the process of defining areas in an image and creating descriptions of which object belongs to these regions. By labeling the data, we prepare our data for ML projects and make them more readable. In most of the projects I’ve worked on, I’ve created sets in the dataset, I’ve done self-tagging, I’ve done my training with tagged images. In this article, I will introduce the data labeling tools that I encounter the most by sharing my experience in this field with you.
Labeling Image

📍COLABELER

Colabeler is a program that allows labeling in positioning and classification problems. Computer vision is a labeling program that is frequently used in the fields of natural language processing, artificial intelligence, and voice recognition [2]. The visual example that you see below shows the labeling of an image. The classes you see here are usually equivalent to the car class. In the tool section that you see on the left side, you can classify objects like curves, polygons, or rectangles. This selection may vary depending on the limits of the data you want to tag.
Labeling Colabeler
Then in the section that says ‘Label Info’, you type the name of the objects you want to tag yourself. After you finish all the tags, you save them by confirming them from the blue tick button. And so you can go to the next image with Next. Here we should note that every image we record is sorted to the left of this blue button. It is also possible to check the images you have recorded in this way. One of the things I like most about Colabeler is that it can also use artificial intelligence algorithms.
📌 I performed tagging via Colabeler in a project I worked on before, and it is a software with an incredibly easy interface.
📽 The video on Colabeler’s authorized websites describes how to make the labeling.
Localization of Bone Age
I gave a sample image of the project I worked on earlier above. Because this project is a localization project in the context of machine learning, labeling has been done by adhering to these features. Localization means isolating the subregion of the image where a feature is located. For example, trying to define bone regions for this project only means creating rectangles around bone regions in the image [3]. In this way, I have labeled the classes that are likely to be removed in the bone images as ROI zones. I then obtained these tags as Export XML/JSON provided by Colabeler. A lot of machine learning employees will like this part, it worked very well for me!

♻️ Export Of Labels

Exporting XML Output
At this stage, I have saved it as JSON output, because I will use JSON data, you can save your data in different formats. In the image I give below, you can see the places of the classes I created in the JSON output. In this way, your data was prepared in a labeled manner.
JSON Format

📍ImageJ

ImageJ is a Java-based image processing program developed at the National Institutes of Health and the Laboratory for Optical and Computational Instrumentation (LOCI, University of Wisconsin). ImageJ’s plugin architecture and built-in development environment have made it a popular platform for teaching image processing [3].

As I listed above, you can see a screenshot taken from ImageJ in Wikipedia. As can be seen, this software does not exist on an overly complex side. It is a tool that is used in many areas regardless of the profession. 📝The documentation provided as a user’s guide on authorized ImageJ websites describes how to perform labeling and how to use the software tool.
📌 I have also been to Fiji-ImageJ software tools for images that I had to tag in the machine learning project. I think its interface is much older than other labeling programs I’ve worked with. Of course, you can perform the operations that you want to do from a software point of view, but for me, the software also needs to saturate the user from a design point of view.
Fiji-ImageJ
The image I gave above was a screenshot I took during the project I was working on on my personal computer. In order to be able to activate the data while working on the Matlab platform, it was necessary to update with priority. For this reason, after updating, I continued to identify the images. Below is the package that will be installed during the installation of the Matlab plugin for ImageJ users.
ImageJ Matlab

📍Matlab Image Labeler

The Image Labeler app provides an easy way to mark rectangular area of interest (ROI) tags, polyline ROI tags, Pixel ROI tags, and scene tags in a video or image sequence. For example, using this app will start by showing you [4]:

  • Manually tag a picture frame from an image collection
  • Automatically tagging between image frames using an automation algorithm
  • Export tagged location fact data

Image Toolbox Matlab
In the image you see above, we can perform segmentation using Matlab image Labeler software. More precisely, it is possible to make labeling by dividing the data into ROI regions. In addition, you can use previously existing algorithms, as well as test and run your own algorithm on data.
Selection ROI
In this image I received from Matlab’s authorized documentation, the label names of the bounding regions you selected are entered in the left menu. A label Color is assigned according to the class of the object. It is also quite possible that we create our labels in this way. In the next article, I will talk about other labeling tools. Hope to see you ✨

REFERENCES
  1. https://medium.com/@abelling/comparison-of-different-labelling-tools-for-computer-vision-f3afd678da76.
  2. http://www.colabeler.com.
  3. From Wikipedia, The Free Encyclopedia, ImageJ, https://en.wikipedia.org/wiki/ImageJ.
  4. MathWorks, Get Started with the Image Labeler, https://www.mathworks.com/help/vision/ug/get-started-with-the-image-labeler.html.
  5. https://chatbotslife.com/how-to-organize-data-labeling-for-machine-learning-approaches-and-tools-5ede48aeb8e8.
  6. https://blog.cloudera.com/learning-with-limited-labeled-data/.

Makine Öğrenimi İçin Veri Etiketleme Araçları

Verilerin etiketlenmesi işlemi, gözetimli herhangi bir makine öğrenimi projelerinde çok önemli bir adımdır. Etiketleme, bir görüntüdeki alanları tanımlama ve bu bölgeler için hangi nesneye ait ise o nesnenin açıklamalarının oluşturulduğu işlemidir. Verilerin etiketlenmesi ile hem verilerimizi ML projelerine hazırlamış oluyoruz hem de onları daha okunabilir kılıyoruz. Çalıştığım projelerin çoğunda veri setindeki kümeleri oluştururken yeri geldi kendim etiketlemeler yaptım yeri geldi etiketlenmiş görüntüler ile eğitim işlemimi gerçekleştirdim. Bu yazıda sizler ile bu alanda tecrübelerimi paylaşarak en çok karşılaştığım veri etiketleme araçlarını tanıtacağım.
Labeling Image

📍COLABELER

Colabeler, konumlandırma ve sınıflandırma problemlerinde etiketleme yapmayı sağlayan programdır. Bilgisayarlı görü, doğal dil işleme, yapay zekâ ve ses tanıma alanlarında sıkça kullanılan bir etiketleme programıdır [2]. Aşağıda gördüğünüz görsel örnek bir görüntü etiketlenmesini göstermektedir. Burada gördüğünüz sınıflar genellikle araba (car) sınıfına denk gelmiştir. Sol tarafta gördüğünüz araç bölümünde nesneleri eğri, poligon veya dikdörtgen olarak sınıflandırmanız mümkündür. Bu seçim etiketlemek istediğiniz verinin sınırlarına göre değişebilmektedir.
 

Labeling Colabeler
Ardından ‘Label Info’ yazan bölümde kendiniz etiketlemek istediğiniz nesnelerin ismini yazıyorsunuz. Tüm etiketlemeleri bitirdikten sonra mavi tik olan butondan onaylayarak kaydediyorsunuz. Ve böylelikle bir sonraki görüntüye Next ile geçebiliyorsunuz. Burada dikkat etmemiz gereken nokta, kaydettiğimiz her görüntü bu mavi butonun soluna sıralanmaktadır. Bu şekilde kaydettiğiniz görüntüleri de kontrol etmeniz mümkündür. Colabeler’ın en çok sevdiğim yanlarından bir tanesi içerisinde yapay zeka algoritmalarını da kullanılabilir olmasıdır. 
📌 Daha önce çalıştığım bir projede Colabeler üzerinden etiketleme gerçekleştirdim ve inanılmaz kolay bir arayüze sahip bir yazılımdır.
📽 Colabeler’ ın yetkili web sitelerinde yer alan videoda etiketlemelerin nasıl yapılacağı açıklanmıştır.
Localization of Bone Age
Daha önce çalıştığım projenin örnek bir görüntüsünü yukarıda verdim. Bu proje, makine öğrenimi bağlamında yerelleştirme (localization) projesi olduğu için bu özelliklere bağlı kalınarak etiketleme yapılmıştır. Yerelleştirme, bir özelliğin bulunduğu görüntünün alt bölgesini izole etmek anlamına gelir. Örneğin, bu proje için kemik bölgelerinin tanımlanmaya çalışılması yalnızca görüntüdeki kemik bölgelerinin etrafında dikdörtgenler oluşturmak anlamına gelir [3]. Bu şekilde kemik görüntülerinde çıkarılması muhtemel sınıfları ROI bölgesi olarak etiketlemiş oldum. Ardından bu etiketleri Colabeler’ın sağladığı Export XML/JSON olarak elde ettim. Bu kısım birçok makine öğrenimi çalışanlarının hoşuna gidecektir, benim çok işime yaramıştı!

♻️ Etiketlerin Dışarıya Aktarılması

Exporting JSON Output
Bu aşamada ben JSON veriler kullanacağım için JSON çıktısı olarak kayıt etmiştim, siz verilerinizi farklı formatlarda kayıt edebilirsiniz. Aşağıda verdiğim görselde ise oluşturduğum sınıfların JSON çıktısındaki yerlerini görmektesiniz. Bu şekilde verileriniz etiketli bir şekilde hazırlanmış oldu.
JSON Format

📍ImageJ

ImageJ, Ulusal Sağlık Enstitüleri ve Optik Hesaplamalı Enstrümantasyon Laboratuvarı’nda (LOCI, Wisconsin Üniversitesi) geliştirilen Java tabanlı bir görüntü işleme programıdır. Imagej’in eklenti mimarisi ve yerleşik geliştirme ortamı, görüntü işlemeyi öğretmek için popüler bir platform haline getirmiştir [3].

Yukarıda yer verdiğim şekilde Wikipedia içerisinde ImageJ’den alınmış bir ekran görüntüsünü görmektesiniz. Görüldüğü gibi bu yazılım aşırı kompleks bir tarafı mevcut değildir. Birçok alanda meslek fark etmeksizin kullanılmakta olan bir araçtır.
📝 ImageJ’ in yetkili web sitelerinde yer alan kullanım kılavuzu olarak verilen dokümantasyonda etiketlemelerin nasıl yapılacağı ve yazılım aracının nasıl kullanılacağı açıklanmıştır.
📌 Makine öğrenimi projesinde etiketlemek zorunda kaldığım görüntüler için Fiji-ImageJ yazılım araçlarına da uğramışlığım vardır. Arayüzü diğer çalıştığım etiketleme programlarına göre çok daha eski kalmış durumda diye düşünüyorum. Yazılımsal açıdan yapmak istediğiniz işlemleri gerçekleştirebilirsiniz elbette, ancak bana göre bir yazılımın kullanıcıyı tasarımsal açıdan da doyurması gerekmektedir.
Image Toolbox Matlab
Yukarıda verdiğim görsel kişisel bilgisayarımda çalıştığım proje sırasında aldığım bir ekran görüntüsü idi. Matlab platformunda çalışırken verileri aktif edebilmek için öncellikle güncelleme yapmak gerekiyordu. Bu sebeple güncelleme yaptıktan sonra görüntüleri tanımlamaya devam ettim. ImageJ kullanıcıları için Matlab eklentisinin kurulması sırasında yüklenecek paket aşağıda verilmektedir.
ImageJ Matlab

📍Matlab Image Labeler

Image Labeler uygulaması, bir video veya görüntü dizisinde dikdörtgen ilgi alanı (ROI) etiketlerini, polyline ROI etiketlerini, piksel ROI etiketlerini ve sahne etiketlerini işaretlemenin kolay bir yolunu sunar. Örnek olması için bu uygulamayı kullanarak size göstererek başlamış olur [4]:

  • Bir resim koleksiyonundan bir resim çerçevesini el ile etiketleme
  • Bir Otomasyon algoritması kullanarak görüntü çerçeveleri arasında otomatik olarak etiketleme
  • Etiketli lokasyon gerçeği verilerini dışa aktarma

Image Toolbox Matlab
Yukarıda gördüğünüz görselde Matlab Image Labeler yazılımını kullanarak segmentasyon işlemi yapabiliyoruz. Daha doğrusu verileri ROI bölgelerine ayırarak etiketleme yapmamız mümkündür. Ayrıca, daha önce var olan algoritmaları kullanmanız mümkün olduğu gibi kendinize ait algoritmanızı da veriler üzerinde test edip çalıştırabiliyorsunuz.
Selection ROI
Matlab’ın yetkili dokümantasyonundan aldığım bu görselde sol menüde seçtiğiniz sınırlayıcı bölgelerin etiket isimleri girilmektedir. Nesnenin sınıfına göre bir etiket rengi atanmaktadır. Bu şekilde etiketlerimizi oluşturmamız da oldukça mümkün. Bir sonraki yazıda ise diğer etiketleme araçlarından bahsedeceğim. Görüşmek dileğiyle ✨

REFERANSLAR
  1. https://medium.com/@abelling/comparison-of-different-labelling-tools-for-computer-vision-f3afd678da76.
  2. http://www.colabeler.com.
  3. From Wikipedia, The Free Encyclopedia, ImageJ, https://en.wikipedia.org/wiki/ImageJ.
  4. MathWorks, Get Started with the Image Labeler, https://www.mathworks.com/help/vision/ug/get-started-with-the-image-labeler.html.
  5. https://chatbotslife.com/how-to-organize-data-labeling-for-machine-learning-approaches-and-tools-5ede48aeb8e8.
  6. https://blog.cloudera.com/learning-with-limited-labeled-data/.

SSD(Single Shot Multibox Detector) model from A to Z

In this article, we will learn the SSD MultiBox object detection technique from A to Z with all its descriptions. Because the SSD model works much faster than the RCNN or even Faster R-CNN architecture, it is sometimes used when it comes to object detection.
This model, introduced by Liu and his colleagues in 2016, detects an object using background information [2]. Single Shot Multibox Detector i.e. single shot multibox detection (SSD) with fast and easy modeling will be done. And what can be mentioned by one shot? As you can understand from the name, it offers us the ability to detect objects at once.

I’ve collated a lot of documents, videos to give you accurate information, and I’m starting to tell you the whole alphabet of the job. In RCNN networks, regions that are likely to be objects were primarily identified, and then these regions were classified with Fully Connected layers. Object detection is performed in 2 separate stages with the RCNN network, while SSD performs these operations in one step.
As a first step, let’s examine the SSD architecture closely. If the image sounds a little small, you can zoom in and see the contents and dimensions of the convolution layers.

An image is given as input to the architecture as usual. This image is then passed through convolutional neural networks. If you have noticed, the dimensions of convolutional neural networks are different. In this way, different feature maps are extracted in the model. This is a desirable situation. A certain amount of limiting rectangles is obtained using a 3×3 convolutional filter on property maps.
Samples
Because these created rectangles are on the activation map, they are extremely good at detecting objects of different sizes. In the first image I gave, an image of 300×300 was sent as input. If you notice, the image sizes have been reduced as you progress. In the most recent convolutional nerve model, the size was reduced to 1. Comparisons are made between the limits set during the training process and the estimates realized as a result of the test. A 50% method is used to find the best among these estimates. A result greater than 50% is selected. You can think of it as the situation that exists in logistical regression.
For example, the image dimensions are 10×10×512 in Conv8_2. It will have outputs (classes + 4) for each bounding box when the 3×3 convolutional operation is applied and using 4 bounding boxes. Thus, in Conv8_2, the output is 10×10×4×(C+4). Assume that there are 10 object classes for object detection and an additional background class. Thus output 10×10×4×(11+4)=6000 will be. Bounding boxes will reach the number 10×10×4 = 400. It ends the image it receives as input as a sizeable Tensor output. In a video I researched, I listened to a descriptive comment about this district election:

Instead of performing different operations for each region, we perform all forecasts on the CNN network at once.

Grid
4 bounding boxes are estimated in each cell in the area on the right side, while the image seen on the left in the image above is original [3]. In the grid structures seen here, there are bounding rectangles. In this way, an attempt is made to estimate the actual region in which the object is located.
Results
In the documents I researched, I scratched with the example I gave above. I really wanted to share it with you, because it is an enormous resource for understanding SSD architecture. Look, if you’ve noticed, he’s assigned a percentage to objects that are likely to be in the visual. For example, he gave the car a 50% result. But he will win because the odds above 50% will be higher. So in this visual, the probability that it is a person and a bicycle is more likely than it is a car. I wish you understood the SSD structure. In my next article, I will show you how to code the SSD model.Hope you stay healthy ✨

REFERENCES

  1. Face and Object Recognition with computer vision | R-CNN, SSD, GANs, Udemy.
  2. Dive to Deep Learning, 13.7. Single Shot Multibox Detection (SSD), https://d2l.ai/chapter_computer-vision/ssd.html.
  3. https://jonathan-hui.medium.com/ssd-object-detection-single-shot-multibox-detector-for-real-time-processing-9bd8deac0e06.
  4. https://towardsdatascience.com/review-ssd-single-shot-detector-object-detection-851a94607d11.
  5. https://towardsdatascience.com/understanding-ssd-multibox-real-time-object-detection-in-deep-learning-495ef744fab.
  6. Single-Shot Bidirectional Pyramid Networks for High-Quality Object Detection, https://www.groundai.com/project/single-shot-bidirectional-pyramid-networks-for-high-quality-object-detection/1.

A'dan Z'ye SSD (Single Shot Multibox Detector) Modeli

Bu yazıda, SSD MultiBox nesne algılama tekniğini A’dan Z’ye tüm açıklamaları ile birlikte öğreneceğiz. SSD modeli, RCNN hatta Faster R-CNN mimarisine göre çok daha hızlı çalıştığı için kimi zaman nesne tespiti söz konusu olduğunda kullanılmaktadır.
Liu ve arkadaşları tarafından 2016 senesinde ortaya konulan bu model, arka plan bilgisini kullanarak nesneyi algılamaktadır [2]. Single Shot Multibox Detector yani Tek Atış Çoklu Kutu Algılama (SSD) ilehızlı ve kolay modelleme yapılacaktır. Peki ya tek atış derken neden bahsediliyor olabilir? Adından da anlayacağınız üzere tek seferde nesne algılama imkanını bize sunmaktadır.

Doğru bilgiler vermek adına birçok doküman, video kayıtlarını harmanladım ve sizlere işin tüm alfabesini anlatmaya başlıyorum. RCNN ağlarda öncelikli olarak nesne olması muhtemel bölgeler belirleniyordu ve daha sonra Fully Connected katmanlar ile bu bölgeler sınıflandırılıyordu. RCNN ağı ile nesne tespiti 2 ayrı aşamada gerçekleştirilirken SSD bu işlemleri tek adımda uygulamaktadır.
İlk adım olarak SSD mimarisini yakından inceleyelim. Görüntü biraz ufak geliyorsa yakınlaştırarak konvolüsyon katmanlarının içeriklerini ve boyutlarını görebilirsiniz.

Mimariye her zamanki gibi girdi olarak bir görüntü verilmektedir. Daha sonra bu görüntü konvolüsyonel sinir ağlarından geçirilmektedir. Dikkat ettiyseniz konvolüsyonel sinir ağlarının boyutları farklıdır. Bu şekilde modelde farklı özellik haritaları (feature maps) çıkarılmaktadır. Bu durum istenilen bir durumdur. Özellik haritalarında 3x3lük evrişimsel filtre kullanılarak belirli miktarda sınırlayıcı dikdörtgen elde edilmektedir.
Ek Açıklamalar
Oluşturulmuş bu dikdörtgenler aktivasyon haritasında olduğu için farklı boyutlardaki nesneleri algılamada son derece iyi seviyededir. İlk verdiğim görselde girdi olarak 300×300’lük bir görüntü gönderilmiştir. Dikkat edecek olursanız ilerledikçe görüntü boyutları düşürülmüştür. En son gerçekleşen konvolüsyonel sinir modelinde ise boyut 1 olana kadar düşürülmüştür. Eğitim sürecinde belirlenen sınırlar ile test sonucunda gerçekleşen tahminler arasında karşılaştırma yapılmaktadır. Bu tahminler arasında en iyiyi bulmak için %50 methodu kullanılmaktadır. %50′ den büyük olan sonuç seçilmektedir. Tıpkı lojistik regresyonda var olan durum gibi düşünebilirsiniz.
Örneğin, görüntü boyutları Conv8_2’de 10×10×512 boyutundadır. 3×3 konvolüsyonel işlemi uygulandığında ve 4 sınırlayıcı kutu kullanılarak her sınırlayıcı kutu için (classes + 4) çıkışlara sahip olacaktır. Böylece, Conv8_2’de çıkış 10×10×4×(c+4) ‘ dir. Nesne algılama için 10 nesne sınıfı ve ek olarak bir arka plan sınıfı olduğunu varsayalım. Böylelikle çıktı 10×10×4×(11+4)=6000 olacaktır. Sınırlayıcı kutular ise 10×10×4 = 400 sayısına ulaşacaktır. Girdi olarak aldığı görüntüyü büyükçe bir tensör çıktısı olarak sonlandırıyor. Araştırdığım bir videoda bu bölge seçimleri ile ilgili şöyle açıklayıcı bir yorum dinlemiştim:

Her bölge için farklı işlemler yapmak yerine bütün tahminleri tek seferde CNN ağında gerçekleştirmekteyiz.

Yukarıdaki görselde solda görülen görüntü orijinal iken sağ tarafta yer alan bölgedeki her hücrede 4 sınırlayıcı kutu tahmini yapılmaktadır [3]. Burada görülen grid yapıları içerisinde sınırlayıcı dikdörtgenler bulunmaktadır. Bu şekilde nesnenin yer aldığı gerçek bölgenin tahmini yapılmaya çalışılmaktadır.
Results
Araştırdığım dokümanlarda yukarıda verdiğim örnek ile kaşılaştım. Gerçekten SSD mimarisini anlamak adına muazzam bir kaynak olduğu için sizler ile de paylaşmak istedim. Bakın dikkat ettiyseniz görselde olması muhtemel nesnelere bir yüzdelik atamış. Örneğin arabaya %50 sonucunu vermiş. Ancak %50′ nin üzerindeki ihtimaller daha yüksel ihtimal olacağı için kazanmış olacaktır. Yani bu görselde bir insan ve bir bisiklet olma ihtimali araba olmasından daha yüksek ihtimallidir. SSD yapısını anlamış olmanızı diliyorum. Bir sonraki yazımda ise SSD modelinin kodlanmasını göstereceğim. Esen kalmanız dileğiyle ✨
 

REFERANSLAR

  1. Bilgisayar Görüşü ile Yüz ve Nesne Tanıma | R-CNN, SSD, GANs, Udemy.
  2. Dive to Deep Learning, 13.7. Single Shot Multibox Detection (SSD), https://d2l.ai/chapter_computer-vision/ssd.html.
  3. https://jonathan-hui.medium.com/ssd-object-detection-single-shot-multibox-detector-for-real-time-processing-9bd8deac0e06.
  4. https://towardsdatascience.com/review-ssd-single-shot-detector-object-detection-851a94607d11.
  5. https://towardsdatascience.com/understanding-ssd-multibox-real-time-object-detection-in-deep-learning-495ef744fab.
  6. Single-Shot Bidirectional Pyramid Networks for High-Quality Object Detection, https://www.groundai.com/project/single-shot-bidirectional-pyramid-networks-for-high-quality-object-detection/1.

Mobile Application Development

FaCiPa Series – 3

FaCiPa Series 2 I wanted to write the mobile application side, which is the last series of my articles because I got very nice returns leftover from my article. It’s an amazing feeling to be able to talk to you today about the project I’ve been developing for a year! In this article, we will talk with you about FaCiPa’s mobile interface.
Since the project included Python programming language and API-side encodings, different options such as kiwi or Ionic were available as a platform. Other articles I have written for Ionic can be found at the links below. In these links, you can briefly get information about What is Ionic, The working structure of the Ionic project, and its use with the Semantic UI. In addition, since TypeScript is written with a code structure, you can also review the article I wrote about it. Below are the most common explanations about the Ionic Framework:

👉 This open source library is built on Cordova.
👉 It is a library that allows even Web developers to develop mobile applications.

Mobile Application Design
First, we start by creating a new project on the Ionic Framework, the mobile platform for FaCiPa.

Then we create a page with the ionic generate command.
Generate Page
Ionic Page
In the application, there is a home page, registration page, and analysis page to start with, so 4 pages should be created together with the home page in total.
All files

FACIPA MOBILE INTERFACE

The framework that will be used in FaCiPa’ s mobile interface has been selected as Ionic. More use of mobile devices than computers, the increase of mobile applications, the diversity of mobile devices, and the presence of different operating systems have led software developers to find different mobile solutions. In addition to native application development, it has become an important need to create an application structure that can also be run on any platform over time, and hybrid applications that can be developed with the support of languages such as HTML5 and JavaScript have emerged [1].
Ionic Framework, especially Angular.js, the first choice of programmers with JS or Angular 2 experience is usually Ionic. Open source, Ionic is home to thousands of mobile apps with thousands of followers and supporters. The Ionic Framework, which in its own words has “first-class” documentation, is a convenient and easy-to-learn library.
🏗 The Ionic Framework is built on Cordova. Cordova provides access to the hardware and system resources of the mobile device. You can run it on mobile operating systems such as Android, IOS, or Windows Phone. You can even publish this app as a mobile-compatible website in a convenient way. HTML, JavaScript, and Angular are basically the basis for developing applications with Ionic. knowing js will be enough. Visual Studio Cide platform was used as a platform in the project. The designs of the application are src\pages\home\home.html like .HTML files with the HTML extension are laid out with HTML5. The necessary CSS designs are src\pages\home\home.scss like .scss files it was done in files with the SCSS Extension [1].
📷 The photos that will be used in the project are determined to be taken from the user in the first step and then reduced to 1 photo in order to not tire the user and reduce the processing load of the machine. The user receives the app from Mobile stores and instantly takes photos and sends this photo to the server for processing.
🛡 The backend section of the application is src\pages\home\home.like ts .files with the TS extension are made in TypeScript.
Upload Camera

IONIC ALERT (ION-ALERT) PLUGIN

A warning appears above the content of the application and must be manually removed by the user so that they can continue to interact with the application. In the application, an ion-alert warning is given for the user to take the correct photo.
🔎 Title: Title of the warning box
🔎 Subtitle: Warning text
🔎 Buttons: The button used to remove the warning if the OK button is clicked, the photoOne() method is executed and the photo is taken.
Ionic Alert

IONIC CAMERA PLUGIN

The Ionic camera plug-in is a necessary plug-in for taking photos or videos from mobile devices. Cordova plugin requires: cordova-plugin-camera
🔎 Quality
🔎 destinationType: Destination Type
🔎 encodingType: Coding Types
🔎 media Type: Media Type (Picture)
Install Camera
Install Cam

FIRST DRAFT DRAWINGS OF THE PROJECT

Wireframe Templates
As content, you can design your application’s pages completely freely. The wireframe drawing you saw above was a drawing designed when the project first started. Then we created the designs of the project. I have to say as a footnote that, unfortunately, our product does not support English, so I have to share it in Turkish.
Facipa
The visuals I have given above are the analysis page of the project and the feedback on the analysis result. Thus, we have come to the end of FaCiPa. Thank you for following it patiently. Stay healthy ✨

REFERENCES

  1. http://devnot.com/2016/hibrit-uygulama-catisi-ionic-i-taniyalim/
  2. R. L. Delinger, J. M. VanSwearingen, J. F. Cohn, K. L. Schmidt, “Puckering and Blowing Facial Expressions in People With Facial Movement Disorders,” J. Phys Ther, vol. 88, pp. 909-915, August 2008.
  3. The Spreading of Internet and Mobile Technologies: Opportunities and Limitations, Hasan GULER, Yunis SAHİNKAYASİ, Hamide SAHİNKAYASİ. Journal of Social Sciences Volume 7 Issue 14 December 2017, 03.10.2017-27.10.2017.
Mobile Application Development

FaCiPa Serisi 3

FaCiPa Serisi 2 adlı yazımdan geriye kalan çok güzel dönütler elde ettiğim için yazılarımın son serisi olan mobil uygulama tarafını kaleme almak istedim. Bir sene boyunca geliştirdiğim projeyi bugün sizler ile konuşabiliyor olmak inanılmaz bir his! Bu yazıda sizler ile birlikte FaCiPa’ nın mobil arayüzü hakkında konuşacağız.
Projede Python programlama dili ve API taraflı kodlamalar yer aldığı için platform olarak Kiwi veya Ionic gibi farklı seçenekler mevcuttu. Ionic için yazdığım diğer yazılarıma aşağıdaki linklerden ulaşabilirsiniz. Bu bağlantılarda Ionic Nedir?, Ionic Proje Çalışma Yapısı ve Semantic UI ile kullanımı hakkında kısaca bilgiler edinebilirsiniz. Bunun yanı sıra TypeScript kod yapısı ile yazıldığı için bunun ile ilgili yazdığım yazımı da incelemeniz mümkün. Aşağıda Ionic Framework hakkında en sık karşılaştığımız açıklamalara yer vermiş bulunmaktayım:

👉 Açık kaynak kodlu olan bu kütüphane, Cordova üzerine inşa edilmiştir.

👉 Web geliştiricisi olanların bile mobil uygulama geliştirmesine olanak sağlayan bir kütüphanedir.

Mobile Application Design
İlk olarak işe FaCiPa için mobil platformu olan Ionic Framework üzerinde yeni bir proje oluşturmakla başlıyoruz.
Ionic Start
Daha sonra ionic generate komutu ile sayfa (page) oluşturuyoruz.
Generate Page
Ionic Page
Uygulamada başlangıç için giriş sayfası, kayıt ol sayfası ve analiz sayfası olması sebebiyke toplamda ana sayfa ile birlikte 4 adet sayfa oluşturulması gerekmektedir.
All files

FACIPA MOBİL ARAYÜZÜ

FaCiPa’ nın mobil arayüzünde kullanılacak olan framework Ionic olarak seçilmiştir. Mobil cihazların bilgisayarlardan daha fazla kullanılması, mobil uygulamaların artması, mobil cihazların çeşitliliği ve farklı işletim sistemlerinin bulunması yazılım geliştiricileri farklı mobil çözümler bulmaya yönlendirdi. Native uygulama geliştirmenin yanında zamanla her platformda da çalıştırılabilen bir uygulama yapısı kurmak önemli bir ihtiyaç haline geldi ve HTML5 ile JavaScript gibi dillerin desteğiyle geliştirilebilen hibrit uygulamalar ortaya çıktı [1].
Ionic Framework, bilhassa Angular.js veya Angular 2 deneyimi olan yazılımcıların ilk tercihi genellikle Ionic olmaktadır. Açık kaynak olan Ionic, binlerce takipçisi ve destekçisi ile binlerce mobil uygulamaya ev sahipliği yapmaktadır. Kendi ifadeleriyle “first-class” bir dokümantasyona sahip olan Ionic Framework kullanışlı ve öğrenmesi kolay kütüphanedir.

🏗Ionic Framework, Cordova üzerine inşa edilmiştir. Mobil cihazın donanımına ve sistem kaynaklarına erişim gibi işlemler Cordova sayesinde yapılmaktadır. Android, IOS veya Windows Phone gibi mobil işletim sistemlerinde çalıştırabilirsiniz. Hatta bu uygulamayı rahat şekilde mobil uyumlu bir web sitesi olarak da yayınlayabilirsiniz. Ionic ile uygulama geliştirebilmek için temel olarak HTMLJavaScript ve Angular.js bilmek yeterli olacaktır. Projede platform olarak Visual Studio Cide platformu kullanılmıştır. Uygulamanın tasarımları src\pages\home\home.html gibi .html uzantılı dosyalarda HTML5 ile ortaya konulmuştur. Gerekli CSS tasarımları ise  src\pages\home\home.scss gibi .scss uzantılı dosyalarda yapıldı [1].

📷Projede kullanılacak olan fotoğraflar ilk adımda kullanıcıdan 3 adet alınacak olarak belirlenmiş olup daha sonra kullanıcıyı yormamak ve makinenin işlem yükünü azaltmak adına 1 adet fotoğrafa indirgenmiştir. Kullanıcı uygulamayı mobil mağazalardan temin ederek anlık olarak fotoğraf çekmekte ve bu fotoğrafı sunucuya işlenmek üzere göndermektedir.
🛡Uygulamanın Backend bölümü ise src\pages\home\home.ts gibi .ts uzantılı dosyalarda TypeScript dilinde yapılmıştır.
Upload Camera

IONIC UYARI(ION-ALERT) EKLENTİSİ

Uygulamanın içeriğinin üstünde bir uyarı belirir ve uygulama ile etkileşime devam edebilmeleri için kullanıcı tarafından manuel olarak kaldırılması gerekir.  Uygulamada kullanıcının doğru şekilde fotoğrafı çekmesi için ion-alert ile uyarı veriliyor.
🔎 Title: Uyarı kutucuğunun başlığı
🔎 Subtitle: Uyarı metni
🔎 Butons: Uyarının kalkması için kullanılan buton eğer Tamam butonuna tıklanırsa photoOne() metodu çalıştırılıyor ve fotoğraf çekme işlemi yaptırılıyor.
Ionic Alert

IONIC KAMERA EKLENTİSİ

Ionic kamera eklentisi mobil cihazlardan fotoğraf ya da video çekmek için gerekli bir eklentidir. Cordova eklentisi gerektirir: cordova-plugin-camera
🔎 Quality: Kalite
🔎 destinationType: Hedef Türü
🔎 encodingType: Kodlama Türü
🔎 media Type:Medya Tipi (Picture) olması fotoğraf olduğunu belirtir.
Install Camera
Install Cam

PROJENİN İLK TASLAK ÇİZİMLERİ

Wireframe Templates
İçerik olarak uygulamanızın sayfalarını tamamen özgürce tasarlayabilirsiniz. Yukarıda gördüğünüz wireframe çizimi projeye ilk başlandığında tasarlanan bir çizimdi. Daha sonra projenin tasarımlarını oluşturduk.
Facipa
Yukarıda yer verdiğim görseller projenin analiz sayfası ve analiz sonucundaki dönütlerdir. Böylelikle FaCiPa’nın sonuna gelmiş olduk. Sabırla takip ettiğiniz için teşekkür ederim. Sağlıcakla kalın ✨
 

REFERANSLAR

  1. http://devnot.com/2016/hibrit-uygulama-catisi-ionic-i-taniyalim/
  2. R. L. Delinger, J. M. VanSwearingen, J. F. Cohn, K. L. Schmidt, “Puckering and Blowing Facial Expressions in People With Facial Movement Disorders,” J. Phys Ther, vol. 88, pp. 909-915, August 2008.
  3. İnternet Ve Mobil Teknolojilerin Yaygınlaşması: Fırsatlar Ve Sınırlılıklar, Hasan GÜLER, Yunis ŞAHİNKAYASI, Hamide ŞAHİNKAYASI. Sosyal Bilimler Dergisi Cilt 7 Sayı 14 Aralık 2017 Makale Gön. ve Onay Tar.: 03.10.2017-27.10.2017

 

Featured Image

Article Review – Tooth Detection with Mask RCNN

In this article, I will review the article ‘Tooth Detection and Segmentation with Mask R-CNN [1]’ published at the Second International Conference on Artificial Intelligence in Information and communication. This article describes the implementation of automatic tooth detection and segmentation on Mask RCNN’s dental images. The article, it is aimed to identify only females and divide them into segments.

It should be noted that Mask RCNN has a good segmentation effect even in complex and crowded dental structures ⚠️

If you are dealing in this area like me, the things we need to pay attention to first when reviewing an article will be keywords (keywords). The keywords in this article were selected as Mask R-CNN, Object Detection, Semantic Segmentation, and Tooth. We continue to do our research on these keywords.

A one-step network such as the Fully Convolutional Neural Network (FCN), You only Look Once (YOLO) and Single Shot multibox Detector (SSD) are 100-1000 times faster than the region-recommended algorithm [3], [4], [5].

Technical Approaches

❇️ Data Collection

Since there is no public data set, 100 images were collected from the hospital and the data set was trained. Of these images, 80 images are divided into educational data. The remaining 10 images are verification data, while the other 10 images are test data. Images of different distances and lighting and people of different sexes and ages were selected within the project. (Challenge for the network)

❇️ Tag Images Annotation

Labelme is an image tagging tool developed by MIT’s Computer Science and artificial intelligence laboratory (CSAIL) [6]. Provides tools for tagging object edges. When annotating images, multiple polygons will form around the teeth. An example of this utility can be seen in Figure 1. Saves corner coordinates in a JSON file for an image. Since it is a manual operation, there will be a small error when annotating images. However, it does not affect the overall evaluation of the model. Since there is only one category, the tooth part is labeled as 1. The rest that is considered a background is labeled as 0.

❇️ Deep Network Architecture Details

 

Mask RCNN Workflow

                                                           Mask R-CNN Architecture


You can see the Mask R-CNN architecture in the figure above. Mask R-CNN consists of several modules. Mask R-CNN, an extension of Faster-RCNN, includes a branch of convolution networks to perform the sample segmentation task. This branch is a standard convolutional neural network that serves as a feature extractor. In principle, this backbone network can be any network that extracts image features such as ResNet-50 or ResNet-101. In addition, to perform multi-scale detection, a feature pyramid network (FPN) is used in the backbone network. FPN improves the standard feature extraction pyramid by adding a second pyramid that takes the top-level features from the first pyramid and passes them to the lower layers. A deeper ResNet101 + FPN backbone was used in this project.
Step by Step Detection

                                                                   Mask R-CNN Working Structure

🔍 Details Of Architecture

A Roi align method for changing the ROI pool has been proposed. RoIAlign can maintain an approximate spatial position. RPN regression results are usually decimal and require integrals. The boxes obtained by RPN must be joined at the same maximum pooling size before entering the fully connected layer. During the project process, it was reported that the Integral was also needed, allowing RoIAlign to eliminate the integral process and protect the decimals. It is accurate for detection and segmentation. The classification combines the loss values of RoI regression and segmentation. Classification and ROI regression loss are no different from normal object detection networks. The mask loss branch is a convolutional neural network with ROI as the input and output is a small mask of size 28×28.

✅ Results

As the data will be trained at 50 epochs, 20 epochs of the data will be trained to start with, and 30 epochs will be trained to fine-tune all layers. The total loss value is 0.3093, consisting of bounding box loss, class loss, mask loss, and RPN loss. The total loss curve is shown in Figure 4. The final test result is also shown to be (a) the best result and (b) the worst.

                                                                         Total loss curve


The Pixel Accuracy (PA) method is the simplest and most effective method for evaluating results. The best result was 97.4% PA and the worst was 90.1%. Since there are a small number of prosthetic samples in the dental samples found in the project, the accuracy of prosthetic detection was low.
Final Test Sonuçları

              Final test results. (a) best individual result example, (b) worst individual result example 

REFERENCES

  1. Guohua Zhu, Zewen Piao, Suk Chan Kim, Department of Electronics Engineering, Pusan National University, Tooth Detection and Segmentation with Mask R-CNN, ICAIIC 2020.
  2. https://github.com/fcsiba/DentAid.
  3. Shelhamer, E., Long, J., and Darrell, T. Fully convolutional networks for semantic segmentation. IEEE Trans. Pattern Anal. Mach. Intell. 39, 4 (Apr. 2017), 640–651. 1, 2.
  4. Redmon, J., and Farhadi, A. Yolov3: An incremental improvement. arXiv (2018). 1
  5. Liu, W., Anguelov, D., Erhan, D., Szegedy, C., Reed, S., Fu, C.-Y., and Berg, A. C. Ssd: Single shot multibox detector. To appear. 1
  6. B. Russell, A. Torralba, and W. T. Freeman, Labelme, The Open Annotation Tool MIT, Computer Science, and Artificial Intelligence Laboratory [Online]. Available: http://labelme.csail.mit.ed.
  7. Zhiming Cui, Changjian Li, Wenping Wang, The University of Hong Kong, ToothNet: Automatic Tooth Instance Segmentation and Identification from Cone Beam CT Images.
Image Segmentation

Mask R-CNN ile Görüntü Segmentasyonu

Görüntü Segmentasyonu

Son zamanlarda çok sık uğraştığım CNN mimarilerine yenilerini ekleyerek öğrenmeye devam etmekteyim. Daha önceki yazımda görüntü segmentasyonunun ne anlama geldiğini örnekler ile betimlemiştim. Eğer ilgilenirseniz profilimden ulaşabilirsiniz. Görüntü segmentasyonu alanında şöyle açıklayıcı bir yorum okumuştum:

Görüntü segmentasyonu, görüntüdeki her pikseli belirli bir kategoriye ait olarak sınıflandırma işlemidir.

Buradan yola çıkarak amacımızın sınıflandırmaya yönelik yardımcı maskelerin belirlenmesi olduğunu da gözlemleyebiliriz. Daha önceki yazımda sizlere segmentasyon işleminin neden ve nasıl yapıldığını aktarmıştım. Bu konuda daha çok bilgilenmek istiyorsanız eğer yazımı incelemenizi tavsiye ederim. Görüntü işleme ve derin öğrenme alanında yaptığım birçok çalışmada baz aldığım bir site önerisi vereceğim. Umarım benim kadar sizlere de yardımcı olabilir. Takıldığım her noktada

Sınıflandırma gerçekleştirilirken bir girdi (input) görüntüsünün içeriğini analiz etmek için bir dizi etiket tahmin edilmektedir. Ancak segmentasyonda bu tahmin işlemi gerçekleştirilirken aynı nesne olma ihtimali olan pikseller boyanmaktadır. Segmentasyonun anlaşıldığını umut ederek biraz daha teknik yaklaşıyorum ve konunun Mask RCNN kısmına geçiyorum.

Mask R-CNN

Mask-RCNN, mantıksal açıdan Faster-RCNN’ e benzerlik göstermektedir. Peki bu Faster-RCNN tam olarak ne yapmaktadır? Görüntüde bulunan objeleri maskeleyerek bizlere nesne tanıma imkanı sağlamaktadır. Bakın bu maskeleme işlemi çok mühimdir. Mask-RCNN de maskeleme işlemi yapılmaktadır. Ancak şöyle bir durum mevcut, Mask-RCNN yapısı gereği eklenen bölüm için binary değer kullanmaktadır. Yani demek istediğim tanınacak obje için maske kullanılacak ise 1, kullanılmayacak ise 0 değeri çıkarmaktadır.

Semantic segmentation (Anlamsal bölümleme)’ ın amacı, nesne örneklerini ayırt etmeden bir nesnenin her pikselini bilinen kategoriler halinde sınıflandırmaktır. Instance Segmentation ise, tespit edilen her nesnenin sınıflandırıldığı, yerelleştirildiği ve bölümlere ayrıldığı bu iki klasik bilgisayarlı görü görevini (algılama ve anlamsal bölümleme) birleştirir [2]. Burada önereceğim sistemde görüntüler için nesnelerin segmentasyonunda Mask R-CNN kullanmaktadır. Bunun yanı sıra terimleri dikkat ettiyseniz İngilizce kullanıyorum çünkü terimler kalıplaştığı için Türkçe söylendiğinde kulağıma tuhaf geliyor. Siz nasıl isterseniz öyle devam edebilirsiniz.

Faster R-CNN’nin bir uzantısı olarak Mask R-CNN, instance segmentation görevini gerçekleştirmek için evrişimli ağların bir dalını içerir. ResNet101’den özellikleri çıkardıktan sonra, bu özellikler bir feature pyramid network (FPN) oluşturur; burada nihai olarak bağlantılar (anchors) tanımlanır ve ilgili bölgeler (RoI’ler) çıkarılır [3].

Mask R-CNN Çalışma Yapısı

ROI Align modülünden çıkan iki adet evrişim CONV katmanı bulunmaktadır. Bu katmanlar, görüntüdeki maskemizin gerçekte oluşturulduğu yerdir [1]. CONV katmanından daha önce bahsetmiştim. Görüntüde yer alan pikseller teker teker taranıp evrişim işlemi uygulanmaktadır. Şimdi sizlere çok daha önemli bir detay paylaşacağım. Bildiğimiz gibi, Faster R-CNN / Mask R-CNN mimarileri, bir görüntünün potansiyel olarak bir nesne içeren bölgelerini oluşturmak için Bölge Teklif Ağı’ndan (RPN-Region Proposal Network) yararlanır. Bu bölgelerin her biri,“objectness score” yani “nesnelik puanına” ( belirli bir bölgenin potansiyel olarak bir nesne içerme olasılığı) göre sıralanır ve ardından en güvenli ilk N adet nesne bölgesi tutulur [1]. Böylelikle tespit edilecek nesneye daha dikkatli yaklaşmış olmaktayız. Görüntülerde seçilen 300 adet ROI (Region of Interest) bölgesinin her biri, ağın üç paralel şubesinden geçecektir:

  • Etiket tahmini (Label prediction): Nesnenin hangi sınıfa (türe) ait olduğunu belirleyen etiketler tahmin edilir.
  • Sınırlayıcı kutu tahmini (Bounding box prediction): Belirlenen nesne etiketleri sınırlayıcı kutular ile çizilir.
  • Maske tahmini (Mask prediction): Daha sonra alınan etiketler baz alınarak kutuların sınırlarından itibaren nesne boyanarak maskelenir.

Mask R-CNN Kod Dizimi

En sık kullandığım Mask R-CNN Github bağlantısını sizler için linkliyorum. Bu kod üzerinden çalışarak nesneler için segmentasyon işlemini birlikte başarabiliriz. Feature Pyramid Network (FPN) ve ResNet101 ağına dayalı oluşturulmuştur.

Oluşturulmuş bu repository içerisinde adım adım tespit anlatılmaktadır. Adım adım ilerlediğinizde önce anchorların filtrelendiğini daha sonra sınırlayıcı kutuların ve maskelerin oluştuğunu göreceksiniz. Daha önceden eğitilmiş COCO veri seti üzerinde nesne tespiti gerçekleştiriliyor. Eğer sizin kendinize ait bir veri setiniz mevcut ise bu verilerde kullanmanızı tavsiye ederim. Bununla birlikte Tensorflow Object Detection API ile nesnelerinizi tespit edecek modeli oluştumanız da mümkün. Bunun ile ilgili bilgilendirici nitelikte bir yazı daha oluşturmuştum, dilerseniz okuyabilirsiniz.

COCO Nedir?

COCO

 

Yukarıdaki görselde de görüldüğü üzere İngilizce Bağlam İçinde Ortak Nesneler anlamına gelen Common Objects in Context kelimesinin belirli harflerinden oluşmaktadır.

Ne İşe Yarar? [6]

  • Nesne segmentasyonu
  • Bağlam içinde tanıma
  • Superpiksel malzeme segmentasyonu
  • 330.000 görüntü (> 200.000 etiketli)
  • 1,5 milyon nesne örneği
  • 80 nesne kategorisi
  • 91 malzeme kategorisi
  • Resim başına 5 başlık
  • Kilit noktalara (keypoints) sahip 250.000 kişi görüntüsü

Görselde eğitilmiş Coco veri setini ve modülleri kullanabileceğimiz kodlara yer verilmektedir. Referans olarak verdiğim Mask RCNN Github bağlantısı üzerinden bu kodlara erişim sağlayabilirsiniz.

Uploading Libraries

Model Direction 

Gördüğünüz üzere Mask RCNN modülünü dahil ederek modeli yüklemeyi başardık. ResNet101 mimarisinin kullanıldığını belirgin konfigürasyonlardan da anlayabiliriz.

Backbone ResNet101

Ardından COCO veri setinde yer alan sınıfları bu şekilde inceleyebiliriz.

Class Names

Sonuç olarak nesne tespitinde son adıma gelmiş bulunmaktayız. Görüntüde yer alan objeleri yüzde değerleri vererek tanımayı başarmıştır. Umarım anlattıklarım sizler için bir nebze faydalı olabilmiştir. Herkese iyi kodlamalar ve güzel günler dilerim 😇

 

REFERANSLAR

  1. https://www.pyimagesearch.com/2018/11/19/mask-r-cnn-with-opencv/
  2. Gil Jader, Jefferson Fontinele, Marco Ruiz, Kalyf Abdalla, Matheus Pithon, Luciano Oliveira, Intelligent Vision Research Lab, Deep instance segmentation of teeth in panoramic X-ray images, 2018 31st SIBGRAPI Conference on Graphics.
  3. S. Ren, K. He, R. Girshick, and J. Sun, “Faster r-cnn: Towards real-time object detection with region proposal networks,” in Advances in neural information processing systems, 2015, pp. 91–99.
  4. https://en.wikipedia.org/wiki/Image_segmentation.
  5. https://github.com/matterport/Mask_RCNN.
  6. https://cocodataset.org/#home.
  7. https://modelzoo.co/model/mask-r-cnn-keras.

Facial Paralysis Assistant: FaCiPa

Hello everyone, as I promised you before, I’m here to introduce FaCiPa. I will introduce you to the details of how to make an application from scratch by approaching the FaCiPa application step by step, which you have come across in many interviews, interviews, and practices. Excuse my excitement today, because I feel like every project I do is my child. So much so that this project is very valuable to me, as it also contains memories from my own life.

Yüz Felci Asistanı: FaCiPa

Daha önce de sizlere söz verdiğim gibi FaCiPa’ yı tanıtmak için buradayım. Birçok röportajda, görüşmede ve uygulamalı olarak denk geldiğiniz FaCiPa uygulamasına adım adım yaklaşarak sıfırdan bir uygulama nasıl yapılabilir detayları ile birlikte sizlere tanıtacağım. Bugün olan heyecanımı biraz mazur görün, çünkü yaptığım her projeyi benim birer çocuğummuş gibi hissediyorum. Öyle ki, bu proje kendi hayatımdan hatıralar da barındırdığı için benim için oldukça değerli.

Sağlık Sektöründe Yapay Zeka

Sağlık hizmetlerinde yapay zekâ, karmaşık tıbbi ve sağlık verilerinin analizinde, yorumlanmasında ve anlaşılmasında insan bilimini taklit etmek için karmaşık algoritmaların veya başka bir deyişle yapay zekanın (AI) kullanılmasıdır. Bir bilgisayar mühendisi olmama rağmen daha önce hayata geçirdiğim uygulamalar genellikle sağlık hizmetlerine de dokunmaktadır.

Görüntü Segmentasyonu (Bölütleme)

Derin öğrenme ve görüntü işleme harmanlandığında nesne tespiti sırasında tabiki en çok bilinen yöntemlerden birisi görüntüleri segmentlere ayırmaktır. Görüntü bölütleme yönteminde, bir bölgedeki piksellerin her biri, renk değerleri, yoğunluğu, doku gibi bazı karakteristik veya hesaplanan özelliklerine göre benzerlikler çıkarıp maskeleme işlemi yapılmaktadır.

In-Depth Artificial Neural Networks

Hello everyone, in this article, I will convey to you the logic of the operation of artificial neural networks, which are recognized as the lifeblood of deep learning and form the basis of artificial intelligence, and the methods of deep learning.