You are on page 1of 9

‫الفصل الرابع‬

‫القسم العملي‬
‫‪ 1-4‬المقدمة ‪:Introduction‬‬
‫سنتحدث في هذا الفصل عن التطبيق العملي للمشروع المنفذ‪ ،‬وسنبدأ أوالً بالحديث عن األسس النظرية‬
‫للمشروع‪ ،‬فسنتحدث عن لغة بايثون التي استخدمت لبناء المشروع‪ ،‬وسنتحدث عن أهم مكاتب لغة بايثون‬
‫المستخدمة في التعلم العميق وهي مكتبة كيراس‪ ،‬وسنتحدث بعدها عن صلب الموضوع وهي الشبكات‬
‫العصبونية االلتفافية‪ ،‬وبعدها سنسرد تسلسل التطبيق العملي الذي بدأ بقاعدة البيانات وتهيئتها وبعدها بناء‬
‫الشبكة وتدريبها‪ ،‬وبعدها النتائج‪ ،‬وسنتحدث بعد ذلك عن واجهة المشروع المبنية لتسهيل التعامل معه كنظام‬
‫لتشخيص صور الطبقي المحوري للرئتين‪.‬‬

‫‪ 2-4‬لغة البايثون ‪:Python Language‬‬


‫البايثون هي لغة برمجة قوية متعددة األغراض أنشأها ‪ ،Guido van Rossum‬وهي لغة برمجة عالية المستوى‬
‫مفسرة وموجهة للكائنات‪ ،‬وبالنسبة لألغراض العامة فإنها تحتوي على مجموعة واسعة من التطبيقات من‬
‫تطوير الويب‪ ،‬وبناء واجهة المستخدم الرسومية لسطح المكتب إلى الحوسبة العلمية والرياضية‪.‬‬
‫تشتهر لغة بايثون ببساطتها مقارنة بلغات البرمجة األخرى‪ ،‬ومن ميزاتها‪:‬‬

‫‪ ‬البساطة وسهولة التعلم‪.‬‬


‫‪ ‬مجانية ومفتوحة المصدر‪.‬‬
‫‪ ‬قابلية النقل‪.‬‬
‫‪ ‬قابلة للتوسيع والتضمين‪.‬‬
‫‪ ‬لغة مترجمة عالية المستوى‪.‬‬
‫‪ ‬غنية بالمكتبات ومجتمعها كبير‪.‬‬

‫المرجع‪:‬‬

‫‪Python Programming. Retrieved August-28,2020, from https://www.programiz.com/python-‬‬


‫‪programming/guide‬‬

‫‪ 3-4‬مكتبة كيراس ‪:Keras Library‬‬


‫‪ Keras‬هي مكتبة بايثون بسيطة للتعلم العميق يمكن تشغيلها على ‪ Theano‬أو ‪ .TensorFlow‬تم تطويرها‬
‫شغل على ‪ Python 2.7‬أو‬
‫لجعل تنفيذ نماذج التعلم العميق سريعاً وسهلً قدر اإلمكان للبحث والتطوير‪ .‬تُ ّ‬
‫‪ 3.5‬ويمكن تنفيذها بسلسة على وحدات معالجة الرسومات ووحدات المعالجة المركزية بالنظر إلى األطر‬
‫األساسية‪ .‬تم إصدارها بموجب ترخيص ‪ MIT‬المسموح به‪ .‬تم تطوير ‪ Keras‬وصيانتها بواسطة ‪François‬‬

‫‪ ،Chollet‬وهو مهندس في ‪ Google‬باستخدام أربعة مبادئ توجيهية‪:‬‬

‫‪ ‬النمطية‪ :‬يمكن فهم النموذج على أنه تسلسل أو رسم بياني فقط‪ .‬جميع اهتمامات نموذج التعلم‬
‫العميق هي مكونات منفصلة يمكن دمجها بطرق عشوائية‪.‬‬
‫‪ ‬البساطة‪ :‬توفر المكتبة ما يكفي لتحقيق نتيجة‪ ،‬بدون زخرفة وتعظيم قابلية القراءة‪.‬‬
‫‪ ‬القابلية للتوسع‪ :‬المكونات الجديدة سهلة اإلضافة واالستخدام عن قصد في إطار العمل‪ ،‬وهي‬
‫مخصصة للباحثين لتجربة واستكشاف أفكار جديدة‪.‬‬
‫‪ :Python‬ال توجد ملفات نموذجية منفصلة بتنسيقات ملفات مخصصة‪ .‬كل شيء هو لغة ‪Python‬‬ ‫‪‬‬

