Skip to content

ultimate-dev/mobys

Repository files navigation


Fırat MOBYS - Mermer Ocağı Bilgi Yönetim Sistemi

⚠️ v0.8(Alfa)

Mermer Ocağı Bilgi Yönetim Sistemi (MOBYS), Mermer bloğu satışı yapmakta olan firmalarının mermer bloklarını satıcılarla kolay ve güvenilir şekilde satış yapabilmelerini sağlayacak bir platform oluşturmaktır. Bunun için yapay zeka, görüntü işleme ve blockchain teknolojileri kullanılmıştır.

🔥 Geliştiriciler

Şükrü Taha BIYIK Öğrenci Numarası Görevler
Şükrü Taha BIYIK 195542006 Backend
Burak ÖZDEMİRTAŞ 205541302 Frontend

📁 Dosya Sistemi

  • mobys-web

    1. NPM Paketlerin İndirilmesi
      yarn install
    2. Proje Ayar Dosyalarının Yapılandırılması configs.ts
      export const APP_NAME = "Fırat MOBYS";
      export const OWNER_NAME = "Mermer Ocağı Bilgi Yönetim Sistemi";
      export const API_URL = "http://localhost:2323";
    3. Projenin Başlatılması
      yarn start
  • mobys-app

    1. NPM Paketlerin İndirilmesi
      expo install
    2. Proje Ayar Dosyalarının Yapılandırılması configs.ts
      export const API_URL = "http://127.0.0.1:2323/";
    3. Projenin Başlatılması
      expo start
  • mobys-api

    1. NPM Paketlerin İndirilmesi
      yarn install
    2. Proje Ayar Dosyalarının Yapılandırılması .env
      DATABASE_URL=mysql://admin:123456@127.0.0.1:8889/mobys
      PORT=2323
      SECRET_KEY=marble23
      BASE_URL=http://127.0.0.1:2323
      SERVICE_URL=http://127.0.0.1:5000/
    3. Projenin Başlatılması
      yarn dev
  • mobys-service

    1. Proje Ayar Dosyalarının Yapılandırılması configs.py
      FLASK_CONFIG = {}
      APP_CONFIG = {
       'debug': True,
       'host': '127.0.0.1',
       #'host': '192.168.137.74',
       'port': 5000,
      }
    2. Projenin Başlatılması
      python3 app.py

📆 İş Planı

Sistem Planı

⭐ Sistem Planı

Sistem Planı

📊 SWOT Analizi

SWOT Analizi

#️⃣ Teknoloji Hazırlık Seviyeleri

1️⃣ THS1

Projemizde mermer kalitesi, deseni, kırığı, renk seçimi gibi tespit işlemleri yapılmıştır. Öncelikle bir bilirkişiden mermer kalitesi analizi için gerekli bilgiler alınmıştır. Bu bilgiler doğrultusunda proje gelişiminin sağlanması hedeflenmiştir. Projenin ileri seviyelere yükselmesi için çeşitli desenler araştırılıp, geliştirilmiştir. Mermer kalitesinde mermerin kalite metriklerine özel filtreler uygulanmaya çalışılmıştır. Mermerin renk tespitinde mermer üzerindeki renk çoğunluğu baz alınıp, çoğunlukta olan rengi seçme hedeflenmiştir. Mermer desen tespitinde ise mermerde tekrarlı devam eden desenlerin seçilmesi baz alınmıştır. Mermer kırığında ise mermerin kırığının derecesi, kırık görüntüsünün filtreler ile ortaya çıkarılması hedeflenmiştir.

2️⃣ THS2

Bir mermerin kalitesi genellikle; o mermerin üzerindeki fosiller ve lekeler kadar, mermerin yoğunluğuna ve büyüklüğüne bağlı olarak değişebilmektedir. Çalışmamızda mermer kalitesinin sınıflandırılmasına ilişkin çeşitli klasik yaklaşımlar veya yöntemler ortaya konulmuştur. İlgili çalışmaların çoğunda mermer levhalarının fotoğraflarının kalite sınıflandırma sistemlerine dâhil edilmeden önce; Ortanca(Median) Süzgeç gibi farklı filtrelerle ya da çatlaklık özelliklerinin çıkartılması gibi diğer görüntü ön-işleme sürecinden geçirildiği bilinmektedir. Projemizde ortanca süzgeç fonksiyonu kullanılıp, mermer kırıklarının netleştirilip ortaya çıkarılması sağlanmıştır. Şekil 1’de ortanca (median) süzgeç filtresi gösterilmiştir. image

