تجربة انشاء مجموعة بيانات لأنظمة قراءة الشفاه - Lip Reading Dataset
كنت قد عملت مع فريقي في فترة ٢٠١٧ - ٢٠١٩ على مجموعة بيانات خاصة بمشروع بناء تطبيق أندرويد يستطيع قراءة الشفاه لبعض الكلمات باللغة العربية. ما دفعنا لبناء مجموعة البيانات بأنفسنا هو أننا أردنا أن نصممها بما يخدم الهدف المطلوب، بالاضافة لصعوبة توفر البيانات للغة العربية، انقل هنا بعضًا مما لاحظته في هذه التجربة لعله يفيد.
أولًا: ما هي أنظمة قراءة الشفاه Lip Reading Systems؟
هي أنظمة مساعدة، تعمل على التعرف على الكلام عن طريق استخراج علامات من حركات الوجه والشفاه للشخص المتحدث، بالاعتماد على العلامات البصرية المستخرجة من الصور فقط ودون الحاجة للصوت. تعمل هذه الأنظمة كأنظمة مساعدة للأشخاص الصم أو كبار السن ضمن عدد من استعمالات هذه الأنظمة. تعتمد أنظمة قراءة الشفاه على الصور المستخرجة من مقاطع الفيديو (frames) دون الحاجة للصوت، ويتم استخراج المعلومات المطلوبة من هذه الصور ليتم عندها التعرف على الكلام.
تطبق هذه الأنظمة على لغات مختلفة، فنجد العديد من التطبيقات المتقدمة فيما يخص اللغة الانجليزية، وللعربية كذلك نصيبٌ من المساهمات في هذا المجال.
خطوات العمل على مجموعة البيانات
تحديد هدف المشروع
هذه النقطة مهمة جدًا قبل بداية العمل على مجموعة البيانات، هدف ونوع المشروع يؤثران تأثيرًا مباشرًا في شكل البيانات المراد جمعها، ومواصفاتها، ومدى مرونة هذه المواصفات. مثال: لو كان النظام المستهدف نظامًا يعمل في ظروف ذات اضاءة ضعيفة أو منخفضة فلا بد من مراعاة ذلك في البيانات التي سنجمعها، جمع بياناتٍ في ظروفٍ مثالية ثم استخدامها لنظام يعمل في وجود تحديات واقعية صعبة قد لا يكون خيارًا جيدًا.
علينا أن نجعل البيانات قريبة من شكل البيانات التي سيعمل عليها النظام لاحقًا. هذا لا يعني أن تكون البيانات رديئة بالطبع، لكن نراعي بعض العوامل، كأن يكون النظام المستهدف يعمل في بيئة خارجية Outdoor Environment وليس في بيئة مكتبية مثلًا، مثل هذه العوامل تؤثر في مواصفات مجموعة البيانات.
تحديد مواصفات مبدئية لمجموعة البيانات
بعد تحديد هدف وفكرة المشروع ومواصفاته، سنستنتج عددًا من مواصفات مجموعة البيانات خاصتنا، مثل ظروف الاضاءة، اتجاه الوجه في الصور، مدى حركة المتكلم أثناء التصوير، جنس وأعمار المشاركين، وغيرها. هناك مواصفات أخرى مثل دقة الصور، المسافة بين المتكلم والكاميرا، نوع الكاميرا المستخدمة، حدود المنطقة المطلوبة (مثال: من الأنف حتى الذقن، أو من الأذن حتى الأذن، الخ). من الممكن أن نقوم بتجربة التصوير لعينة صغيرة وملاحظة هذه العوامل وتعديلها حسب ما يلزم، من المهم ألا نجمع كافة العينات بمواصفات غير واضحة ثم نضطر لاعادة جمعها من جديد.
تحديد العينات المطلوبة
بحسب النظام المستهدف، قد تكون العينات المطلوبة أحرفًا أو كلماتٍ أو حتى جملًا، علينا التحقق من نوع العينات الذي يخدم النظام المستهدف قبل جمع البيانات، وبعد تحديد نوع العينات نحدد ما هي العينات، مثل ما هي الكلمات التي سنجمعها، وهل نحتاج لتكرار العينات من ذات المشاركِين أم لا، وعادةً يفضل أن نجعل المشاركين يكررون العينات حتى نحصل على أفضل العينات ونستفيد من التكرار في زيادة حجم البيانات.
تحديد آلية جلب المشارِكين
جمع أشخاص مشاركين أو متطوعين للمشاركة في مجموعة البيانات ليس أمرًا سهلًا، قد نحتاج لوضع مكافآت بسيطة لجمع المشاركين، وقد نجد متطوعين من الأهل والأصدقاء إن لم نحصل على دعم يوفر لنا مجموعة من المشاركين، من المهم أن نحدد من أين سنحصل على المشاركين وكيف سنهيئ مكان التصوير. سنأخذ بالاعتبار أننا قد نحتاج لاعادة العينات للمشارك في حال حدوث أخطاء أثناء التصوير، وبعض المشاركين يتطلب مزيدًا من التعليمات والجهد لأخذ عينات جيدة منه، خاصةً الأطفال.
من الأفضل أن نجهز للمشاركين تعليمات واضحة حول اتجاه الرأس، وسرعة النطق، وما هي الكلمات أو الجمل المطلوبة، وآلية التصوير حتى نسهل عملية أخذ العينات.
اختبار مجموعة البيانات خلال جمعها
كما ذكرت سابقًا، فمن الأفضل جمع عينة صغيرة واختبارها مع النظام، والتعديل عليها حسب ما يلزم، مثلًا قد نلاحظ أن دقة التصوير ليست كافية فنقوم بتغييرها، أو أن المشاركين بعيدون جدًا عن الكاميرا، أو أنهم ينطقون الكلمات بسرعة كبيرة مما جعل عدد الفريمز Frames قليلة جدًا، لذلك من الممكن البدء بعينات نقوم بها بأنفسنا أو بالاستعانة بالأهل، ثم تحسينها والانتقال للمشاركين الآخرين.
بعض المشاركين ليس لديهم جدولٌ مرن، وبعضهم يتطلب وقتًا طويلًا عند أخذ العينات منه، تمكننا من مواصفات البيانات قبل جمعها من المشاركين يحفظ لنا الكثير من الوقت والكثير من البيانات التي قد تهدر بسبب الأخطاء.
تخصيص وقت لمعالجة البيانات بعد جمعها
بعد جمع البيانات الخام، سنحتاج لاستثمار وقتٍ لا بأس به في معالجة البيانات، مثل تنظيم البيانات وعنونتها، وإزالة العينات المعيوبة، وقص العينات للمقاس المطلوب، وتحويل الصور إلى أحادية، أو تحويل الفيديو إلى صور Frames، وهكذا. بعض أنواع المعالجة لا بد منها لأي مجموعة بيانات صورية، والبعض الآخر يعتمد على النظام المستهدف، فلا بد أن نراعي ذلك للوصول للمعالجة المطلوبة التي تزيد من كفاءة النظام.