‫األصلية‪.‬‬

‫المرجع‪:‬‬

‫‪Brownlee, J., (2019, September 13). Introduction to Python Deep Learning with Keras.‬‬
‫‪Retrieved August-28,2020, from https://machinelearningmastery.com/introduction-python-‬‬
‫‪deep-learning-library-keras/‬‬

‫‪ 4-4‬الشبكة العصبونية االلتفافية ‪:Convolution Neural Network‬‬


‫تشبه الشبكات العصونية االلتفافية الشبكات العصبونية العادية‪ ،‬حيث أنها تتألف من مجموعة من‬
‫العصبونات التي تستقبل بعض المدخلت وتجري عليها بعض العمليات من أجل مسائل التصنيف أو‬
‫التعرف‪ ،‬وتتميز الشبكات العصبونية االلتفافية بأن دخلها هو الصور المراد تصنيفها‪ ،‬وتتألف الشبكات‬
‫العصبونية من طبقات التفافية تحتوي على فلتر‪ ،‬وتلي كل طبقة التفافية طبقة تجميع‪ ،‬وينتهي التسلسل‬
‫بطبقة عصبونات ذات اتصال كلي‪ ،‬وتطبق الطبقة األخيرة تابع التفعيل ‪ Softmax‬لتصنيف األصناف بقيم‬
‫احتمالية من ‪ 0‬إلى ‪ ،1‬ويوضح الشكل )‪ (1-4‬مثال على بنية شبكة عصبونية التفافية لتصنيف السيارات‪،‬‬
‫حيث يوضح الشكل أن الصورة المدخلة تمر أوالً بمرحلة استخراج الخصائص وتعلمها من خلل الطبقات‬
‫االلتفافية وطبقات التجميع‪ ،‬ومن ثم تدخل هذه الخصائص المتعلمة إلى طبقة الخرج ليتم تصنيفها‪.‬‬
‫الشكل )‪ (1-4‬مثال على بنية شبكة عصبونية التفافية لتصنيف السيارات‪.‬‬

‫‪ 1-4-4‬الطبقة االلتفافية ‪:Convolution Layer‬‬


‫الطبقة االلتفافية هي الطبقة األولى الستخراج الخصائص من صورة اإلدخال‪ ،‬حيث تحافظ الطبقة االلتفافية‬
‫على العلقة بين بكسلت الصورة عن طريق تعلم خصائص الصورة باستخدام مربعات صغيرة من بيانات‬
‫اإلدخال‪ ،‬وهي عملية حسابية تأخذ مدخلين مثل مصفوفة الصورة ومرشح أو نواة‪ .‬يمكن أن يؤدي التفاف‬
‫الصورة باستخدام مرشحات مختلفة عمليات مثل اكتشاف الحواف والضجيج والحدة من خلل تطبيق‬
‫المرشحات‪.‬‬

‫‪ 2-4-4‬طبقة التجميع ‪:Pooling Layer‬‬


‫يقلل قسم تجميع الطبقات عدد المعلمات عندما تكون الصور كبيرة جداً‪ ،‬يسمى التجميع المكاني أيضاً‬
‫باالختزال الفرعي أو االختزال الذي يقلل من أبعاد كل خريطة ولكنه يحتفظ بالمعلومات المهمة‪ .‬يمكن أن‬
‫يكون التجميع المكاني من أنواع مختلفة‪:‬‬

‫‪ ‬القيمة العظمى للتجميع‪.‬‬


‫‪ ‬متوسط التجميع‪.‬‬
‫‪ ‬مجموع التجميع‪.‬‬

‫‪ 3-4-4‬الطبقة كاملة التوصيل ‪:Fully Connected Layer‬‬


‫هي عبارة عن شبكة عصبونية عادية عصبوناتها متصلة مع بعضها اتصاالً كاملً‪ ،‬ويبين الشكل )‪(2-4‬‬

‫بنية الشبكة العصبونية ذات االتصال الكامل‪.‬‬


‫الشكل )‪ (2-4‬الشبكة العصبونية كاملة االتصال‪.‬‬

‫المرجع‪:‬‬

‫‪Prabhu,(2018, Mars 4). Understanding of Convolutional Neural Network (CNN) — Deep‬‬


‫‪Learning. Retrieved August-28,2020,‬‬
‫‪from https://medium.com/@RaghavPrabhu/understanding-of-convolutional-neural-network-‬‬
‫‪cnn-deep-learning-99760835f148‬‬

‫‪ 5-4‬قاعدة البيانات ‪:Database‬‬


‫تم تحميل قاعدة البيانات من المرجع ]‪ ،[https://www.kaggle.com/datasets/hgunraj/covidxct‬استخدمنا من‬
‫هذه القاعدة ‪ 1151‬صورة لكل صنف من األصناف الثلثة (كوفيد_‪ ،11‬طبيعي‪ ،‬التهاب رئوي)‪ ،‬تم تقسيم‬
‫الصور إلى مجموعتين‪ ،‬األولى مجموعة التدريب وتحتوي على ‪ 1111‬صورة لكل صنف‪ ،‬والثانية مجموعة‬
‫االختبار وتحتوي على ‪ 151‬صورة من كل صنف‪ ،‬تم تجميع ملفات األصناف الثلثة ضمن ملفي التدريب‬
‫واالختبار وجمع الملفين في ملف واحد‪ ،‬تمت ارشفته وتحويله إلى ملف ‪ Zip‬ومن ثم رفعه إلى ‪Google‬‬

‫‪ Drive‬ليتم التعامل معه فيما بعد من قبل الشبكة‪.‬‬

‫‪ 6-4‬التطبيق العملي‪:‬‬
‫تم التطبيق العملي على عدة مراحل فبعد تقسيم قاعدة البيانات كما ذكر في الفقرة السابقة‪ ،‬تمت تهيئة قاعدة‬
‫البيانات لتكون دخلً للشبكة العصبونية‪ ،‬وبعدها تم بناء الشبكة العصبونية االلتفافية‪ ،‬بعد ذلك ُدربت الشبكة‬
‫وحفظت‪ ،‬وفي النهاية تم استخلص النتائج‪.‬‬
‫‪ 1-6-4‬تهيئة قاعدة البيانات‪:‬‬
‫في البداية كتبنا الكود المسؤول عن جلب ملف البيانات من الـ ‪ Google Drive‬وتحويله من ملف ‪ Zip‬إلى‬
‫ملف عادي لجلب الصور منه‪ ،‬وهو الكود المرفق جزء منه في الملحق )‪ ،(1‬ومن ثم قمنا بكتابة الكود‬
‫المسؤول عن قراءة الصور وتحويلها إلى مصفوفة من الصور ولكل صورة منها تسمية ‪ Label‬خاصة بكل‬
‫صنف‪ ،‬ومن ثم تم ترتيب الصور بشكل عشوائي لكي نصعب المهمة على الشبكة ونرفع من دقتها‪ ،‬وبعدها‬
‫تم تحويل التسميات الخاصة بكل صنف إلى قيم احتمالية لكي تناسب تابع الـ ‪ SoftMax‬الذي يتم وضعه‬
‫في نهاية الشبكة العصبونية‪ ،‬الكود المذكور مرفق جزء منه في الملحق )‪.(2‬‬

‫‪ 2-6-4‬بناء الشكبة العصبونية االلتفافية‪:‬‬


‫تم بناء الشبكة العصبونية وفق التسلسل التالي‪:‬‬

‫‪ ‬طبقة الدخل عبارة عن طبقة التفافية بـ ‪ 46‬عصبون وفلتر بقياس ‪ 4*4‬وتابع تفعيل ‪.Relu‬‬
‫‪ ‬تتبعها طبقة تجميع بطريقة القيمة العظمة وبقياس نافذة ‪.2*2‬‬
‫‪ ‬تتبعها طبقة التفافية ثانية بـ ‪ 46‬عصبون وفلتر بقياس ‪ 4*4‬وتابع تفعيل ‪.Relu‬‬
‫‪ ‬تتبعها طبقة تجميع بطريقة القيمة العظمة وبقياس نافذة ‪.2*2‬‬
‫‪ ‬بعدها طبقة التفافية ثالثة بـ ‪ 23‬عصبون وفلتر بقياس ‪ 4*4‬وتابع تفعيل ‪.Relu‬‬
‫‪ ‬تتبعها طبقة تجميع بطريقة القيمة العظمة وبقياس نافذة ‪.2*2‬‬
‫‪ ‬تتبعها طبقة الخرج المؤلفة من ‪ 2‬عصبونات بتابع تفعيل ‪.SoftMax‬‬

‫‪ 3-6-4‬تدريب الشبكة العصبونية االلتفافية‪:‬‬


‫بعد بناء الشبكة وفق التسلسل المبين أعله تم تدريبها باإلعدادات التالية‪:‬‬

‫تابع الخطأ ‪ Loss Function‬هو ‪.categorical_crossentropy‬‬ ‫‪‬‬

‫‪ ‬المحسن ‪ Optimizer‬من نوع ‪.sgd‬‬


‫‪ ‬عدد الصور بالتدريب الواحد ‪.31 Batch-size‬‬
‫‪ ‬عدد التك اررات ‪.36 Epochs‬‬
‫‪ ‬اجتزاء ‪ %15‬من بيانات التدريب كبيانات تحقق ‪.Validation_Split‬‬
‫‪ 7-4‬النتائج ‪:Results‬‬
‫بعد تدريب الشبكة باإلعدادات السابقة حصلنا على دقة تدريب ‪ 96.59%‬ودقة تحقق ‪ ،98.67%‬وبلغت دقة‬
‫االختبار ‪ ،93.11%‬ويبين الشكل )‪ (3-4‬الـ ‪ Confusion Matrix‬للشبكة المصممة حيث تبين أن ال ‪150‬‬

‫صورة اختبار من صور حاالت كورونا كانت منها ‪ 125‬صحيحة و‪ 25‬خاطئة‪ ،‬والـ ‪ 150‬صورة من صور‬
‫الحاالت السليمة كانت منها ‪ 164‬صورة صحيحة و‪ 6‬صورة خاطئة‪ ،‬والـ ‪ 151‬صورة من حاالت االلتهاب‬
‫الرئوي كانت منها ‪ 161‬صورة صحيحة و‪ 3‬صور خاطئة‪ .‬ويوضح الشكل )‪ (3-5‬مخطط تغير الخطأ‬
‫لبيانات التدريب خلل عملية التدريب (اللون األزرق)‪ ،‬وتغير الخطأ لبيانات التحقق خلل عملية التدريب‬
‫(اللون البرتقالي)‪ ،‬والشكل )‪ (3-6‬يوضح تغير الدقة خلل عملية التدريب لكل من بيانات التدريب (األزرق)‬
‫وبيانات التحقق (البرتقالي)‪.‬‬

‫الشكل )‪ (3-4‬يبين الـ ‪ Confusion Matrix‬للشبكة المصممة‪.‬‬

‫الشكل )‪ (3-5‬تغير الخطأ ببيانات التدريب وبيانات التحقق خالل عملية التدريب‪.‬‬
‫الشكل )‪ (3.6‬تغير دقة تصنيف بيانات التدريب وبيانات التحقق خالل عملية التدريب‪.‬‬

‫‪ 8-4‬واجهة المشروع ‪:Project GUI‬‬


‫بعد االنتهاء من تدريب الشبكة والحصول على دقة جيدة جداً قمنا بتصميم واجهة ليصبح التعامل مع النظام‬
‫بشكل سهل‪ ،‬فقد احتوت الواجهة على زر إلضافة الصور‪ ،‬ومكان إلضافة الصور‪ ،‬واحتوت على زر‬
‫لتشخيص الصورة المدخلة‪ ،‬حيث يظهر التشخيص أعلى الصورة‪ ،‬ويبين الشكل )‪ (4-4‬واجهة المشروع‬
‫المصممة كما سبق‪.‬‬

‫الشكل )‪ (4-4‬يبين واجهة المشروع المصممة‪.‬‬


‫‪ 9-4‬الخاتمة‪:‬‬
‫تحدثنا في هذا الفصل عن التطبيق العملي للمشروع المنفذ‪ ،‬ففي البداية تحدثنا عن األسس النظرية التي‬
‫بني عليها المشروع‪ ،‬فبدأنا بالحديث عن لغة البايثون المستخدمة لبناء المشروع‪ ،‬وبعدها تحثنا عن مكتبة‬
‫كيراس التي اعتمدنا تعليماتها في إنجاز المشروع‪ ،‬وبعد ذلك تحدثنا عن الشبكات العصبونية االلتفافية التي‬
‫هي أساس مشروعنا‪ ،‬وبعدها تحدثنا عن خطوات تصميم المشروع التي بدأت بتهيئة قاعدة البيانات وبعدها‬
‫بناء الشبكة العصبونية االلتفافية وبعدها تدريب الشبكة‪ ،‬وبعد ذلك تحدثنا عن نتائج المشروع والواجهة‬
‫الصممة لتسهيل التعامل مع المشروع‪ ،‬وفي الفصل القادم سوف نناقش نتائج المشروع ونقارنها مع نتائج‬
‫الدراسات المرجعية المعتمدة في المشروع‪ ،‬ونتحدث عن بعض اآلفاق المستقبلية للمشروع‪.‬‬

You might also like