اذهب إلى المحتوى

Mustafa Suleiman

الأعضاء
  • المساهمات

    20267
  • تاريخ الانضمام

  • تاريخ آخر زيارة

  • عدد الأيام التي تصدر بها

    492

كل منشورات العضو Mustafa Suleiman

  1. هل ما تريده سيتم من خلال كتابة سكريبت بايثون أم بدون برمجة؟ أي تريد أن يتم الأمر بشكل تلقائي، أم هو ملف واحد فقط تريد العمل عليه واستخلاص معلومات منه؟
  2. يتم تحديث الدورة بشكل مستمر، وحاليًا ستتعلم جزء كبير من الأساسيات في الدورة اللازمة لتطوير AI Agents. بجانب أن مسار التعلم المعزز Reinforcement Learning قائم بالكامل على فكرة وجود Agent يتفاعل مع بيئة ويتخذ قرارات للحصول على مكافأة، وهنا ستتعلم كيف يبني الوكيل استراتيجيته بنفسه. وفي مسار تطبيقات عملية على النماذج النصية الكبيرة LLMs، يتم شرح كيفية تطوير وكلاء بالنهج الحديث، حيث التوجه حاليًا هو بناء وكلاء أذكياء Autonomous Agents باستخدام النماذج اللغوية مثل GPT كعقل للمفكر، واستخدام أدوات لتنفيذ المهام مثل استخدام LangChain. وفي مسار تطوير نماذج ذكاء اصطناعي لمتجر إلكتروني، يتم التطبيق بشكل عملي من خلال شرح كيفية بناء Chatbot أو وكيل خدمة عملاء ذكي، وهو أحد أشهر أنواع الـ AI Agents.
  3. يتوفر بالفعل محتوى عن ذلك بالدورة، في المسارات التالية: تطبيقات عملية على النماذج النصية الكبيرة LLMs، فالنماذج اللغوية الكبيرة LLMs هي حاليًا أشهر أشكال الذكاء الاصطناعي التوليدي وتقوم بتوليد النصوص والأكواد. تطبيقات عملية باستخدام المحوّلات Transformers، وهو مسار أساسي أيضًا، لأن معمارية المحوّلات هي البنية التحتية التي تعمل عليها معظم النماذج التوليدية الحديثة مثل GPT و BERT. التعلم العميق Deep Learning، يتضمن شرح للمفاهيم النظرية للنماذج التوليدية كالشبكات التنافسية التوليدية GANs والمشفرات التلقائية المتغيرة VAEs.
  4. fetch ليس الغرض منها تحديد كمية البيانات، فالمتحكم هو المسؤول الأول والأساسي عن تلك العملية، حيث أن fetch هي مجرد وسيلة نقل للطلب من المتصفح إلى الخادم، ولا تملك أي صلاحية للوصول المباشر إلى قاعدة البيانات أو التحكم في كيفية استرجاع البيانات منها. يتوجب عليك كتابة المنطق الخاص بتقسيم البيانات داخل المتحكم في الواجهة الخلفية، لأنّ عملية جلب البيانات تعتمد على استعلامات SQL أو NoSQL التي يتم تنفيذها على الخادم، فالمتصفح يرسل فقط الرغبة في الحصول على عدد معين عبر Query Parameters، ويجب على الخادم أن يفهم تلك الرغبة وينفذها. بمعنى تبدأ العملية عندما تقوم بإرسال الطلب عبر fetch بتمرير المعايير مثل ?limit=10 ضمن الرابط، والتي يستقبلها المتحكم ويقوم بقراءة تلك القيم ومعالجتها، ثم دمجها داخل استعلام قاعدة البيانات باستخدام أوامر مثل LIMIT و OFFSET، وبالتالي يتم استخراج العشرة صفوف المطلوبة فقط من القرص الصلب للخادم وإرسالها عبر الشبكة. وفي حال لا يوجد ذاك المنطق في الخلفية، فسيقوم الخادم بتجاهل تلك المعاملات المرسلة في الرابط، وسيعيد كامل محتوى الجدول في قاعدة البيانات، بالتالي fetch ستقوم بتحميل حجم بيانات ضخم، ويتدهور الأداء حتى لو قمت بعرض جزء صغير منها لاحقاً بواسطة جافاسكريبت، فالهدف الأساسي هو تقليل البيانات المنقولة عبر الشبكة وليس فقط تقليل المعروض على الشاشة.
  5. هناك ثلاث ركائز أساسية وهي Effectiveness و Efficiency و Satisfaction، والتي تعني قياس قدرة المستخدم على إكمال المهام بدقة، والموارد أو الوقت المستغرق لذلك، ومدى رضا المستخدم عن التجربة، ولتطبيق تلك المعايير عمليًا وفي وقت قصير، يتعين عليك البدء بإجراء Heuristic Evaluation سريع، حيث تقوم بمراجعة واجهات التطبيق بنفسك أو بمساعدة خبير بناءً على قواعد Jakob Nielsen العشر لسهولة الاستخدام قبل إطلاق التطبيق للمستخدمين، وسيساعدك ذلك على اكتشاف الأخطاء البديهية في واجهة المستخدم وتصحيحها مبكراً مما يوفر الوقت لاحقاً. عند الانتقال لمرحلة الاختبار مع المستخدمين الفعليين، فأسلوب Guerrilla Usability Testing هو الأنسب لمشاريع التخرج نظراً لقلة تكلفته وسرعته. ولتعزيز دقة النتائج رقمياً، يجب عليك دمج أدوات التحليل البرمجية مثل Firebase Analytics داخل الكود المصدري للتطبيق، والذي يحتوي على دوال برمجية تقوم بتتبع سلوك المستخدم تلقائيًا. ولقياس المعيار الثالث وهو Satisfaction، استخدم مقياس System Usability Scale المعروف اختصاراً بـ SUS، والذي يعتبر المعيار الصناعي الأسرع والأكثر موثوقية، ويتكون من عشرة أسئلة قصيرة تعرض على المستخدم بعد انتهاء التجربة مباشرة عبر Dialog بسيط داخل التطبيق أو استبيان خارجي. وتتمحور الأسئلة حول مدى تعقيد النظام وحاجة المستخدم للدعم الفني، ثم يتم حساب النتيجة النهائية وفق معادلة خاصة لتعطي رقماً من 100، ولو تجاوزت النتيجة 68 يعتبر تطبيقك قابلاً للاستخدام بمستوى جيد، أما إن قلت عن ذلك فيدل على وجود مشاكل جوهرية في تجربة المستخدم تحتاج لإعادة نظر.
  6. بالطبع يجب استدعاء fetch كل مرة تصل فيها إلى نهاية الصفحة أو بالقرب منها حسب تصميم الصفحة لديك، والأفضل بالقرب منها وذلك بالإعتماد على Intersection Observer API في المتصفح. لا تقم أبدًا بجلب كل البيانات، فذلك من شأنه التأثير على الأداء بشكل كبير، وأيضًا استهلاك الموارد بدون داعٍ. من خلال CORS وهي آلية أمان مدمجة في المتصفحات تمنع أي موقع أو أصل - Origin من طلب موارد من موقع آخر إلا إذا سمح الموقع الآخر بذلك صراحًة، والأصل يتكون من البروتوكول، اسم النطاق والمنفذ. أي بتحديد النطاقات المسموح لها بالإتصال بالخادم وتمرير ذلك إلى مكتبة CORS وذلك بالنسبة لجافاسكريبت، أما في PHP فتتحقق من جود الـ origin في الطلب.
  7. ما هو تخصصك؟ هل تنوي استخدامه لدراسة الفيزياء أم تنوي دراسة مجال الذكاء اصطناعي وتسأل عن الأساسيات المطلوبة؟ عامًة لست بحاجة إلى دراسة الفيزياء، بل أساسيات الرياضيات: ابدء بالجبر الخطي ودراسة المصفوفات، العمليات الأساسية، الضرب النقطي. ثم التفاضل ودراسة المشتقات، قاعدة السلسلة، التدرج. ثم الإحصاء ودراسة المتوسط، الانحراف المعياري، التوزيعات الأساسية بعد ذلك كلما واجهتك مفاهيم رياضية، توقف وادرسها. ستجد تفصيل هنا:
  8. البرمجة ليست مثل اللغة الإنجليزية يمكن ممارستها بشكل شفهي أو كتابة نصوص عادية أو الاستماع للشرح فقط، ستحتاج إلى التفاعل بشكل نشط، واستخدام محرر الأكواد لتطبيق ما تعلمته. وكتابة الكود على الهاتف عملية صعبة بطبيعة الحال، لذا لحين توافر لابتوب حاول شراء لوحة مفاتيح لاسلكية وربطها بهاتفك، من أجل أن تتمكن من كتابة الكود الكود بشكل قريب من الحاسوب. واستخدام نسخة الويب من vscode لكتابة الكود وتثبيت المكتبات اللازمة للمشاريع. https://vscode.dev/ وفي حال دورة الذكاء الاصطناعي، فاستخدم جوجل كولاب بدلاً من jupyter.
  9. الملفات الكبيرة عليك بمعالجتها عن طريق التقسيم Chunking، حيث يتم تقسيمها إلى مئات القطع الصغيرة، وفي وقت التقييم، يسترجع النظام فقط الأجزاء ذات الصلة بالمعيار المحدد، بمعنى كل الملفات تدخل نفس الـ pipeline، ويتم استخلاص نصوصها، تقسيمها، وترميزها في نفس قاعدة البيانات. عند البحث، سيعثر النظام على القطع ذات الصلة بغض النظر عن الملف الأصلي الذي أتت منه. والملفات الصغيرة سيتم تقسيمها إلى قطعة واحدة أو بضع قطع وتتم فهرستها كالمعتاد. لذا شكل الـ Pipeline: مرحلة الإدخال والمعالجة المسبقة: استقبال الملفات والصور. استخلاص النصوص من الملفات وللملفات النصية الأمر مباشر لا مشكلة، لكن لملفات الصور، ستحتاج إلى تقنية OCR. ثم تنظيف النصوص بإزالة الأحرف غير الضرورية، التنسيقات وخلافه. 2. التقسيم Chunking، بتقسيم النص الكامل المستخرج من كل الملفات إلى Chunksأصغر وذات معنى، مثلاً، كل قطعة عبارة عن فقرة أو 300 كلمة. 3. مرحلة الترميز والفهرسة: تحويل كل قطعة نصية إلى تمثيل رياضي يسمى Vector Embedding أي متجه رقمي يلتقط المعنى الدلالي للقطعة. ثم تخزين كل المتجهات في قاعدة بيانات متخصصة تسمى Vector Database مثل ChromaDB, Pinecone, FAISS والتي تتيح البحث عن المعلومات بناءًا على المعنى وليس فقط الكلمات المفتاحية. 4. مرحلة الاسترجاع: تحويل السؤال أو القاعدة أو الشرط الذي تريد تقييم المستندات على أساسه إلى Vector Embedding. ثم استخدام المتجه الناتج للبحث في قاعدة البيانات عن أكثر القطع النصية تشابهًا وذات صلة من مستنداتك. 5. مرحلة التوليد والتقييم: بعد العثور على القطع النصية الأكثر صلة التي تم استرجاعها في الخطوة السابقة، تُرسل مع السؤال أو القاعدة أو الشرط الذي تريد تقييم المستندات على أساسه إلى نموذج لغوي كبير LLM. إعطاء النموذج مهمة محددة بكتابة Prompt ليقوم بالتقييم، وتوفير التغذية الراجعة، تحديد النتيجة، والإجابة على سؤال هل المعلومات كافية؟
  10. ما تقصده هو المنطق البرمجي، وأسهل حل هو تقسيم ما تريد تنفيذه إلى أجزاء ثم العمل على جزء جزء وربط المنطق ببعضه البعض، وليس النظر للمشكلة ككل، وأيضًا كتابة الكود هي الخطوة الأخيرة وقبلها يجب التفكير في طريقة حل المشكلة، بمعنى ستكتب كود زائف Pseudocode عبارة عن كتابة خطوات الحل بلغة عادية عربية أو إنجليزية ولكن بأسلوب يشبه الكود، وهنا ستقوم بالتركيز على المنطق فقط، بعيدًا عن تعقيدات الـ Syntax. بمعنى لتطوير برنامج لتحديد هل الرقم زوجي أم فردي، ستقوم بكتابة الكود الزائف التالي: ابدأ البرنامج. اطلب من المستخدم إدخال رقم. خزن الرقم في متغير اسمه number. إذا كان باقي قسمة number على 2 يساوي 0: اطبع الرقم زوجي. وإلا: اطبع الرقم فردي. أنهِ البرنامج. وتصبح ترجمته إلى بايثون مباشرة وسهلة جدًا: number = int(input("**Enter a number:** ")) if number % 2 == 0: print("**The number is even**") else: print("**The number is odd**") وفيما بعد عند زيادة تعقيد المشروع، استخدم أيضًا المخططات الانسيابية Flowcharts وهي تمثيل مرئي لتدفق المنطق في البرنامج. وتنمية مهارة المنطق البرمجي بحاجة إلى ممارسة ووقت، لذا لا تستعجل النتائج، وحاول توظيف ما تعلمته بشكل عملي وربط الدروس ببعضها البعض، بمعنى تنفيذ ما تعلمته في الدروس السابقة في التمرين الخاص بالدرس الحالي وهكذا.
  11. البرنامج منطقه بسيط، وهو إختبار لك، لذا توفير الحل بشكل مباشر لا استفادة به، عليك تجزأة المطلوب إلى أجزاء أو مهام أصغر ثم العمل عليها وليس النظر للمشكلة أو المطلوب ككل. ولا تقم بكتابة الكود أولاً، بل فكر في المنطق الذي ستنفذ من خلاله البرنامج واكتبه في شكل خطوات ثم حوله إلى كود، ابحث عن pseudo code لتتفهم الفكرة. ستحتاج إلى دراسة التالي لتنفيذ البرنامج:
  12. لا يتوفر للأكاديمية تطبيق للهاتف في الوقت الحالي، لكن تستطيع الدراسة من خلال متصفح الهاتف، وعامًة الدراسة من خلال الهاتف بالنسبة للبرمجة ليست عملية، حيث يجب التطبيق بشكل عملي وليس المشاهدة فقط، ولا مشكلة في ذلك بالنسبة للدروس النظرية، أما العملية فيجب المشاهدة والتطبيق في نفس الوقت. وحتى الدروس النظرية يجب تلخيصها في نقاط أو بشكل مختصر للعودة إلى التلخيص عند المراجعة.
  13. حاليًا لا تتوفر عروض بخصوص ذلك، لكن في أوقات مختلفة من العام يتم توفير عرض دورتين بسعر دورة واحدة، وذلك في أوقات مثل العطلة الصيفية أو رمضان وأحيانًا في فترة التخفيضات السنوية الخاصة بالجمعة البيضاء أو في بداية العام. ومنذ فترة انتهى ذلك العرض ويتجدد خلال العام في أوقات مختلفة، وربما يتغير العرض، لكن الفكرة أن هناك عروض خلال العام، تابع الأكاديمية. أيضًا أرجو سؤال مركز المساعدة عن توافر كوبونات حاليًا أم لا، فأحيانًا يتوافر ذلك. كيفية استخدام الكوبون للحصول على الدورات
  14. هما الأساس لأي خوارزمية من الناحية النظرية، حيث Time Complexity يقيس عدد العمليات التي تقوم بها الخوارزمية كدالة في حجم المدخلات، بمعنى كلما زاد حجم المدخلات، كم من الوقت الإضافي سيستغرقه البرنامج؟ فالخوارزمية البطيئة لا مشكلة بها لـ 10 عناصر، لكنها ستستغرق ساعات أو أيام لمعالجة مليون عنصر، بالتالي المقياس يساعدنا على فهم قابلية الـ Scalability أو التوسع للحل. وSpace Complexity يقيس مقدار الذاكرة الإضافية التي تستخدمها الخوارزمية كدالة في حجم المدخلات، أي بزيادة حجم المدخلات، كم من الذاكرة الإضافية سيحتاجها البرنامج؟ حيث استخدام ذاكرة هائلة سيؤدي إلى بطء النظام أو انهياره، خاصة في البيئات ذات الموارد المحدودة مثل الهواتف المحمولة أو الخوادم المشتركة. لكن عمليًا، هناك مقاييس أخرى، وأهما مدى نسبة صحة الخوارزمية بالنسبة لمختلف الحالات، بالإضافة إلى مدى بساطة الخوارزمية ومدى تعقيدها، وأداء ذاكرة التخزين المؤقت، قابلية التوسع في الأنظمة الموزعة، الاستقرار واستهلاك الطاقة.
  15. بالنسبة للاستضافات المجانية، يتوفر render والتي توفر لك استضافة خادم node.js وكذلك توفير قاعدة بيانات Postgres وMySQL، لكن ستحتاج إلى credit card أي بطاقة دفع من أجل تفعيل حسابك والحصول على باقة مجانية ولن يتم خصم منك شيء فقط للتفعيل. وفي حال لا يتوفر بطاقة لتفعيل حسابك، تتوفر استضافة vercel حيث توفر خادم لاستضافة مشاريع node.js، لكن لاستضافة قاعدة البيانات ستحتاج إلى استضافة إضافية وهي Supabase وستحصل على رابط للإتصال بقاعدة البيانات من خلال vercel أي ستضع ذلك الرابط في متغيرات البيئة في مشروعك على Vercel. وبالنسبة للطريقة فيجب أولاً رفع المشروع على github لكي تتمكن من نشره على الاستضافة، ثم تفقد الشرح التالي فالطريقة مشابهة لكن تختلف واجهة المستخدم فقط: وفي حال واجهت صعوبة، قم بالبحث على اليوتيوب عن how to deploy express.js project on render وتستطيع الاستفسار هنا أيضًا.
  16. الدورات بالأكاديمية ليست مُحددة المدة، عند الإشتراك تصبح متاحة لك مدى الحياة، بالإضافة التحديثات التي تحدث على الدورة كل فترة ستحصل عليها مجانًا. كذلك تستطيع الحصول على الشهادة في أي وقت، ولا يوجد مدة مُحددة لإنهاء الدورة خلالها بعد الإشتراك.
  17. جيد جدًا، لكن هل المقصود تطبيق للهاتف أم تطبيق ويب؟ بمعنى هل سيتم استخدامه من قبل المتصفح، أم المطلوب تطبيق متكامل؟ عامًة تستطيعي تطوير تطبيق ويب من خلال django ثم الاستفادة من تقنية PWA لتثبيت تطبيق على الهاتف، و بنسبة كبيرة ذلك كافٍ جدًا حيث تطبيق الويب التقدمي هو في الأساس موقع ويب مصمم ليبدو ويعمل كتطبيق هاتف أصلي. لكن في حال المطلوب رفع تطبيق على متجر جوجل بلاي، فستحتاجين إلى استخدام Java وتطوير تطبيق أندرويد من خلال Android Studio و Java SDK لبناء تطبيق أندرويد أصلي. لكن لو أردتي نشر التطبيق على متجر آبل أيضًا، فيجب تطويره من خلال بايثون وإطار BeeWare. وللعلم أيضًا تستطيعي تعلم C# فهي قريبة من Java و C++ والإعتماد على إطار NET. الخاص بها لتطوير تطبيق وتطبيق هاتف أيضًا لكل من أندرويد وiOS
  18. لا داعي للقلق، طالما وضحت ما تريده في الرسالة سيتم الرد عليك عما قريب، نعتذر لك عن أي تأخير.
  19. ما هي فكرة المشروع المراد تنفيذه؟ وهل لديكِ أي دراية بالبرمجة من قبل؟
  20. عليك بالتقسيم الطبقي المُجمع Stratified Group Splitting وأقصد Stratified Group K-Fold وليس Stratified Split، حيث ستصنف العملاء أنفسهم أي المجموعات إلى فئات بمعنى طبقات بناءًا على أعلى رصيد لديهم بواسطة df.groupby ثم تقسيم العملاء مع الحفاظ على نسبة الفئات في كل مجموعة، لو 3 فئات n_bins = 3 مثلاً التقسيم سيتم على أساس منخفض، متوسط، عالي، وستستخدم pd.qcut لتقسيم متساوٍا حسب الكمية. ولتقسيم البيانات مرة واحدة مثلاً 70% تدريب، 15% تصديق، 15% اختبار، استخدم دالة train_test_split مرتين، وفي كل مرة، مرر فئات الرصيد التي أنشأتها إلى معامل stratify، للحفاظ على نسب الفئات. بمعنى StratifiedGroupKFold، لتنفيذ Cross-Validation بعد التقسيم الأولي، أي على مجموعة التدريب نفسها، لاختيار أفضل إعدادات للنموذج.
  21. تطبيق الويب أشبه في استخدامه لتطبيقات الهاتف لكن من خلال موقع ويب، أي عند زيارته من خلال متصفح الهاتف تستطيعي التنقل بين الصفحات بسرعة وتحديث البيانات بشكل فوري دونّ إعادة تحديث الصفحة، مثل موقع فيسبوك على الهاتف أو تويتر، ولستِ بحاجة إلى تثبيت أية تحديثات فقط تتصفحى الموقع، وعند وجود ميزات جديدة ستجديها به، أي بمجرد أن يقوم المطور بتحديث الموقع، يراه كل المستخدمين، وتحتاجين اتصال دائم بالإنترنت لكي تتصفحي الموقع. بينما تطبيق الهاتف مثل التطبيقات المثبتة على هاتفك، حيث تحتاجين إلى التوجه لمتجر التطبيقات مثل جوجل بلاي على الأندرويد ثم تحميل التطبيق وتثبيته لاستخدامه، وبالطبع تجربة الاستخدان هنا أسرع وأكثر استجابة لأنه مصمم خصيصًا للهاتف، ولديه وصول كامل لكل ميزات الهاتف أي الكاميرا، الميكروفون، جهات الاتصال، الإشعارات، البلوتوث، وخلافه. وهناك حل وسط بينهم وهي تقنية Progressive Web App - PWA وهي تقنية خاصة بمواقع الويب، وتسمح بتثبيت تطبيق خفيف على الهاتف به ميزات تشبه تطبيقات الهاتف. ومتاح أن يعمل بدون إنترنت، ويمكنه إرسال إشعارات، وكل ذلك من خلال المتصفح مباشرة حيث يعتمد في الخلفية على المتصفح. ستحتاجين إلى قراءة التالي:
  22. الأمر ليس بتلك السهولة، وفي مجال البرمجة لا يعني تفوق تقنية في جزء معين أفضليتها بشكل كامل على تقنية أخرى، فلكل تقنية (لغة أو إطار) الاستخدام المناسب لها، ولا يوجد ما هو أفضل لكل شيء. أيضًا التقنيات تتقدم بشكل مستمر، ولذا لم تعد PHP بطيئة، فمع إصدارات PHP 7 و8، تحسن الأداء بمعدل 2 إلى 3 أضعاف، أي سرعة أعلى وتقليل استهلاك الذاكرة، بسبب تقنية JIT Compiler في PHP 8. وPHP تدعم Asynchronous الآن منذ PHP 8.1، من خلال ميزة Fibers بالإضافة إلى مكتبات قوية مثل Swoole التي تتيح بناء تطبيقات غير متزامنة عالية الأداء، وReactPHP. وSynchronous ليس عيب دائمًا، فهي مناسبة لمعالجة الطلبات البسيطة وعمليات قواعد البيانات. ناهيك عن ثبات واستقرار واستمرار تطور منصة WordPress التي تعتمد على PHP، وأيضًا تطور إطار لارافل بشكل كبير، وسهولة وسرعة تطوير المشاريع الصغيرة والمتوسطة من خلالهم. كذلك يوجد استقرار نسبي في مجتمع PHP مقارنًة بجافاسكريبت التي بها مشكلة تعقيد في الأدوات Webpack, Babel, وخلافه، وسرعة التغيير والإنتقال لتقنيات أخرى.
  23. دورة بايثون ودورة الذكاء الاصطناعي بهما ترابط كبير، حيث تخصص الذكاء الاصطناعي يعتمد على لغة بايثون في المقام الأول، وأيضًا الدورة سيتم بها شرح أمور متعلقة بتحليل البيانات وتعلم الآلة، وكذلك شرح إطارات الويب الخاصة ببايثون وهم جانغو وفلاسك، والتي ستحتاج إليها في حال أردت نشر نموذج ليصبح متاح استخدامه من قبل آخرين عن طريق واجهة مستخدم. وبما أنك تخصصت في مجال الويب بالفعل، لذا دورة بايثون هي الأنسب لك، ومن خلال تستطيع تطوير الواجهة الخلفية عن طريق جانغو وفلاسك، وكذلك تطوير مشاريع Full-stack أيضًا من خلالهم. وستتعلم أمور متقدمة نسبيًا مثل كيفية استخراج بيانات من الويب عن طريق web scraping وتخزين تلك البيانات واستخدامها في موقعك مثلاً. كذلك كيفية تحليل البيانات في ملف csv و Word و PDF، والاستفادة منها بتخزينها في قاعدة البيانات وعرضها في الموقع. أما مجال تعلم الآلة أو الذكاء الاصطناعي، فهو مجال مختلف تمامًا عن تخصصك.
  24. هل قمت بإنشاء المستودع المحلي في المجلد الصحيح، أي قمت بتنفيذ أمر git init في مسار مجلد المشروع في منفذ الأوامر سواء cmd أو powershell؟ تأكد من ذلك، وأيضًا يجب تنفيذ الأمر git add . في مسار مجلد المشروع الذي به المستودع المحلي. ويجب إنشاء ملف gitignore. وإعداده، من أجل تجنب رفع الملفات والمجلدات التي ليس لها علاقة بالكود المصدري أو الملفات الحساسة مثل ملف متغيرات البيئة env. الأفضل تعلم أساسيات git من خلال التالي:
  25. اللغة العربية بها صعوبات لأي نموذج، بسبب الأشكال المركبة أي ربط الحروف، النقاط والتشكيل التي تغير المعنى بجانب جودة الصور من الكاميرات الأمنية والإضاءة وزوايا الرؤية. لذا في حال جودة الصورة منخفضة فيجب تنفيذ Preprocessing على الصور من خلال تصحيح الإضاءة، تكبير الصورة 2-3x، تحسين التباين وإزالة الضوضاء، ولو الزوايا مائلة قم بتطبيق تصحيح perspective. أيضًا لو النموذج لم يتدرب على لوحات فيجب عمل Fine-tuning له على لوحات، ولو ظهرت مشكلة مزج اللغات عربي وإنجليزي، ستحتاج إلى استخدام نموذج متعدد اللغات multi-lingual models. ويتوفر نموذج PaddleOCR (Baidu) ويدعم العربية بأداء جيد، وللمشاريع المتقدمة ستحتاج إلى YOLOv8 كنموذج Recognition Layer بحاتب PaddleOCR (Baidu). واعتمد على مجموعة البيانات السعودية التالية لعمل Fine-tuning: https://www.kaggle.com/datasets/riotulab/saudi-license-plate-characters وتستطيع توليد لوحات بشكل اصطناعي أي Synthetic Data Generation، فبناء dataset مخصصة بجودة عالية سيحسن الدقة بنسبة 40 إلى 60% على الأقل. ولتحسينها أكثر قم بعمل Post-processing لتصحيح أخطاء الـ OCR.
×
×
  • أضف...