قبل حوالي 15 سنة ، انبهرت بطريقة عمل الحواسيب وكيفية عمل التطبيقات بواسطتها. ربما شعرت اني عملت إنجازاً عظيما عندما برمجت أول برنامج يقوم بعمليات حسابية بسيطة كالجمع والطرح بواسطة visual basic. لكن ربما علي الأعتراف الآن بأني قد استهنت بقدرات الحواسيب المتطورة حينها . في عام 1885 من القرن التاسع عشر قام المهندس الميكانيكي تشارلز بابج (ملقب بأبو الحواسيب) بإختراع أول حاسب ميكانيكي. هذا الحاسب البدائي كان بإمكانه القيام بعمليات منطقية بسيطة، عمليات مشروطة وتكرارية.
مع مرور السنين تطورت الحواسيب بشكل كبير وأصبحت كهروميكانيكية في 1939 و من ثم بشكل كامل رقمية (digital) في عام 1941 بواسطة كونارد زيوس. هذه الحواسيب كان بإمكانها القيام بعمليات حسابية على الأعداد الحقيقية والذي يعتبر قفزة نوعية في عالم الحواسيب. بالرغم من التطورات المتسارعة كان من الصعب على الحواسيب معالجة الصور حتى ستينات القرن الماضي.
تجربة غيرت كل شيء
في عام 1959 قام العالمين هوبل و فيتسيل بتجربة غيرت مفهومنا عن كيفية عمل عقل الإنسان وأعطت بصيص من الأمل لإنشاء روبوتات ذكية.حيث أجرى العالمين (حازا على جائزة نوبل لاحقاً) التجربة على دماغ قطة لمراقبة التأثيرات على القشرة البصرية من خلال توصيل أسلاك لدماغ القطة ومراقبة التأثيرات على الخلايا العصبية عندما ترى القطة أشكال معينة. لاحظ العالمان أن عند رؤية القطة خطوط مستقيمة باتجاهات معينة فإن بعض الخلايا العصبية تحفزت بشكل كبير. الشيء الغريب في الموضوع أن بعض الخلايا العصبية تحفزت حسب زاوية إنحراف الخطوط.
هذا يعني أن الجهاز التصويري للقطة يقوم على أشياء بدائية يتم البناء عليها للقيام بعمليات بصرية أكثر تعقيدا، مثل التعرف على أشكال هندسية أو حتى التعرف على الوجوه. الفيديو المرفق يوضح التجربة.
الرؤية الحاسوبية
إذا كنت من محبي أفلام الخيال العلمي ربما تستهويك فكرة روبوت يستطيع رؤية والتعرف على الأشياء من حوله. في عام 2008 أصدرت بيكسار فيلم WALL-E وهو عبارة عن روبوت لديه عينين. مع تجاهل فكرة أن الروبوتات بشكل عام يمكن أن تفكر/تتحدث مثلنا أو أن يكون لديها أي نوع من المعرفة أو المشاعر، هل تستطيع الحواسيب التعرف على من حولها إذا زودناها بكاميرا رقمية ؟
حسناً الأمر ليس بهذه السهولة ، ربما لإن الحاسوب لا يرى الأشياء بنفس الطريقة التي نراها. بشكل مختصر
الحاسب الرقمي يستطيع معالجة الأرقام 0 ، 1 وهي تمثل وجود التيار أم عدمه. بإستخدام هذه الوحدات البنائية بإمكاننا تمثيل أشياء أكثر تعقيدا مثل الأعداد الطبيعية ، النسبية و الحقيقية . كذلك يمكننا تمثيل الصور بنفس الطريقة وذلك بإستخدام ثلاث ألوان رئيسية وهي الأحمر ، الأخضر و الأزرق. بإعطاء أرقام معنية لكل لون يمكننا تمثيل أي صورة في مجال رؤيتنا
الخوارزميات التقليدية
عبر السنين تم إنشاء الكثير من الخوارزميات للتعرف على الصور . هذه الخوارزميات بشكل عام تقوم بإستخلاص
مميزات الصورة features كتعبير عن الكائنات الموجودة فيها. من أشهر هذه الخوارزميات شيوعاً هي خوارزمية SIFT والذي تم إنشاؤه بواسطة دافيد لو في 1999. تقوم الخوارزمية على استخلاص المميزات بواسطة التعرف على اتجاه البكسلات في كل جزء من الصورة بواسطة الإشتقاق المتجه
في النهاية يتم استخدام هذه المتجهات وإدخالها خوارزميات تعليمية machine learning مثل الشبكات العصبية NN. عموماً ، يمكن تعميم هذه الطريقة على أي نوع من المدخلات ، كفيديو ، ملفات ، صوت ، لكن هذه الخوارزميات تعاني من مشكلة كبيرة وهي أنها تعتمد على خوارزميات تقوم بإستخراج المميزات بواسطة معادلات نحن وضعناها. هذا يجعل هذه الخوارزميات محدودة إلى حد كبير ولا يمكن تطبيقها بشكل أوسع.
الخوارزميات الحديثة
كما ذكرنا في السابق فإن الخوارزميات التقليدية تعتمد على استخلاص الخواص المميزة للصور باستخدام خوارزميات معينة. هذا يجعل هذه الخوارزميات محدودة و بطيئة عملياً. ماذا لو كان بإمكاننا ادخال الصور ويتم معالجتها والتعرف عليها بشكل تلقائي وبدون أستخراج أي خواص ومميزات معينة بشكل يدوي؟ هذا ما تفعله الشبكات العصبية الالتفافية (Convolutional Neural Network) والتي لها تاريخ طويل منذ ثمانينات القرن الماضي. لكن ستكون متفاجيء إذا قلت لك أن CNN بالرغم من شيوعها أعطت نتائج سيئة في التعرف على الصور في الماضي. و لكن مؤخراً في 2012 أعطت نتائج غير متوقعة و هذا يعود إلى سببين رئيسين
- توفر العديد من البيانات على الإنترنت مع توفر أدوات تصوير متنوعة ابتداء من الكاميرات ونهاية بالهواتف
الذكية. - توفر معالجات رسومية متطورة GPUs والتي أحدثت ثورة من ناحية القيام بعمليات سريعة على مصفوفات
في فضاءات عالية وهذا التي تعتمد عليه ال CNN.
الشكل التالي يمثل شبكة التفافية بسيطة تتكون من عدة طبقات layers و تقوم في النهاية بتمييز الأرقام من 0-9. هذا التركيب البسيط تسمى بشبكة LeNet
هذا النوع من الخوارزميات تعتبر متعطشة للبيانات بشكل رهيب فكلما زادت البيانات زادة دقتها في التعرف على
الصور. مثلاً من أكثر البيانات المستخدمة في التعرف على الصور (ImageNet) تحتوي على أكثر من 14 مليون صورة. في الإتجاه المقابل للتدريب على هذه البيانات نحتاج إلى شبكات عميقة Deep CNN والتي قد تصل إلى أكثر من 150 طبقة في بعض الشبكات مثل ResNet. تطبيقات عملية لا تقتصر تطبيقات تعلم الآلة على تصنيف الأشياء classification بل تتمدد للعديد من التطبيقات في مجال الرؤية الحاسوبية
- تحديد الكائنات object detection من خلال التعرف على حدودها . هذا التطبيق يفيد في تحديد الكائنات وتصنيفها. يمكن استخدامها في تطبيقات السيارات ذاتية الحركة self-driving cars والعديد من الشركات تستخدم هذه التقنية مثل جوجل وتسلا.
2. التعرف على استقامة الأشخاص pose estimation والذي يقوم بتحديد مفاصل الإنسان ويفيد من ناحية تحديد العمل action detection
3. التعرف على الأشخاص من خلال تحديد الوجه face detection والذي يتم استخدامه للتعرف على المخالفين أو الهاربين من القانون من خلال كاميرات مراقبة cctv. يتم تطبيقه بشكل واسع في دول عدة مثل الصين.
4. في التطبيقات الطبية من خلال التعرف على الأنسجة الخبيثة من خلال الصور cancer classification and detection
الخاتمة
مازال لدينا الكثير لنكتشفه في مجال الرؤية الحاسوبية. التطبيقات ما زالت محدودة ولكن مع التطور الكبير من ناحية المعالجات الرسومية وتوفر البيانات يمكن أن نصل إلى أشياء لم نشاهدها إلا في أفلام الخيال العملي.
المصادر:
- https://en.wikipedia.org/wiki/Digital_image_processing
- https://www.pulsarplatform.com/blog/2018/brief-history-computer-vision-vertical-ai-image-recognition/
- https://www.scmp.com/tech/china-tech/article/2143137/shenzhen-police-can-now-identify-drivers-using-facial-recognition
- https://news.developer.nvidia.com/using-cuda-and-machine-learning-to-detect-colon-cancer/
- https://www.sciencedirect.com/science/article/pii/S1110866513000248