Derin öğrenme ile tekstil tipi tanım
Fabric classification by using deep learning
Yazar: GÖKHAN GÜRGEN
Danışman: PROF. DR. ECE OLCAY GÜNEŞ
İstanbul Teknik Üniversitesi / Fen Bilimleri Enstitüsü / Elektronik ve Haberleşme Mühendisliği Ana Bilim Dalı / Elektronik Mühendisliği Bilim Dalı
Derece: Yüksek Lisans, 2019
Konu: Elektrik ve Elektronik Mühendisliği = Electrical and Electronics Engineering
Dizin: Ev tekstili = Home textile ; Görüntü sınıflandırma = Image classification ; Makine öğrenmesi yöntemleri = Machine learning methods

Özet:
Donanım teknolojisinin ilerlemesi ve işlem gücü yüksek cihazların günlük hayatın her alanına girmesiyle birlikte yazılım temelli uygulamalar sadece bilgisayar veya gömülü sistem uygulamalarında kalmayıp günlük hayatımızda kullandığımız birçok elektronik cihazda görülmeye başlanmıştır. Bununla beraber hemen hemen her yeni geliştirilen ürün veya ekipmanın internete erişebilir olmasıyla birlikte de her konuda çok ciddi boyutlarda veri toplama imkanı yaratılmaktadır. İşlem gücü yüksek sistemlerin gelişmesi, elde edilebilen verilerin artması, internete bağlanabilen cihazların yaygınlaşmasıyla birlikte makine öğrenmesi, yapay zeka gibi konular günlük hayatta kullanılan beyaz eşya, televizyon, küçük ev aletleri gibi ürün gruplarında da uygulanabilir hale gelmiştir. Bu sayede bu tarz ürünlerde de kişiselleştirilmiş kullanıcı deneyiminin arttırılmasına ve sistemin en uygun performansta çalışmasını sağlayacak gerekli kararların yazılım tarafından verilebileceği algoritmaların gelişmesine olanak sağlanmıştır.
Uygun kararları verebilen ve bunları uygulayabilen otonom yapıların gelişmesiyle birlikte malzeme tanıma konusu da bu sistemler için önemli bir problem haline gelmiştir. Robotik uygulamalar, özel üretim süreçleri gibi konulara da girdi sağlayan malzeme tanımlaması üzerinde farklı yöntemler kullanılarak çok sayıda çalışma yapılmıştır. Cam, plastik, metal, tahta gibi temel ayrımların yanı sıra probleme özgü daha alt seviyede sınıflandırmaya odaklanan çalışmaların sayısı da gün geçtikçe artmaktadır.
Tekstil ürünlerine temas eden çamaşır kurutma makinesi, çamaşır yıkama makinesi, ütü gibi ürünler için tekstil tipinin türünün bilinmesi, tekstil ürününe zarar vermeden en uygun performans ile çalışma görevini yerine getirmek açısından oldukça önemlidir. Geleneksel uygulamalarda en uygun performans, kullanıcının seçebileceği tekstil tipine uygun programlarla ya da ayarlayabileceği sıcaklık, süre veya ürüne özgü diğer ayarlarla sağlanmaya çalışılmaktadır. Ancak bu seçim veya ayarlamalarda yapılacak yanlışlıklar, ürünü kullanan kişilerin özellikle de çok değer verdiği giyim ürünleri için istenmeyen sonuçların oluşmasına neden olabilmektedir.
Tekstil ile ilgili olarak lif yapısını tanıma, dokuma tipinin belirlenmesi ya da endüstriyel üretim uygulamalarında dokuma hatalarını tanıma gibi konularda çok sayıda çalışmalar yapılmıştır. Ancak literatür taraması yapıldığında tekstil tipinin tanınması ile ilgili olarak sınırlı sayıda çalışmanın bulunduğu görülmektedir. 
Bu tez çalışmasıyla birlikte tekstil tipi tanıma probleminin karmaşık yapılar, sensör tabanlı sistemler kullanılmadan herkesin kolaylıkla ulaşabileceği herhangi bir kamera ile elde edilecek fotoğraf ile çözülmesi amaçlanmıştır. Bu sayede oluşturulacak model ile hem daha az maliyetli hem de ürüne farklı yollardan girdi sağlayabilecek bir sistem oluşturulabilecektir. Bu sistem doğrudan ürüne entegre edilebileceği gibi, ürün ile haberleşen uzaktan kontrol sağlayan ürün uygulamasının bir özelliği ya da tamamen bağımsız bir uygulama da olabilir. Ancak bu çalışmayla birlikte uygulama yönteminden daha çok kamera ile tekstil parçalarından çok yakından alınacak fotoğraflar ile günlük hayatımızda çok sık kullandığımız tekstil tiplerini sınıflandırma problemi üzerinde durulmuştur. 
Çalışma, derin öğrenme tekniklerinden evrişimsel sinir ağları (CNN-Convolutional Neural Networks) yapılarıyla gerçeklenmiştir. Sınırlı sayıda bulunan benzer bir çalışma için daha önceden hazırlanmış veri seti kullanılmıştır. Bu veri seti öncelikle literatüre girmiş ve çok büyük veri setleriyle öğretilmiş VGG16, VGG19, InceptionResNet, MobileNet, ResNet algoritmaları ile sık kullanılan pamuklu, polyester, kot, yünlü gibi tekstil tiplerini yüksek doğruluk oranlarıyla sınıflandırabildiği görülmüştür.
Bu amaçla, VGG16, VGG19, InceptionResNetV2, MobileNetV2, ResNet50 ve InceptionV3 CNN mimarileri kullanılarak detaylı sonuçlar elde edilmiş ve birbirileriyle karşılaştırılmıştır. ResNet50 ve InceptionResNetV2 ile istenilen sonuçlar elde edilememiş ancak diğer 4 mimari ile test veri kümesi ile yüksek doğruluk oranları elde edilebilmiştir.
VGG16 ve VGG19 için sırasıyla %94,21 ve %94,19 doğruluk oranları elde edilmiştir. InceptionV3 ile %95,16 doğruluk oranı elde edilirken MobileNetV2 ile ise %93,51 doğruluk oranı sağlanmıştır ve tüm çalışmalar için sınıf bazlı doğruluk oranlarını net görebilmek için hata matrisleri detaylı olarak değerlendirilmiştir.
Literatüre girmiş mevcut CNN mimarilerinin yanı sıra probleme özgü bir CNN mimarisi tasarlamak için çalışma yapılmıştır ve test veri kümesi ile elde edilen doğruluk oranı %84,30'tur. ImageNet ile eğitilmiş olan CNN mimarileri ile kıyaslandığı zaman daha düşük başarı oranı olan bu mimarinin, VGG16 ile birlikte kullanıldığı durumda genel performansı, yaklaşık %1 seviyelerinde arttırdığı görülmüştür. Toplam doğruluk oranı %95,51 olarak elde edilmiştir.
Önerilen CNN mimarisi ve VGG16 mimarisinin birlikte kullanılmasıyla elde edilen modeller ve ağırlıkları kaydedilerek taşınabilir ve daha düşük işlem gücü olan bir modül üzerine alınmıştır. Böylece, elde edilen çalışma ucuz ve hızlı bir şekilde prototiplenerek standart bir kamera aracılığıyla çalışmada kullanılan 9 farklı tekstil tipi sınıfı için karar verebilen bir uygulama geliştirilmiştir. Bu uygulama için standart bir Web Cam ile birlikte Raspberry Pi 3 modülü kullanılmıştır.
Bu çalışma için yüksek işlem gücü gerekliliğinden dolayı Google Colab'ın sunduğu ücretsiz GPU hizmeti kullanılmıştır. Geliştirmeler ve çalışmalar Python programlama dili ile yapılmış olup, derin öğrenme katmanları ve işlemleri için TensorFlow alt yapısını kullanan Keras kütüphanesi kullanılmıştır.

