
Author(s): Akshit Mehra
Awalnya diterbitkan di Menuju AI.
Perkenalan
Pengecoran mengacu pada proses pembuatan di mana bahan cair seperti logam dituangkan ke dalam lubang atau cetakan dengan bentuk yang diinginkan dan dibiarkan mengeras atau mengeras di sana. Cacat pengecoran mengacu pada ketidakteraturan yang diperkenalkan pada komponen selama proses pengecoran.
Gambar: Proses Pengecoran (Sumber)
Pemeriksaan kualitas komponen ini menjadi penting karena setiap produk yang cacat dapat menyebabkan penolakan seluruh pesanan, yang dapat menyebabkan kerugian finansial yang besar bagi bisnis.
Contoh di mana produk cacat masuk ke aplikasi juga tidak diinginkan dan dihindari dengan cara apa pun. Karena dapat menyebabkan beberapa kegagalan tak terduga pada komponen mesin, yang dapat menyebabkan kerugian besar.
Gambar: Casting Cacat (Sumber)
Inspeksi Visual cacat melibatkan melihat setiap komponen secara manual dan kemudian memutuskan apakah bagian tersebut rusak atau tidak. Ini menjadi mahal dan memakan waktu.
Di blog ini, kami mencoba menggunakan CNN (Convolution Neural Network), model pembelajaran mendalam untuk mendeteksi cacat pengecoran dengan menganalisis gambar produk pengecoran.
Prasyarat
Untuk melangkah lebih jauh dan memahami pendekatan berbasis CNN untuk mendeteksi cacat pengecoran, seseorang harus terbiasa dengan:
Python: Semua kode di bawah ini akan ditulis menggunakan python. Tensorflow: TensorFlow adalah perpustakaan perangkat lunak pembelajaran mesin dan kecerdasan buatan sumber terbuka dan gratis. Ini dapat digunakan untuk berbagai tugas, tetapi paling sering digunakan untuk pelatihan dan inferensi jaringan saraf dalam. Keras: Keras adalah antarmuka Python untuk jaringan saraf tiruan dan merupakan perangkat lunak sumber terbuka. Keras berfungsi sebagai antarmuka untuk perpustakaan TensorFlow Jupyter Notebook: Notebook Jupyter adalah platform berbasis web yang dibuat untuk perhitungan matematis dan ilmiah. Kami membangun tutorial kami di Notebook jupyter.
Terlepas dari alat yang tercantum di atas, ada beberapa konsep teoretis lain yang harus Anda ketahui untuk memahami tutorial di bawah ini.
1. Jaringan Saraf Konvolusi
Convolution Neural Networks (CNN) adalah jenis arsitektur jaringan dalam pembelajaran mendalam yang terutama digunakan untuk tugas-tugas terkait gambar, seperti klasifikasi gambar, segmentasi gambar, dll. Konektivitas jaringan di CNN mirip dengan otak manusia.
Gambar: Arsitektur Jaringan Syaraf Konvolusi
Jaringan Neural Konvolusi terutama terdiri dari 3 lapisan:
Convolutional Layer: Convolutional layer akan menghitung produk skalar antara bobot dari area yang terhubung dengan volume input dan neuron yang outputnya terkait dengan wilayah tertentu dari input. Pooling Layer: Untuk lebih jauh mengurangi jumlah parameter dalam aktivasi itu, pooling layer kemudian akan melakukan down-sample sepanjang dimensi spasial input. Lapisan yang Terhubung Sepenuhnya: Lapisan yang terhubung sepenuhnya selanjutnya akan melakukan tugas yang sama seperti pada JST konvensional dan berusaha untuk mendapatkan skor kelas dari aktivasi, yang selanjutnya dapat digunakan untuk klasifikasi.
Salah satu keuntungan utama menggunakan CNN adalah berbagi Parameter. Gagasan di balik pembagian parameter adalah bahwa jika suatu karakteristik wilayah dapat dihitung pada satu lokasi spasial tertentu, hal itu kemungkinan akan membantu di lokasi lain.
Jumlah total parameter volume keluaran akan dikurangi secara drastis jika setiap peta aktivasi individu dibatasi untuk memiliki bobot dan bias yang sama.
2. Fungsi aktivasi
Umumnya data yang kita kerjakan bersifat non linear yaitu fitur instance dan nilai prediksi yang sesuai. Fungsi aktivasi adalah fungsi yang diterapkan pada setiap neuron/sel dalam jaringan syaraf tiruan untuk memperkenalkan non-linearitas di dalamnya.
Ada banyak fungsi aktivasi yang digunakan:
ReLU: ReLU pada dasarnya adalah singkatan dari Rectified Linear unit. Secara matematis, ini didefinisikan sebagai:
Gambar: Rumus Matematika untuk ReLU
Fungsi aktivasi ReLU jauh lebih efisien secara komputasi dibandingkan dengan yang lain
fungsi aktivasi. Selanjutnya, konvergen lebih cepat ke minimum global karena linearitas dan sifatnya yang tidak jenuh.
Sigmoid: Fungsi sigmoid, juga dikenal sebagai fungsi logistik, menerima input nilai riil apa pun dan menghasilkan nilai dalam kisaran 0 hingga 1. Ini adalah salah satu fungsi aktivasi yang paling banyak digunakan. Secara matematis, ini direpresentasikan sebagai
Gambar: Rumus Matematika untuk fungsi sigmoid
Fungsi ini umumnya digunakan untuk model di mana keluaran yang dihitung adalah probabilitas.
Juga, fungsinya dapat dibedakan dan dengan demikian membentuk gradien halus, yaitu mencegah nilai keluaran melompat-lompat atau menyebabkan osilasi.
Metodologi
Untuk melangkah lebih jauh dengan sistem inspeksi berbasis CNN kami:
Kita mulai dengan tugas eksplorasi data. Kami menganalisis data dan mencari tahu apakah ada kecondongan, atau jika ada pola yang diamati. Buat model CNN kami menggunakan Tensorflow dan latih menggunakan data pelatihan. Lakukan penyetelan hyperparameter untuk menyempurnakan model kita, yaitu mengurangi overfitting atau underfitting. Lakukan prediksi pada Gambar uji.
Gambar: Bagan alir untuk metodologi (Gambar oleh penulis)
Pemilihan Kumpulan Data
Untuk proyek kami, kami akan menggunakan kumpulan data yang tersedia di Kaggle. Kumpulan data berisi gambar bagian yang rusak dan tidak rusak. Total ada 7358 citra yang terdiri dari 6633 citra latih dan 715 citra uji. Penghancuran lebih lanjut,
Gambar: Analisis dataset (Gambar oleh penulis)
Gambar-gambar tersebut adalah gambar 3 saluran, yaitu sifat RGB dengan dimensi (300, 300, 3).
Penerapan
Sekarang, kita akan mulai membuat kode untuk sistem berbasis CNN untuk mendeteksi cacat pengecoran.
Pengaturan Lingkungan
Poin-poin di bawah ini perlu dilakukan sebelum menjalankan kode:
Kode di bawah ini ditulis di notebook jupyter lokal saya. Oleh karena itu, instal jupyter. Anda dapat merujuk ke https://www.anaconda.com/products/distribution ini. Anda dapat menginstal anaconda dan menggunakan jupyter dari sana. Jika Anaconda tidak berfungsi, Anda dapat merujuk ke: https://jupyter.org/install. Variabel Datadirectory berisi jalur ke folder yang berisi data gambar.
Ini adalah jalur ke direktori yang berisi jalur ke kedua folder, latih dan uji.
4. Selanjutnya direktori test dan train dibagi menjadi 2 folder yaitu ok_front yang berisi gambar komponen yang tidak cacat dan def_front yang berisi gambar bagian yang cacat
Praktek dengan Kode
Kami mulai dengan mengimpor semua pustaka yang diperlukan.
Selanjutnya, kami melakukan visualisasi data. Dataset berisi total 7448 gambar yang rusak dan tidak rusak. Kami pada dasarnya memplot histogram membandingkan jumlah gambar yang rusak vs tidak rusak.
Kami juga melakukan plot batang untuk melihat perbandingan antara data yang rusak dan tidak rusak untuk melihat apakah data mengandung kecondongan.
Gambar: Barplot membandingkan jumlah Cacat dan Non-cacat (Gambar oleh penulis)
Dari plot di atas, kita melihat bahwa dataset agak condong ke bagian yang rusak. Namun, data didistribusikan sedemikian rupa sehingga 60% gambar rusak dan 40% tidak rusak. Dengan demikian, dalam hal ini model tidak akan terlalu bias.
Namun dalam kasus di mana sebagian besar data condong ke beberapa kelas, hal itu dapat mengakibatkan model menjadi bias terhadap kelas tertentu tersebut. Dalam kasus seperti itu, seseorang dapat:
Tingkatkan dataset agar skewness berkurang. Melakukan augmentasi data pada dataset yang ada.
Selanjutnya, kami melakukan beberapa preprocessing data.
Di Sini,
Kami menormalkan nilai piksel dalam kisaran 0 hingga 1. Untuk ini, kami membagi nilai piksel kami dengan 255. Ubah ukuran gambar kami menjadi (300 x 300) , yaitu ke mode skala abu-abu. Setel ukuran batch ke 64. Ukuran batch disetel karena gambar dilatih dalam batch. Ini meningkatkan model saat pelatihan. Setel mode kelas ke biner, karena kita hanya memiliki 2 kelas. Tetapkan 30% dari data pelatihan kami sebagai data validasi.
Mengapa kami menormalkan nilai piksel sebelum menggunakannya untuk pelatihan?
Normalisasi nilai piksel dilakukan untuk mencegah luapan bobot selama backpropagation. Selama backpropagation, aturan rantai diikuti sesuai dengan nilai piksel yang terus dikalikan saat kami memperbarui neuron lapisan awal.
Dengan demikian, nilai bobot dapat dengan mudah meluap, yaitu menjadi sangat besar yang membuatnya tidak efisien secara komputasi.
Mengapa ukuran batch dipilih menjadi 64?
Umumnya, ukuran batch dipilih dalam kekuatan 2 untuk memanfaatkan sepenuhnya kapasitas pemrosesan GPU. Dalam kebanyakan kasus, itu adalah 32 atau 64.
Selanjutnya, kita membuat model kita. Model yang digunakan berisi:
2 Lapisan konvolusi, yang masing-masing diikuti oleh lapisan Max pooling. Setiap lapisan konvolusi memiliki lapisan aktivasi ‘Relu’. Lapisan yang terhubung sepenuhnya memiliki 128 sel input. Lapisan terakhir dengan satu neuron yang memprediksi kemungkinan komponen rusak. Di sini, fungsi aktivasi sigmoid digunakan.
Gambar: Ringkasan Model (Gambar oleh penulis)
Pada langkah selanjutnya, kita mulai melatih model kita.
Saat melatih model kami:
Kami memantau hilangnya validasi. Model disimpan setelah pelatihan sebagai ‘CNN_Casting_Inspection.hdf5’ sehingga dapat digunakan nanti.
Mengapa kami melatih model selama 15 zaman?
Setelah melatih model selama 15 zaman, tidak ada perubahan signifikan baik dalam akurasi maupun kerugian validasi. Jadi, jika kita akan berlatih untuk lebih banyak zaman, pada akhirnya akan menyebabkan overfitting dalam model.
Setelah kami melatih model kami, kami memvisualisasikan pelatihannya menggunakan plot yang berbeda, yang meliputi plotting:
Kehilangan pelatihan Kehilangan validasi Akurasi pelatihan Akurasi validasi
Dari plot di atas, kita melihat bahwa dengan bertambahnya zaman:
Validasi dan kehilangan pelatihan berkurang. Validasi dan akurasi pelatihan meningkat.
Loss plot tidak banyak mengalami osilasi yang menandakan bahwa learning rate yang digunakan sudah cukup baik.
Akhirnya, kami memprediksi keluaran pada gambar uji. Kami mencetak hasil untuk gambar uji menggunakan fungsi classification_report() dari scikit_learn.
Gambar: Laporan klasifikasi akhir
Akurasi model akhir adalah 99,47, cukup bagus.
Jika kita melihat tugas memeriksa masing-masing gambar komponen untuk mendeteksi cacat pengecoran, kita ingin:
Hilangkan negatif palsu, yaitu contoh ketika bagian yang cacat masuk ke produksi. Hilangkan positif palsu, yaitu contoh ketika bagian yang tidak rusak terdeteksi cacat.
Jadi, kami ingin memantau skor-f1 secara dekat dibandingkan dengan akurasi, presisi, atau daya ingat.
Skor f1 yang diamati:
0,9939 untuk kelas 0, yaitu tidak membelot. 0,9953 untuk kelas 1, yaitu membelot.
Kesimpulan
Di blog ini, kami melakukan tugas memeriksa produk pengecoran secara visual dengan menganalisis gambar mereka menggunakan kelas arsitektur pembelajaran mendalam yang dikenal sebagai Convolution Neural Networks. Poin-poin penting tersebut antara lain:
Kami mulai dengan menganalisis data terlebih dahulu, yaitu memplot gambar, menghitungnya, dimensi, dll. Kami kemudian melakukan beberapa pemrosesan data, seperti: Mengubah dimensi gambar Mengubah gambar menjadi skala abu-abu Mengubah skala nilai piksel antara 0–1. Selanjutnya, kita membuat model kita. Model memiliki 2 lapisan convolutional masing-masing diikuti oleh lapisan MaxPooling. Pada akhirnya, kami kemudian memiliki lapisan yang terhubung sepenuhnya diikuti oleh lapisan terakhir di mana output diprediksi. Kami akhirnya memprediksi keluaran kami pada gambar uji.
Tugas yang dilakukan di atas pada dasarnya hanya klasifikasi Gambar, di mana kami memiliki 2 kelas Cacat dan Non-cacat. Mirip dengan ini, setiap tugas klasifikasi Gambar dapat dilakukan dengan menggunakan pendekatan di atas.
Referensi
https://arxiv.org/pdf/1511.08458.pdf https://medium.com/r?url=https%3A%2F%2Fengmag.in%2Findian-casting-industry-poised-for-significant-growth-in -kinerja%2F https://medium.com/r?url=https%3A%2F%2Fwww.rapiddirect.com%2Fblog%2F17-types-of-casting-defects%2F
Panduan Langkah Demi Langkah Membangun Inspeksi Visual Produk Casting Menggunakan CNN awalnya diterbitkan di Towards AI on Medium, di mana orang melanjutkan percakapan dengan menyoroti dan menanggapi cerita ini.
Diterbitkan melalui Menuju AI