Şekil 1. Ortanca (median) süzgeç filtresi

Bu çalışmada mermerlerin görsellerine ait resimlerden mermerlerdeki yüzeyler sorunların çözümlenmesi hedeflenmiştir. Çalışmamız ile mermerdeki, çatlaklık, desen, tabakalaşma, çatlak boyut açıklığı, çatlak boyut kapalılığı, mineral yapı, model, mermer kalite sınıfı, renk, homojenlik gibi tespitler mermer sınıflandırılmasına dahil edilmiştir. Projemizde evrişim (convolution) kenar bulma fonksiyonlarından kirsch operatörü kullanılmıştır. Şekil 2’de Evrişim (convulution) kenar bulma fonksiyonlarından kirsch operatörü gösterilmiştir.

image

Şekil 2. Evrişim (convolution) kenar bulma fonksiyonlarından kirsch operatörü

Farklı mermer kalitesine ait mermer fotoğraflarını içeren bir görsel veri seti kullanılarak çalışmada yüksek düzeyde doğruluk oranları elde edilmiştir. Projemizde data setteki görseller Laplacian çekirdeği kullanılarak süzgeçlenmiştir. Aşağıdaki görselde Laplacian çekirdeği kullanılarak süzgeçlenen örnek fotoğrafı görebilirsiniz. Bu projede algoritmalar kullanılarak, mermer levhalarının otomatik olarak sınıflandırılmasını yapan bir sistem ortaya konulmuştur. Şekil 3’de Laplacian filtresi gösterilmiştir.

image

Şekil 3. Orijinal imgenin Laplacian filtresi ile filtrelenip çıkan sonuç görseli

3️⃣ THS3

Bu çalışmada; mermer endüstrisinde yakın gelecekte insan müdahalesini ve insan iş gücü gerekliliklerini minimize edebilecek şekilde, en az mermer eksperlerinin ortaya koyduğu düzeyde doğru sınıflandırmayı, çok hızlı ve etkin bir şekilde, otomatikleştirilmiş olarak yapabilecek yeni bir mermer sınıflandırması modeli ortaya konulmuştur. Bugüne kadar literatürde ki bilinen tüm çalışmalardan farklı olarak; mermer kalitesinin çoklu sınıflandırmasında evrişimsel sinir ağlarının bu düzeyde başarılı sonuç vermesi ve evrişimsel sinir ağlarının doğruluk oranını, aşırı uyumu da engelleyecek şekilde arttıran bazı veri artırım tekniklerinin özgün bir biçimde kullanımı, bu çalışmanın önemini ortaya koyan yeni bir yaklaşımdır.

Bu çalışmada kullanılan farklı filtreler ile mermer fotoğraflarının filtrelenmesi ile ortaya çıkan yapı Şekil 4’de gösterilmiştir.

image

Şekil 4. Farklı algoritmalar ile filtrelenen mermer fotoğrafının ortaya çıkan yapısı

Şekil 4’de de gösterildiği gibi algoritmamız yüzeysel işlevleri yakalamıştır. Yüzeysel sorunların doğruluk oranını arttırmak amacıyla; çalışmamızda çeşitli filtrelerin denenmesine karar verilmiştir. Bu filtrelerin en iyi sonuç verenleri kullanılmıştır. Bu çalışmada; mermer levhalarının görselleri kullanılarak mermer kalitesinin sınıflandırılmasında yeni bir model ve yaklaşım ortaya konulmuştur. Çalışmamızın mermer piyasasına olan katkısı; mermer kalitesinin çoklu sınıflandırılmasında özel olarak tasarlanmış bir evrişimsel modelin mermerleri ek bir iş gücü olmadan, doğruluk payı yüksek olarak sınıflandırmasıdır. Mermer fotoğraflarındaki yüzeysel sorunların iş gücü gerektirmeden, bir ölçüm veya gözleme gerek duymadan somut bir şekilde ortaya koyulmasıdır.

