التعلم غير الموجه لتحليل الصور - الذكاء الاصطناعي - ثالث ثانوي
الجزء الأول
1. أساسيات الذكاء الاصطناعي
2. خوارزميات الذكاء الاصطناعي
3. معالجة اللغات الطبيعية
الجزء الثاني
4. التعرف على الصور
5. خوارزميات التحسين واتخاذ القرار
6. الذكاء الاصطناعي والمجتمع
رابط الدرس الرقمي www.ien.edu.sa الدرس الثاني التعلُّم غير الموجه لتحليل الصور فهم محتوى الصور Understanding Image Content لل في سياق رؤية الحاسب يُستخدم التعلُّم غير الموجّه في مجموعة متنوعة من المهام مثل: اكتشاف العناصر الشاذة تقطيع أو تجزئة الصورة (Image Segmentation)، وتقطيع الفيديو یک : (Anomaly Detection) هي عملية تُستخدم لتحديد الأنماط أو (Video Segmentation ، واكتشاف العناصر الشاذة (Anomaly Detection) ، الاستخدامات الرئيسة الأخرى للتعلُّم غير الموجه: البحث عن الصورة ومن ( Image Search) ويتضمن البحث في قاعدة بيانات كبيرة من الصور للعثور على الأحداث أو نقاط البيانات الشاذة أو الصورة المشابهة للصورة المطلوبة. غير الطبيعية داخل مجموعة البيانات، وتهدف إلى الكشف عن الحالات تتمثل الخطوة الأولى لبناء محرك بحث لبيانات صورة في تحديد دالة التشابه الغريبة التي تختلف عن المعيار وقد (Similarity Function) والتي يمكنها تقييم التشابه بين صورتين بناءً على تحتاج إلى استقصاء إضافي. خصائصهما المرئية مثل: الحدود، أو النقش ، أو الشكل. وبمجرد أن يُرسل المستخدم صورة جديدة ليستعلم عنها ، يقوم محرك البحث بالاطلاع على جميع الصور الموجودة في قاعدة البيانات المتاحة، ويعثر على الصور التي بها أعلى درجة تقطيع الصورة (Image Segmentation) تشابه، ويُظهرها للمستخدم. وهناك طريقة بديلة تتمثل في استخدام دالة التشابه لفصل الصور في عناقيد؛ بحيث هي عملية تقسيم الصورة إلى أجزاء يتكون كل عنقود من صور متشابهة بصريًا مع بعضها ، ثم يُمَثَّل كل عنقود من خلال أو مناطق متعددة تتقاسم خصائص بؤرة تجميع (Centroid) وهي صورة تقع في مركز العنقود وتمتلك أصغر مسافة بصرية مشتركة، وتهدف إلى تجزئة عامة ( أي اختلاف من الصور الأخرى في العنقود. وبمجرد أن يُرسل المستخدم صورة الصورة إلى أجزاء مترابطة وذات جديدة للاستعلام عنها ، فإن محرك البحث سينتقل إلى جميع العناقيد ويختار العنقود مغزى يمكن استخدامها في القيام الذي تكون بؤرة تجميعه أكثر تشابهًا مع الصورة المطلوبة من المستخدم لتظهر له صور بتحليل إضافي. العنقود المحددة ، ويوضّح الشكل 4.16 مثالا على هذا. Vehicle type: car Direction: passing Vehicle type: car Direction: passing Vehicle type: car Direction: passing Vehicle type: van Direction: passing شكل 4.16 : رؤية مركبة ذاتية القيادة من خلال تقطيع الصورة وزارة التعليم Ministry of Education 2024-1446 Vehicle type: car Direction: passing 220
221 وزارة التعليم Ministry of Education 2024-1446 50% 40% 90% العنقود الأول العنقود الثاني العنقود الثالث شكل :4.17 عناقيد التعرّف على الصور من في المثال الموضح في الشكل ،4.17، تحتوي صورة البحث على تشابه بنسبة 40% و50 و%90 مع بؤر التجميع لعناقيد الصور الثلاث على التوالي، ويُفترض أن تكون نسبة التشابه بين 0% و 100، وحصل العنقود الثاني على أعلى نسبة تشابه؛ إذ أنه يشتمل على قطط من نفس سلالة ولون القطّة المحددة في صورة البحث، كما أن نتائج العنقودين الأول والثالث متقاربة ( 40 و 50)؛ إذ يتشابه العنقودان مع صورة البحث بطرائق مختلفة، أما العنقود الأول فيتضمن قططًا يختلف نمط ألوانها تماما يختلف نمط ألوانها تمامًا عن المطلوب، وبالرغم من أن العنقود الثالث يمثل نوعًا مختلفًا الحيوانات وهو النمر، فإن نمط اللون مشابه لصورة البحث. تُشبه عملية تجميع البيانات المرئية في عناقيد ، عملية تجميع البيانات الرقمية أو النصيَّة، ومع ذلك تتطلب الطبيعة الفريدة للبيانات المرئية طرائق متخصصة؛ لتقييم التشابه البصري، وبالرغم من أن الأساليب الأقدم كانت تعتمد على خصائص مصنوعة يدويًا ، فقد أدت التطورات الحديثة في التعلُّم العميق إلى تطوير نماذج قوية يمكنها تلقائيًا أن تتعلّم خصائص متطورة من البيانات المرئية غير المعنونة. يستخدم هذا الدرس مُهِمَّة خاصة بتجميع الصور؛ لتوضيح كيف يمكن أن يؤدي استخدام خصائص أكثر تعقيدًا إلى تقديم نتائج أفضل بشكل ملحوظ ، وسيوضّح هذا الدرس - تحديدًا - ثلاث طرائق مختلفة: تسطيح البيانات الأصلية وتجميعها بدون أي هندسة للخصائص. تحويل البيانات باستخدام واصف الخصائص (Feature Descriptor الذي يعتمد على المخطط التكراري للتدرجات الموجهة (HOG) - تعرّفت عليه في الدرس السابق- ثم تجميع البيانات المحولة. استخدام نموذج الشبكة العصبية؛ لتجميع البيانات الأصلية في مجموعات عنقودية بدون هندسة الخصائص. مجموعة بيانات LHI-Animal-Faces (وجوه_الحيوانات) التي استخدمت في الدرس السابق وستستخدم في هذا الدرس أيضًا؛ لتقييم التقنيات المتنوّعة لتجميع الصور، وتم تصميم هذه المجموعة في الأصل لمهام التصنيف، وتتضمن العنوان الحقيقي (نوع الحيوان الفعلي) لكل صورة. وفي هذا الدرس، ستُستخدم هذه العناوين فقط للتحقق من صحتها، ولن تُستخدم لتجميع الصور. يجب أن يكون أي أسلوب تجميع أسلوبًا فعّالاً وقادرا على تجميع الصور مع العنوان نفسه، وفي العنقود نفسه، وعلى فصل الصور ذات العناوين المختلفة، ووضعها في عناقيد متباينة.
وزارة التعليم Ministry of Education 2024-1446 تحميل الصور ومعالجتها أوليًا Loading and Preprocessing Images يستورد المقطع البرمجي التالي المكتبات التي ستستخدم لتحميل الصور ومعالجتها أوليًا %%capture import matplotlib.pyplot as plt from os import listdiry !pip install scikit-image from skimage.io import imread from skimage.transform import resize from skimage import img_as_ubyte # a palette of 10 colors that will be used to visualize the clusters. color palette = ['blue', 'green', 'red', 'yellow', 'gray', 'purple', 'orange', 'pink', 'black', 'brown'] _) input_folder من تقرأ الدالة التالية صور مجموعة بيانات HI-Animal-Faces (وجوه_الحيوانات) المدخلات) الخاص بها ، وتُعدِّل حجم كل منها بحيث تكون لها أبعاد الطول والعرض نفسها، ثم تقوم بتحسين دالة ()resize_images من الدرس السابق بالسماح للمستخدم بأن يحدد قائمة فئات الحيوانات التي يجب أن تؤخذ بالاعتبار، كما أنها تستخدم سطرًا واحدًا من المقطع البرمجي بلغة البايثون؛ لكي تقرأ كل صورة وتعدل حجمها وتخزنها def resize_images_v2(input_folder:str, width:int, height:int, labels_to_keep: list ): labels = [] resized_images = [ ] # a list of resized images in np array format # a list with the label for each image filenames = [ ] # a list of the original image file names for subfolder in listdir (input_folder): print(subfolder) path = input_folder + '/' + subfolder for file in listdir(path): label=subfolder[:-4] #uses the subfolder name without the "Head" suffix if label not in labels_to_keep: continue labels.append(label) #appends the label #loads, resizes, preprocesses, and stores the image. resized_images.append(img_as_ubyte(resize(imread(path+'/' + file), (width, height)))) filenames.append(file) return resized_images, labels, filenames 222
223 وزارة التعليـ Ministry of Education 2024-1446 البيانات غير المنظمة (Unstructured Data ) متنوعة، ويمكن أن تحتاج إلى كثير من الوقت والموارد الحاسوبية، ويُعدُّ هذا صحيحًا بشكل خاص عند معالجتها عن طريق أساليب تعلم عميقة ومعقدة، كما سينفذ لاحقًا في هذا الدرس، ولتقليل الوقت الحسابي يتم تطبيق دالة ( )resize_images_v2 على مجموعة فرعية من الصور من فئات الحيوانات: resized_images,labels,filenames=resize_images_v2( "Animal Face/Image", width = 224, height = 224, labels_to_keep=['Lion', 'Chicken', 'Duck', 'Rabbit', 'Deer', 'Cat', 'Wolf', 'Bear', 'Pigeon', 'Eagle'] ) BearHead CatHead ChickenHead CowHead DeerHead DuckHead EagleHead ElephantHead LionHead MonkeyHead Natural PandaHead PigeonHead RabbitHead SheepHead TigerHead WolfHead هذه العناوين العشرة التي سيتم استخدامها. يمكنك بسهولة تعديل المتغيّر labels_to_keep (العناوين _ المحتفظ بها ) ؛ للتركيز على فئات معينة، وستلاحظ أن عرض الصور وارتفاعها تم ضبطهما على 224 x 224 ، بدلًا من الشكل 100 × 100 الذي استخدم في الدرس السابق؛ لأن إحدى طرائق التجميع القائمة على التعلَّم العميق - الواردة في هذا الدرس - تتطلب أن تكون للصور هذه الأبعاد ، ولذا اعتمد الشكل 224 224 لضمان منح حق الوصول لجميع الطرائق إلى المدخلات نفسها . كما ذُكر في الدرس السابق فإن القوائم الأصلية resized_images الصور المعدل حجمها ) ، وlabels (العناوين) ، وfilenames ( أسماء الملفات) تشتمل على الصور التي تنتمي لكل فئة مُجمَّعة معا. على سبيل المثال: تظهر جميع صور Lion ( الأسد ) معًا في بداية القائمة المعدَّل حجمها، وقد يُضلل ذلك العديد من الخوارزميات، خاصة في مجال رؤية الحاسب، وطالما أنه يمكن فهرسة الصور عشوائيا لكل قائمة من القوائم الثلاث، فمن المهم التأكد من استخدام الترتيب العشوائي نفسه لهذه القوائم . وبخلاف ذلك، من المستحيل العثور على العنوان الصحيح الصورة معيّنة أو اسم الملف الصحيح لها. في الدرس السابق، تم إجراء إعادة الترتيب (Shuffling) باستخدام الدالة ()train_test_split، وبما أن هذه الدالة غير قابلة للتطبيق على مهام التجميع، فستستخدم المقطع البرمجي التالي لإعادة الترتيب import random #connects the three lists together, so that they are shuffled in the same order connected = list(zip(resized_images, labels, filenames)) random.shuffle(connected) # disconnects the three lists resized_images, labels, filenames= zip(*connected)
وزارة التعليم Ministry of Education 2024-1446 تتمثل الخطوة التالية في تحويل قائمتي resized_images الصور المعدل حجمها ) ، وlabels (العناوين) إلى مصفوفات numpy ، وكما هو الحال في الدرس السابق يُستخدم الاسمان المتغيران القياسيان (XY) لتمثيل البيانات والعناوين import numpy as np # used for numeric computations X = np.array(resized_images) Y = np.array(labels) X.shape (1085, 224, 224, 3) يتحقق شكل البيانات من أنها تشمل 1,085 صورة، كل صورة منها ذات أبعاد 224 × 224 ، وذات ثلاث قنوات ألوان RGB. التجميع بدون هندسة الخصائص Clustering without Feature Engineering ستركز محاولة التجميع الأولى على القيام بتسطيح الصور؛ لتحويل كل منها إلى متَّجه أحادي البعد أرقامه 224 × 224 × 3 = 150,528 رقما . وعلى غرار خوارزميات التصنيف التي تم توضيحها في الدرس السابق، فإن معظم خوارزميات التجميع تتطلب هذا النوع من التنسيق المتجهي. x_flat = np.array([img.flatten() for img in X]) x_flat[0].shape (150528,) x_flat[0] # prints the first flat image array([107, 146, 102, ..., 91, 86, 108], dtype=uint8) كل قيمة عددية في هذا التنسيق المسطح ذات قيمة ألوان RGB تتراوح بين 0 و 255 ، وفي الدرس السابق، تمّ توضيح أن التحجيم القياسي والتسوية يؤديان أحيانًا إلى تحسين نتائج بعض خوارزميات التعلم الآلي. يمكن استخدام المقطع البرمجي التالي لتسوية القيم وجعلها ما بين 0 و1 X_norm = x_flat / 255 X_norm[0] array([0.41960784, 0.57254902, 0.4 0.42352941]) 0.35686275, 0.3372549 224
225 وزارة التعليـ Ministry of Education 2024-1446 يمكن الآن تصوير البيانات بصريا باستخدام أداة TSNEVisualizer المألوفة من مكتبة yellowbrick، وتم هذه الأداة أيضًا في الدرس الثاني من الوحدة الثالثة؛ لتصوير العناقيد بصرياً في البيانات النصيَّة. استخدام هـ %%capture !pip install yellowbrick from yellowbrick.text import TSNEVisualizer tsne = TSNEVisualizer(colors = color_palette) # initializes the tool tsne.fit(X_norm, y) #uses TSNE to reduce the data to 2 dimensions tsne.show(); TSNE Projection of 1085 Documents Bear Cat Chicken Deer Duck Eagle Lion Pigeon Rabbit Wolf شكل 4.18: تصوير العناقيد التصوير التمهيدي هذا ليس كما هو متوقع، فيبدو أن فئات الحيوانات المختلفة مختلطة ببعضها، دون تمييز واضح بينها ودون عناقيد واضحة لها، ويدل ذلك على أن مجرد القيام بتسطيح بيانات الصورة الأصلية من المحتمل ألا يؤدي إلى نتائج ذات جودة عالية. بعد ذلك، ستستخدم خوارزمية التجميع التكتلي (Agglomerative Clustering) نفسها التي استخدمت في الدرس الثاني من الوحدة الثالثة؛ لتجميع البيانات في متغيّر X_norm ، ويستورد المقطع البرمجي التالي مجموعة الأدوات المطلوبة، ويصوّر الرسم الشجري لمجموعة البيانات:
وزارة التعليم Ministry of Education 2024-1446 from sklearn.cluster import AgglomerativeClustering # used for agglomerative clustering import scipy.cluster.hierarchy as hierarchy hierarchy.set_link_color_palette(color_palette) #sets the color palette plt.figure() # iteratively merges points and clusters until all points belong to a single cluster linkage_flat = hierarchy.linkage(X_norm, method = 'ward') hierarchy.dendrogram(linkage_flat) plt.show() ward وارد عبارة عن طريقة ربط تُستخدم في التجميع التكتلي الهرمي 1600 1400 1200 1000 800 600 400 200 0 شكل 4.19 الرسم الشجري يصنف البيانات إلى عنقودين يكشف الرسم الشجري عنقودين كبيرين يمكن تقسيمهما إلى عناقيد أصغر ، ويُستخدم المقطع البرمجي التالي أداة AgglomerativeClustering ) التجميع التكتلي ) ؛ لإنشاء عشرة عناقيد، وهو العدد الفعلي للعناقيد الموجودة في AC = AgglomerativeClustering(linkage = 'ward',n_clusters = 10) AC.fit(X_norm) # applies the tool to the data pred pred = AC.labels_ # gets the cluster labels array([9, 6, 3, ..., 4, 4, 3], dtype=int64) البيانات เ وأخيرا، تُستخدم مؤشرات Homogeneity ( التجانس ) ، و Completeness ( الاكتمال) ، وAdjusted Rand راند) المعدَّل) وكلها تعرّفت عليها في الدرس الثاني من الوحدة الثالثة لتقييم جودة العناقيد الناتجة. 226
227 وزارة التعليم Ministry of Education 2024-1446 from sklearn.metrics import homogeneity_score, adjusted_rand_score, completeness_score print('\nHomogeneity score:', homogeneity_score(y, pred)) print('\nAdjusted Rand score:', adjusted_rand_score(y, pred)) print('\nCompleteness score:', completeness_score(y, pred)) Homogeneity score: 0.09868725008128477 Adjusted Rand score: 0.038254515908926826 Completeness score: 0.101897123096584 كما سبق توضيحه بالتفصيل في الدرس الثاني من الوحدة الثالثة، فإن مؤشري التجانس والاكتمال يأخذان قيما بين 0 و1، وترتفع قيمة مؤشر التجانس إلى أقصى حد عندما يكون لجميع نقاط العنقود الواحد العنوان الحقيقي الأساسي نفسه، كما ترتفع قيمة مؤشر الاكتمال إلى الحد الأقصى عندما تنتمي جميع نقاط البيانات التي تحمل العنوان الحقيقي الأساسي نفسه إلى العنقود نفسه، وأخيرًا يأخذ مؤشر راند المعدَّل قيما بين 0.5 و1.0، وترتفع إلى الحد الأقصى عندما تكون جميع نقاط البيانات التي لها العنوان نفسه في العنقود نفسه، وتكون جميع النقاط ذات العناوين المختلفة في عناقيد متباينة، وكما هو متوقع تفشل الخوارزمية بعد تصوير البيانات في العثور على عناقيد عالية الجودة تتطابق مع فئات الحيوانات الفعلية، حيث أن قيم المؤشرات الثلاث منخفضة للغاية، وعلى الرغم من أن مجرد القيام بتسطيح البيانات كان كافيًا للحصول على نتائج معقولة لتصنيف الصور ، إلا أن تجميع الصور في عناقيد يُمثَّل مشكلة أكثر صعوبة. التجميع بانتقاء الخصائص Clustering with Feature Selection في الدرس السابق تم توضيح أن استخدام تحويل المخطّط التكراري للتدرجات الموجهة (HOG) لتحويل بيانات الصور إلى صيغة أكثر دلالة يؤدي إلى إنجاز أعلى بشكل ملحوظ في تصنيف الصور، وسيُطبق التحويل نفسه لاختبار ما إذا كان بإمكانه أيضًا تحسين نتائج مهام تجميع الصور. from skimage.color import rgb2gray. from skimage.feature import hog # converts the list of resized images to an array of grayscale images X_gray = np.array([rgb2gray(img) for img in resized_images]) # computes the HOG features for each grayscale image in the array X_hog = np.array([hog(img) for img in X_gray]) X_hog.shape (1085, 54756) يكشف شكل البيانات المحولة أن كل صورة تُمثَّل الآن على هيئة متَّجه بقيمة عددية هي أربعة وخمسون ألفا وسبعمئة وستة وخمسون (54,756) . يستخدم المقطع البرمجي التالي أداة TEVisualizer لتصوير هذا التنسيق الجديد : tsne = TSNEVisualizer(colors tsne.fit(X_hog, y) tsne.show(); = color_palette)
TSNE Projection of 1085 Documents Bear Cat Chicken Deer Duck Eagle Lion Pigeon Rabbit Wolf شكل 4.20 تصوير العناقيد يُعدُّ هذا التصوير أكثر مصداقية من الذي تم إنتاجه للبيانات غير المحوَّلة، وعلى الرغم من وجود بعض الشوائب، فإن الشكل يُظهر عناقيد واضحة ومفصولة جيدًا، ويمكن الآن حساب الرسم الشجري لمجموعة البيانات هذه. plt.figure() linkage_2 = hierarchy.linkage(X_hog,method = 'ward') hierarchy.dendrogram(linkage_2) plt.show() 100 وزارة التعليم Ministry of Education 2024-1446 50 80 60 60 40 40 20 شكل 4.21 الرسم الشجري لفئات وجوه الحيوانات المختلفة باستخدام مُخطَّط تكراري للتدرجات الموجهة (HOG) 228
229 وزارة التعليم Ministry of Education 2024-1446 يقترح الرسم الشجري خمسة عناقيد، وهو بالضبط نصف العدد الصحيح البالغ عشرة عناقيد يتبنى المقطع البرمجي التالي هذا الاقتراح ويطبق أداة AgglomerativeClustering ( التجميع التكتلي) ويُظهر نتائج المؤشرات الثلاثة AC = AgglomerativeClustering(linkage = 'ward', n_clusters AC.fit(X_hog) pred AC.labels_ = = 5) print('\nHomogeneity score:', homogeneity_score(y, pred)) print('\nAdjusted Rand score:', adjusted_rand_score(y, pred)) print('\nCompleteness score:', completeness_score(y, pred)) Homogeneity score: 0.4046340612330986 Adjusted Rand score: 0.29990205334627734 Completeness score: 0.6306921317302154 تكشف النتائج أنه على الرغم من أن عدد العناقيد التي تم استخدامها كان أقل بكثير من العدد الصحيح، إلا أن النتائج أفضل بكثير من النتائج التي ظهرت عند استخدام الرقم الصحيح على البيانات غير المحولة. ويوضّح ذلك ذكاء التحويل بواسطة المخطّط التكراري للتدرجات الموجهة، ويُثبت أنه يمكن أن يؤدي إلى تحسينات رائعة في الأداء لكل من مهام التعلُّم الموجّه ومهام التعلُّم غير الموجه في رؤية الحاسب، ولإكمال التحليل يُعيد المقطع البرمجي التالي تجميع البيانات المحوَّلة بالعدد الصحيح للعناقيد : AC = AgglomerativeClustering(linkage = 'ward', n_clusters = 10) AC.fit(X_hog) pred AC.labels_ print('\nHomogeneity score:', homogeneity_score(y, pred)) print('\nAdjusted Rand score:', adjusted_rand_score(y, pred)) print('\nCompleteness score:', completeness_score(y, pred)) Homogeneity score: 0.5720932612704411 Adjusted Rand score: 0.41243540297103065 Completeness Score: 0.617016965322667 وكما هو متوقع، زادت قيم المؤشرات بشكل عام ، فعلى سبيل المثال تجاوز كل من التجانس والاكتمال الآن 0.55، مما يدل على أن الخوارزمية تقوم بعمل أفضل فيما يتعلق بكل من وضع الحيوانات التي تنتمي لفئة واحدة في العنقود نفسه، وإنشاء عناقيد نقية (Pure) تتكون في الغالب من فئة الحيوان نفسه.
التجميع باستخدام الشبكات العصبية Clustering Using Neural Networks أحدث استخدام نماذج التعلُّم العميق ( الشبكات العصبية العميقة ذات الطبقات المتعددة) ثورة في مجال تجميع الصور من خلال توفير خوارزميات قوية وعالية الدقة، ويمكنها تجميع الصور المتشابهة معًا تلقائيًا دون الحاجة إلى هندسة الخصائص. تعتمد العديد من الطرائق التقليدية لتجميع الصور على خاصية المستخرجات (Extractors) لاستخراج معلومات ذات مغزى من صورة ما، واستخدام هذه المعلومات لتجميع الصور المتشابهة معًا، ويمكن أن تستغرق هذه العملية وقتًا طويلًا وتتطلب خبرة في المجال لتصميم خاصية المستخرجات بخصائص فعّالة. بالإضافة إلى ذلك - وكما تم التوضيح في الدرس السابق على الرغم من أن خاصية الواصفات (Descriptors) مثل: تحويل المخطَّط التكراري للتدرجات الموجهة يمكنها بالفعل تحسين النتائج، إلا أنها بعيدة كل البعد عن الكمال، وبالتأكيد يوجد مجال للتحسين من ناحية أخرى، يتمتع التعلُّم العميق بالقدرة على تعلُّم تمثيلات الخصائص من البيانات الخام تلقائيًا ، ويتيح ذلك لطرائق التعلم العميق معرفة الخصائص شديدة التمايز التي تلتقط الأنماط الهامة وراء البيانات، مما يؤدي إلى تجميع أكثر دقة وقوة، ولتحقيق ذلك تُستخدم عدة طبقات مختلفة في الشبكة العصبية بما فيها: • الطبقات الكثيفة Dense Layers) طبقات التجميع (Pooling Layers) • طبقات الإقصاء (Dropout Layers) في الشبكة العصبية في الدرس الأول من الوحدة الثالثة، تم استخدام طبقة مخفية - الطبقة الكثيفة Dense Layer) مكونة من ثلاث مئة خلية عصبية من نموذج الكلمة إلى المتجه (Word2Vec) ؛ لتمثيل كل كلمة، وفي تلك الحالة دُرِّب نموذج الكلمة إلى المتَّجه مسبقًا على مجموعة هي طبقة في الشبكات العصبية ترتبط بيانات كبيرة جدا تحتوي على ملايين الأخبار من أخبار قوقل ( Google News ) . فيها كل العقد التي في الطبقة السابقة بكل تُعدُّ نماذج الشبكات العصبية المدربة مسبقًا شائعة أيضًا في مجال رؤية الحاسب، العقد التي في الطبقة الحالية، حيث يتم ومن الأمثلة المعهودة على ذلك نموذج VGG16 الذي يشيع استخدامه في مهام تمرير الإشارات من العقد في الطبقة السابقة في الشبكة إلى العقد في الطبقة التعرف على الصور، ويتبع نموذج VGG16 معمارية عميقة قائمة على الشبكات العصبية الترشيحية يوجد بها ست عشرة طبقة ، ويُعد نموذجًا موجهًا دُرِّب على الحالية بواسطة وزنية محددة، وتُطبق مجموعة بيانات كبيرة من الصور المعنونة تسمى شبكة الصور (ImageNet) ، ومع دالة التنشيط (Activation Function) على الإشارات المرسلة إلى الطبقة الكثيفة ذلك، تتكون مجموعة بيانات التدريب الخاصة بنموذج VGG16 من ملايين الصور ومئات العناوين المختلفة، مما يحسن بشكل كبير من قدرة النموذج على فهم الأجزاء لتوليد نتائج الإخراج النهائية. المختلفة من الصورة ، وعلى غرار الشبكة العصبية الترشيحية البسيطة الموضّحة في الشكل 4.22، ويستخدم نموذج VGG16 أيضًا طبقة كثيفة نهائية تحتوي على أربعة آلاف وستة وتسعين خلية عصبية لتمثيل كل صورة قبل إدخالها في طبقة المخرج طبقة التجميع (Pooling Layer) و : ( Output Layer) ، ويوضّح هذا القسم كيف يمكن تكييف نموذج VGG16 لتجميع هي طبقة في الشبكات العصبية الصور، على الرغم من أنه صُمِّم في الأصل لتصنيف الصور: ستخدم لتقليل الأبعاد الفراغية حمل النموذج VGG16 الذي دُرِّب مسبقًا. 2 احذف طبقة المخرج من النموذج، فذلك يجعل الطبقة الأخيرة الكثيفة هي طبقة المخرج الجديدة. لبيانات المدخلات. طبقة الإقصاء (Dropout Layer) استخدم النموذج المقتطع Truncated Model) - النموذج السابق الذي هي طريقة تنظيم تُستخدم لمنع فرط اقتطعت الطبقة الأخيرة منه ؛ لتحويل كل صورة في مجموعة بيانات التخصيص في نموذج لمجموعة بيانات في Animal Faces ( وجوه الحيوانات) إلى متَّجَه عددي له أربع آلاف وست وتسعون الشبكات العصبية عن طريق إقصاء عُقد موجودة في الطبقة خلال كل دورة تدريب. قيمة. استخدم التجميع التكتلي؛ لتجميع المتجهات الناتجة عن ذلك. وزارة التعليم Ministry of Education 2024-1446 230
المخرج Dense Dense Dense Conv 5-2 Conv 5-3 Pooling Conv 5-1 Conv 1-1 Conv 1-1 Pooling Conv 2-1 Conv 2-2 Pooling Conv 3-1 Conv 3-2 Conv 3-3 Pooling Conv 4-1 Conv 4-2 Conv 4-3 Pooling شكل 4.22 معمارية نموذج VGG16 المدخل يمكن استخدام مكتبة TensorFlow ومكتبة Keras اللتين تعرّفت عليهما في الدرس السابق للوصول إلى نموذج VGG16 واقتطاعه، وتتمثل الخطوة الأولى في استيراد جميع الأدوات المطلوبة: يحذف الطبقة الأخيرة من المُخرَج. from keras.applications.vgg16 import VGG16 # used to access the pre-trained VGG16 model from keras.models import Model VGG16() # loads the pretrained VGG16 model # removes the output layer model = Model(inputs = model.inputs, outputs = model.layers[-2].output) model = يطبق المقطع البرمجي التالي المعالجة الأولية الأساسية نفسها التي يتطلبها نموذج VGG16 مثل: تحجيم قيم ألوان RGB لتكون بين 0 و1: from keras.applications.vgg16 import preprocess_input X_prep = preprocess_input(x) X_prep.shape (1085, 224, 224, 3) لاحظ أن شكل البيانات يظل كما هو، أي: ألفٌ وخمس وثمانون صورة ، كل صورة منها أبعادها 224 × 224، وثلاث قنوات ألوان RGB ، وبعد ذلك يمكن استخدام النموذج المقتطع لتحويل كل صورة إلى متَّجه مكون من 4,096 عدد. X_VGG16 = model.predict(X_prep, use_multiprocessing X_VGG16.shape 231 34/34 [======: (1085, 4096) II II II II II II II = True) - 57s 2s/step يُضبط متغيّر المعالجة المتعددة multiprocessing = True ( تفعيل المعالجة المتعددة لتسريع العملية من خلال حساب المتجهات للصور المتعددة بالتوازي، وقبل إكمال خطوة التجميع يُستخدم المقطع البرمجي التالي لتصوير البيانات المتجهة (Vectorized Data): tsne = TSNEVisualizer(colors = color_palette) tsne.fit(X_VGG16, labels) tsne.show(); وزارة التعليم Ministry of Education 2024-1446
وزارة التعليم Ministry of Education 2024-1446 TSNE Projection of 1085 Documents Bear Cat Chicken Deer Duck Eagle Lion Pigeon Rabbit Wolf شكل 4.23 تصوير العناقيد المتشابهه تُعدُّ النتائج مذهلة؛ لأن التصوير الجديد يكشف عناقيد مفصولة عن بعضها بوضوح وتكاد تكون كاملة، كما أن الفصل هنا أفضل بكثير من الفصل الذي كان في البيانات التي حُوِّلت بواسطة المخطّط التكراري للتدرجات الموجهة. linkage_3 = hierarchy.linkage(X_VGG16, method = 'ward') plt.figure() hierarchy.dendrogram (linkage_3) plt.show() 1200 1000 800 600 400 200 0 شكل 4.24 الرسم الشجري الهرمي لفئات وجوه الحيوانات المختلفة باستخدام نموذج VGG16 يقترح الرسم الشجري أربعة عناقيد ، وفي هذه الحالة يمكن للممارس أن يتجاهل الاقتراح بسهولة، ويتبع التصوير السابق بدلًا منه والذي يبيّن بوضوح وجود عشرة عناقيد. 232
233 وزارة التعليم Ministry of Education 2024-1446 يستخدم المقطع البرمجي التالي التجميع التكتلي ويوضّح قيم المؤشرات لكل من العناقيد الأربعة والعناقيد العشرة: AC = AgglomerativeClustering(linkage = 'ward',n_clusters AC.fit(X_VGG16) pred=AC.labels_ = 4) print('\nHomogeneity score:', homogeneity_score(y, pred)) print('\nAdjusted Rand score:', adjusted_rand_score(y, pred)) print('\nCompleteness score:', completeness_score(y, pred)) Homogeneity score: 0.504687456015823 Adjusted Rand score: 0.37265351562538257 Completeness score: 0.9193141240200559 AC = AgglomerativeClustering(linkage='ward',n_clusters = AC.fit(X_VGG16) pred=AC.labels_ 10) print('\nHomogeneity score:', homogeneity_score(y, pred)) print('\nAdjusted Rand score:', adjusted_rand_score(y, pred)) print('\nCompleteness score:', completeness_score(y, pred)) Homogeneity score: 0.8403973102506642 Adjusted Rand score: 0.766734821176714 Completeness score: 0.8509145102288217 تثبت النتائج صحة الأدلة التي قدمها التصوير، وتؤدي التحولات التي أنتجها نموذج VGG16 إلى نتائج مذهلة إلى حد كبير لكل من العناقيد الأربعة والعناقيد العشرة في الواقع، ظهرت نتائج شبه مثالية لجميع المؤشرات الثلاثة عند استخدام عشرة عناقيد، مما يثبت أن النتائج غالبًا تتوافق تمامًا مع فئات الحيوانات في مجموعة البيانات. يُعد نموذج VGG16 من أقدم نماذج الشبكات العصبية الترشيحية عالية الذكاء المدربة مسبقًا لغرض استخدامها في تطبيقات رؤية الحاسب، ومع ذلك نُشرت العديد من نماذج الشبكات العصبية الترشيحية الذكية الأخرى المدربة مسبقًا والتي تجاوز أداؤها أداء نموذج VGG16
تمرينات اذكر الميزة التي تتمتع بها تقنيات التعلُّم غير الموجّه مقارنة بتقنيات التعلُّم الموجه في تحليل الصور. لديك مصفوفة قيم موحدة X_flat تشمل صورًا مسطحة ، وكل صف في المصفوفة يمثَّل صورة مسطحة مختلفة على هيئة متتالية من الأعداد الصحيحة تتراوح بين 0 و 255 . أكمل المقطع البرمجي التالي، بحيث يستخدم التجميع التكتلي في تصنيف الصور التي من x_flat إلى خمسة عناقيد مختلفة: وزارة التعليم Ministry of Education 2024-1446 from import Agglomerative Clustering # used for agglomerative clustering AC = AgglomerativeClustering(linkage='ward', X_norm #normalizes the data AC.fit(X_norm) # applies the tool to the data pred = AC. # gets the cluster labels عدد بعض مزايا استخدام التعلُّم العميق التي يمتاز بها على طرائق تجميع الصور التقليدية. 1 2 3 234
235 لديك مصفوفة قيم موحدة X_flat تشمل صورًا مسطحة ، وكل صف في المصفوفة يمثَّل صورة مسطحة مختلفة على هيئة متتالية من الأعداد الصحيحة تتراوح بين 0 و 255. أكمل المقطع البرمجي التالي، بحيث يستخدم طريقة وارد ward) لإنشاء وتصوير رسم شجري للصور في هذه المصفوفة: import scipy.cluster.hierarchy as hierarchy #visualizes and supports hierarchical clustering tasks import X_norm وزارة التعليم = as plt # normalizes the data plt.figure() # creates a new empty figure linkage_flat-hierarchy.linkage( hierarchy. Ministry of Education 2024-1446 plt.show() #shows the figure (linkage_flat) method=' ') صف الطريقة التي يُطبق بها التجميع بالشبكات العصبية في تحليل الصور. 4 5