Elde edilen bu veriler ile birlikte, hem çalışmanın yapıldığı CNN mimarileri sonuçları hem de literatürde yer alan benzer çalışma sonuçlarına göre karşılaştırma yapılarak tekstilden standart bir kamera ile alınacak görüntü ile tekstil tipi tanıma ve sınıflandırmasının yapılabileceği gösterilmiştir. Aynı zamanda özel bir ekipman ya da uygulama gerektirmemesi nedeniyle ucuz ve hızlıca devreye alınabilir, ürün veya özel çalışmalara entegre edilebilir bir sistemin oluşturulabileceği gösterilmiştir.

Abstract:
Software based applications are not seen in only computer based and embedded systems, but also in many electronic devices that are used in our daily lives owing to advancement of hardware technology and high performance devices. Along with the fact that almost every newly developed product or equipment is connected to the internet, it is possible to collect huge amount of data from every area. Because of high performance systems, collecting data and many devices that can be connected to Internet, algorithms and applications that are developed for machine learning and artificial intelligence can be applied to the devices that are in use in our daily lives such as white goods, household appliances, televisions. In this way, it is possible to increase personalized user experience and to develop algorithms that ensure that the system operates at optimum performance.
With the development of autonomous structures that are capable to make accurate decisions and to perform these decisions, material recognition has become an important problem for these systems. There are many studies that have been carried out different methods on classification of materials. These studies provide progress for applications such as robotic applications and special production process. In addition to basic classification such as glass, metal, plastic, wool, number of studies that are focusing on the lower level of specific classification is increasing day by day. 
Information of type of textile is very important for textile contacting products such as tumble dryers, washing machines, irons in order to perform its task with optimum performance without any damage on textile product. In traditional applications, system performance is tried to provided by user programme selection or adjusting the features such as temperature, time or any other product-specific settings according to textile type. However, wrong or inattentive selections or settings may lead to undesirable consequences for valuable textiles.
Many studies have been carried out in the field of textile such as fiber structure, texture or recoginition of defects on fabrics in industrial applications. However, there are limited number of studies on recognition of textile types.
In this thesis, the aim is to solve textile type recognition problem with a simple camera that can be easily accessed by anyone without using complex structures and sensor based specific systems. In this way, designed model may lead cheaper and more effective solution that can provide different applications for products. This system can be directly integrated into the product, it can be a feature of the product application that provides remote operation or it can be completely independent 3rd party application. However, this is focused more on the problem of classification textile types that we use very frequently in our daily lives by taking photo very closely from textile parts.
The study was implemented with the structure of convolutional neural networks. Data set that is prepared for one study of limited number of studies on textile classification is used. Firstly, previously learned with huge amount data set algorithms such as VGG16, VGG19, InceptionResNet, MobileNet and ResNet was implemented with data set of this study. According to high accuracy rate of these methods, textiles can be classified as frequently used textile materials such as cotton, polyester, denim, wool etc.
For this purpose, VGG16, VGG19, InceptionResNetV2, MobileNetV2, ResNet50 and InceptionV3 CNN architectures were implemented and detailed results of these studies were obtained. Results of these architectures were compared with each other and results of InceptionResNetV2 and ResNet50 are not suffient. However, remaining 4 architectures has the results with high accuracies on test data sets.
VGG16 and VGG19 which are very similar, have the results as 94.21% and 94.19% accuracies on test data sets. The results are also similar. However, implementation speed of VGG16 is much more that VGG19.
InceptionV3 has the result as 95.16%. This is the highest result for architectures that were developed for ImageNet and used in this study.
MobileNetV2 has the result as 93.51% and the architecture has the lowest parameter number than all architectures in this study.
In order to clearly see the results, class-based accuracy rates and confusion matrices were generated for all models. Also, comparison tables were shared for accuracies, parameter numbers, implementation time etc.
In addition to the existing CNN architectures in the literature, a study has been carried out to design a problem specific CNN architecture. The proposed architecture has basically 4 convolutional layers and 3 fully connected layers. For convolutional layers, "relu" activation function is used and for last fully connected layer "softmax" is used as activation function. Despite of small architecture, parameter number is around 1 million. Obtained result from test data for this proposed model is 84.30%. Compared to ImageNet-trained CNN architectures, it has a lower success rate and it is not suitable to use it instead of other architectures. After investigating of class based accuracies and general model, it has higher accuracies than VGG16 for some classes. With this information, accuracy of ensemble usage of proposed architecture and VGG16 is around 1% more than accuracy of VGG16. Total accuracy rate is 95.51% for ensemble usage of proposed model and VGG16. 
Decision method of ensemble method is that if the classification results of both models are not same, a new probability table is generated for all classes from probabilities of models which is max. According to new probability table, classification result is obtained.
Model informations and model weights for all layers were obtained from the ensemble usage of proposed CNN architecture and VGG16 had recorded as ".json" and ".h5" file. In order to implement this model on portable device which has lower processing power, these recorded files were used. Thus, the study was prototyped cheaply and quickly on a portable device with standard camera unit. A small application software was impelemented and the application is able to recognize and classify the fabrics according to 9 different fabric types by using standard camera unit. 9 different fabric types that is used in this study as cotton, denim, fleece, nylon, polyester, silk, terrycloth, wiscose and wool. A Raspberry Pi 3 module and a web cam were used for this application.
Due to high processing power requirement for deep learning algorithms and this study, Google Colab with GPU which is freely offered by Google, is used. Developments and studies are made with Python programming language. In order to develop deep learning algorithms and computational requirements for these architectures, Keras library is used. Keras is a open source library that was developed for Python and it is available to use such kind of low level libraries for deep learning Theano, TensorFlow etc. In this study, TensorFlow is used as backend for Keras library.
Finally, according to obtained results from both proposed CNN architecture and architectures that are implemented for ImageNet, it was shown that fabric recognition and classification can be made by using standard cameras that is take picture from textile units. At the same time, it has been shown that a system or model can be implemented very quickly with low cost and it can be integrated into products or special studies because of not requiring special equipment or application.