4️⃣ THS4

Bu çalışmada örnekler A, B ve C kalite sınıfı olarak sınıflandırılmaya çalışılmıştır. Sınıflandırma başarısı için belirli doğruluk kriterleri kullanılmıştır. Yöntem olarak Derin Öğrenme Algoritmalarından biri olan konvolüsyonel sinir ağı kullanılmaktadır. Derin Öğrenme ile bir nesnenin diğerinden ayırt edilmesini sağlayan çizgi, kontur, köşe, renk ve doku gibi basit ana bileşenlerin hesaplanması ve ayrıca bu bileşenlerin sonraki katmanların daha karmaşık bileşenleriyle bağlantısının hesaplanmasına denir.

Bir görüntüye evrişim katmanı uygulandığında, görüntüden belirli özellikler elde edilebilir. Bu işlem, görüntü üzerindeki matematiksel işlemli bir filtre ile işlenerek gerçekleştirilir. Evrişim katmanının matematiksel bir işlemi Şekil 5’de verilmiştir.

image

Şekil 5. Evrişim işlemi(a) filtre, görüntünün matrisi (b), evrişim sonucu (c)

Havuzlama katmanları ile sayısı büyük ölçüde artırılan özellikler, basit bir işlem kullanılarak azaltılabilir. Maksimum havuzlama işlemi, filtrede belirli bir boyuta sahip en büyük öğeyi seçer ve diğerlerini seçmez. Böylece, yalnızca en yüksek değerlere sahip öğeler, belirli adımlarla belirli pencere boyutuna göre seçilir ve diğerleri seçilir.

Tamamen bağlı katman, klasik yapay sinir ağlarının yapısını kapsar, gelen verileri toplar ve aktarır. Genellikle bir sonraki katman softmax katmanıdır ve sınıf etiketini en yüksek değerli sonuca göre belirleyen sınıflandırma katmanı eklenir. Şekil 6’da klasik bir Derin Öğrenme ağı verilmiştir.

image

Şekil 6. Klasik bir Derin Öğrenme ağı

Projemizde renk tespiti için Sklearn kütüphanesinden KMeans kullanılmıştır. Renk tonlarının yüzdelikleri alınmıştır. En yüksek yüzdeli 3 renk tonu seçilip, ortaya konulmuştur. Şekil 7’de KMeans ile renk yüzdesi sonucu gösterilmiştir.

image

Şekil 7. KMeans ile renk yüzdesi sonucu gösterilmesi

Projemizde 8 ayrı filtre kullanılarak sonuçların doğruluk yüzdesinin artması hedeflenmiştir. Draw Contours ile kontur çizimleri yapılır kırık bulma hedeflenmiştir. Şekil 8’de Draw Contours yapılmıştır.

image

Şekil 8. Draw Contours ile kontur çizimi

💣 Toplantılar

1.Toplantı(24.10.2022): Bu sprintimizde proje ile alakalı fikir alışverişi yapıldı. Proje ile ilgili bilir kişiden mermer üzerine kalite bilgileri, önem bilgileri, desenlerin neye göre belirlendiği, renklerin neye göre belirlendiği, fiyat konusunda baz alınacak şeyler, kaliteli bir mermerin nasıl belirleneceği öğrenildi. Yapacağımız şeyler konuşulup, bir yol haritası oluşturuldu. Projelerimizde neler olacağı, neler tespit edileceği konuşuldu. Projemizin hangi dille yazılacağı, hangi platformda yayınlanacağı kararlaştırıldı. Fikir alışverişinde ilerlememiz ile alakalı detaylar konuşuldu. Rakip analizi yapılıp eksikler ve fazlalar tartıldı. Kullanacağımız desenlere yönelik fonksiyonlar düşüldü. Kullanacağımız desenler konuşulup, seçeneklerimizi arttırdık.

