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: https://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.