Projemizde görev dağılımını eşit yapmak için belirli alanlar seçilip dağıtımı sağlandı. Diğer bir sprinte kadar yapacaklarımız konuşuldu. Mermer yapıları için hangi filtrelerin uygun olabileceği konuşuldu. Mermerler için daha önceden yazılmış makalelerin araştırılması için öneri sunuldu. Mermer desen tespiti gibi tespitlerin daha önce nasıl yapıldığının araştırılması kararlaştırıldı. Dataset bulmak için herkesin araştırmasının gerektiği belirtildi. Ekipteki herkesin araştırma yapacağı alanlar belirlenip toplantı sonlandırıldı.

2.Toplantı(31.10.2022): Ekipçe toplanılıp herkesin görev dağılımında ki görevlerinin yerine getirilip getirilmediği kontrol edildi. Yapılan araştırmalar sonucu ortaya konulan araştırma konuları üzerine beyin fırtınası yapıldı. Mermer projemiz için kullanılacak filtreler için beyin fırtınası yapılıp, kullanılacak filtreler belirlendi. Mermer projemiz için yapılacak tespitler için uygun olanları seçilip, ekipçe kullanılacak tespitler kesinleşti. Filtre ve tespitler için görev dağılımı yapıldı. Projemizin daha da gelişmesi için beyin fırtınası yapıldı.

Yapılan çalışmalar sonucu, desen ve tespitler için proje kodlarının denenmesi ve diğer bir sprintte gösteriminin yapılmasına karar kılındı. Bulunan data setlerin kontrolü yapılıp, hangi data setin daha uygun olduğu düşünülüp uygun olanı seçildi. Bulunan tespitler açıklandı. Renk tespiti, desen tespiti, kırık tespiti uygun görülüp kullanılması karar kılındı. Bu tespitlerin geliştirilmesi için diğer bir sprinte kadar kodlanıp data set üzerinde denenilmesi, çıkacak sonuçların gösterilmesi ve sunulması karar kılındı. Renk tespiti için renklerin nasıl seçileceği düşünülüp, en yüksek yüzdeli rengin belirlenip projede seçilmesi karar kılındı. Desen tespitinde ise tekrar eden desenin belirlenip sonuç olarak alınması karar kılındı.

3.Toplantı(07.11.2022): Ekipçe toplanılıp sprinte başlandı. Kullanılan filtrelerin, tespitlerin özelleştirilmiş kodlarına bakıldı ve bu sprintte kodların birleştirilmesi kararı alındı. Kodlarımızın birleştirilip web ortamına aktarılması kararı kılındı. Web ve mobil platformda çalışması kararlaştırıldı. Bu platformlar için React Native dilinin kullanılması seçildi. React bilmeyenler için diğer bir sprinte kadar React dili için kalan zamanı eğitim ile geçirmesi önerildi.

Kullanılan tespitlerin doğrulukları kontrol edildi. Renk tespitinin doğruluk yüzdesi kontrol edildi ve renk seçimi incelendi. Desen tespitinin hangi desenleri gördüğü ve doğruluk yüzdesi tespit edildi. Kırık tespiti için kullanılan filtrelerde kırıkların belirginliği ve kırık görme hassasiyeti incelenip, doğruluk yüzdesi belirlendi.

4.Toplantı(14.11.2022): Bu sprintte kodların birleştirilmiş hali görüldü. Web ortamına aktarılan kodların çalışması gözlendi. Web ortamında olan eksikler not edilip, geliştirilmesi için fikir alışverişi yapıldı. Web ortamındaki algoritmaya eklenen data set görselindeki tespitlerin doğruluğu gözlendi. Proje için her bir sprintte yazılan teknoloji hazırlık seviyesi notları güncellendi. Web ortamının kullanıcı dostu olması için geliştirmeler düzenlendi. Ekibimizin fikirleri not edilip diğer bir sprint için düzenlemelerin detayları not edildi.

Projemizin mobil ortamı kontrol edildi. Mobil çalışmanın detayları konuşulup ek olarak nelerin eklenebileceği düşünülüp fikirler ortaya atıldı. Mobil uygulamanın fonksiyonlarına neler ekleneceği, uygulamada eksikliklerimiz konuşuldu. Marka ismimiz kesinleştirilip, markalaşma sürecine başlanıldı. Ortaya çıkan projenin dökümantasyonları git-hub üzerinden güncellendi. Ortaya bir çalışır proje konuldu.