القط غنيم: كيف تجعل القطط لا تعزل نفسها في الحديقة في المنزل؟

كان هناك روبرت بوند ، مبرمج مقيم في كاليفورنيا يبلغ من العمر 65 عامًا. وكان لديه زوجة البستنة الذي أحبها العشب نظيفة جدا. ولكن هذه هي ولاية كاليفورنيا ، لا توجد أسوار بطول مترين مع نظام حماية القطط. القطط المجاورة المشي على العشب وحماقة!



كان يجب حل المشكلة. كيف قرر روبرت ذلك؟ لقد اشترى بعض الحديد لجهاز الكمبيوتر الخاص به ، وربط كاميرا مراقبة في الهواء الطلق يطل على العشب بها ، ثم فعل شيئًا غير عادي إلى حد ما ، وقام بتنزيل برنامج Open Source المجاني المتاح - شبكة عصبية ، وبدأ في تدريبها على التعرف على القطط في صورة الكاميرا. والمهمة في البداية تبدو تافهة ، لأنه إذا تعلمت شيئًا ما وهو أمر سهل ، فهي قطط ، نظرًا لأن القطط تتناثر فيها الإنترنت ، فهناك عشرات الملايين منهم. إذا كان كل شيء بهذه البساطة ، ولكن الأمور أسوأ ، في القطط في الحياة الحقيقية تذهب إلى هراء معظمهم في الليل. لا توجد صور للقطط الليلية تقشر في الحديقة على الإنترنت. حتى أن بعض القطط تنجح في الشرب من نظام الري أثناء العمل ، لكن لا يزال يتم التخلص منها.



فيما يلي وصف للمشروع من المؤلف ، يمكن العثور على النسخة الإنجليزية هنا .

كان هذا المشروع مدفوعًا بأمرين: الرغبة في معرفة المزيد حول برنامج الشبكة العصبية والرغبة في تشجيع القطط المجاورة على التسكع في مكان آخر بجانب حشيشي.

يتضمن المشروع ثلاثة مكونات فقط للأجهزة: لوحة Nvidia Jetson TX1 ، وكاميرا Foscam FI9800P IP ، وجسيمات الفوتون المتصلة بالمرحل . يتم تركيب الكاميرا على جانب المنزل على جانب العشب. اتصلت بنقطة الوصول WI-FI ، تليها Jetson. يتم تثبيت جسيمات الفوتون والمرحلات في وحدة التحكم في نظام الري الخاص بي وتوصيلها بنقطة وصول WI-FI في المطبخ.

في هذه العملية ، تم تكوين الكاميرا لرصد التغييرات في الفناء. عندما يتغير شيء ما ، تنقل الكاميرا مجموعة من 7 صور إلى Jetson ، واحدة في الثانية. تتعقب الخدمة التي تعمل بنظام Jetson الصور الواردة ، وتنقلها إلى الشبكة العصبية للتدريب العميق في Caffe. إذا اكتشفت الشبكة قطة ، فإن Jetson تشير إلى خادم Particle Photon في السحابة ، والذي يرسل رسالة إلى فوتون. يستجيب الفوتون عن طريق تشغيل الرشاشات لمدة دقيقتين.

هنا ذهبت القط إلى الإطار ، وتشغيل الكاميرا:



بعد بضع ثوان ، دخلت القط في منتصف الفناء ، وفتحت الكاميرا مرة أخرى ونشطت رشاشات نظام الري:



إعداد الكاميرا


لم يكن هناك شيء غير عادي حول تثبيت الكاميرا. الاتصال الدائم الوحيد هو اتصال سلكي بقوة 12 فولت يمر عبر فتحة صغيرة أسفل الحافة. ركبت الكاميرا على صندوق خشبي لالتقاط الفناء الأمامي بحشيش. يتم توصيل مجموعة من الأسلاك بالكاميرا التي أخبأتها في صندوق.

اتبع إرشادات Foscam لربطها بـ Jetson’s AP (انظر أدناه). في الإعداد الخاص بي ، Jetson هو في 10.42.0.1. قمت بتعيين عنوان IP ثابت قدره 10.42.0.11 للكاميرا بحيث يكون من السهل العثور عليها. بمجرد الانتهاء من ذلك ، قم بتوصيل الكمبيوتر المحمول الذي يعمل بنظام Windows بالكاميرا وتكوين المعلمة "تحذير" لتنشيط التغيير. قم بإعداد تحميل 7 صور عبر FTP عن طريق التحذير (تنبيه). ثم قم بإعطائها معرف المستخدم وكلمة المرور على Jetson. ترسل الكاميرا 640 × 360 صورة عبر FTP إلى الدليل الرئيسي.

أدناه يمكنك رؤية المعلمات التي تم تحديدها لتكوين الكاميرا.



إعداد الجسيمات الفوتون


كان الفوتون سهل الإعداد. أنا وضعت في وحدة التحكم في الري.



الصندوق الأسود الموجود على اليسار مع مؤشر LED الأزرق هو محول 24 فولت تيار متردد (5 فولت) تم تحويله إلى 5 فولت تيار مستمر (DC) ، تم شراؤه على eBay. يمكنك رؤية الترحيل الأبيض على لوحة الترحيل والموصل الأزرق على المقدمة. الفوتون نفسه على اليمين. يتم لصقهما على قطعة من الورق المقوى لربطهما معًا.

يتم توصيل خرج 5 فولت من المحول بموصل Particle Photon VIN. إن لوحة الترحيل هي في الغالب تناظرية: فهي تحتوي على ترانزستور NPN لهواة تجميع مفتوح بمدخل 3.3 فولت إسمي إلى قاعدة الترانزستور و 3 فولت تتابع. لم تتمكن وحدة التحكم في الفوتون من توفير ما يكفي من التيار للتحكم في التتابع ، لذلك قمت بتوصيل مجمع مدخلات الترانزستور ب 5 فولت من خلال المقاوم بمقاومة 15 أوم وقوة 1/2 وات ، مما يحد من التيار. يتم توصيل جهات اتصال الترحيل بمروحة المياه بالتوازي مع دائرة التحكم العادية.

هنا هو مخطط الاتصال:

محول 24VAC 24VAC <---> مربع التحكم 24VAC OUT
محول 24VAC + 5V <---> فوتون VIN ، المقاوم لترحيل مجلس + 3.3V
محول 24VAC GND <---> فوتون GND ، ترحيل GND
فوتون D0 <---> ترحيل إشارة متن الإدخال
ترحيل COM <---> مربع التحكم 24VAC OUT
ترحيل رقم <---> صمام المياه في الفناء الأمامي

تثبيت جيتسون


المكونات الوحيدة للأجهزة المضافة إلى Jetson هي SATA SSD ومحور Belkin USB صغير. يحتوي المحور على مفتاحين لاسلكيين يربطان لوحة المفاتيح والماوس.

جاء SSD يصل دون مشكلة. قمت بإعادة تنسيقه إلى EXT4 وتثبيته كـ / caffe. أوصي بشدة بحذف كل رمز المشروع ، ومستودعات git ، وبيانات التطبيق من بطاقة Jetson الداخلية SD ، لأنه غالبًا ما يكون من السهل مسح النظام أثناء ترقية Jetpack.



إعداد نقطة وصول لاسلكية كان بسيطًا جدًا (صواب!) إذا اتبعت هذا الدليل . فقط استخدم قائمة Ubuntu كما هو محدد ، وتأكد من إضافة معلمة التكوين هذه .

لقد قمت بتثبيت vsftpd كخادم FTP . التكوين إلى حد كبير الأسهم. لم أقم بتمكين FTP مجهول. أعطيت الكاميرا اسم مستخدم وكلمة مرور لم تعد تستخدم في أي شيء.

قمت بتثبيت Caffe باستخدام وصفة JetsonHacks . أعتقد أنه لم تعد هناك مشكلة LMDB_MAP_SIZE في الإصدارات الحالية ، لذا حاول إنشاؤها قبل إجراء أية تغييرات. يجب أن تكون قادرًا على تشغيل الاختبارات والتوقيت التجريبي المذكور في البرنامج النصي shell JetsonHacks. أنا أستخدم حاليًا Cuda 7.0 ، لكنني لست متأكدًا مما إذا كان هذا أمرًا مهمًا في هذه المرحلة. استخدام CDNN ، فإنه يوفر كمية كبيرة من الذاكرة في هذه النظم الصغيرة. بمجرد إنشائه ، أضف دليل التصميم إلى المتغير PATH حتى تتمكن البرامج النصية من العثور على Caffe. أضف أيضًا دليل Caffe Python lib إلى PYTHONPATH.

~ $ echo $PATH /home/rgb/bin:/caffe/drive_rc/src:/caffe/drive_rc/std_caffe/caffe/build/tools:/usr/local/cuda-7.0/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin ~ $ echo $PYTHONPATH /caffe/drive_rc/std_caffe/caffe/python: ~ $ echo $LD_LIBRARY_PATH /usr/local/cuda-7.0/lib:/usr/local/lib 

أستخدم خيار الشبكة التلافيفية الكاملة للتقسيم الدلالي (FCN). انظر حديقة حيوان بيركلي النموذجية ، جيثب .

حاولت عدة شبكات أخرى واستقرت أخيرًا على FCN. اقرأ المزيد حول عملية الاختيار في المقالة التالية. تعمل Fcn32s بشكل جيد على TX1 - فهي تستهلك أكثر من 1 غيغابايت من الذاكرة ، وتعمل في حوالي 10 ثوان وتقطع صورة بحجم 640 × 360 في حوالي ثلث الثانية. هناك مجموعة جيدة من البرامج النصية في مستودع الجيثب الحالي ، والإعداد مستقل عن حجم الصورة - إنه يغير حجم الشبكة ليناسب ما ترميه فيه.

لتجربته ، ستحتاج إلى نشر نماذج Caffe المدربة بالفعل. يستغرق بضع دقائق: حجم الملف fcn32s-heavy-pascal.caffemodel يتجاوز 500 ميجابايت.

 $ cd voc-fcn32s $ wget `cat caffemodel-url` 

قم بتحرير infer.py عن طريق تغيير المسار في الأمر Image.open () إلى .jpg المطابق. قم بتغيير السطر "net" بحيث يشير إلى النموذج الذي تم تحميله للتو:

  -net = caffe.Net('fcn8s/deploy.prototxt', 'fcn8s/fcn8s-heavy-40k.caffemodel', caffe.TEST) +net = caffe.Net('voc-fcn32s/deploy.prototxt', 'voc-fcn32s/fcn32s-heavy-pascal.caffemodel', caffe.TEST) 

ستحتاج إلى ملف voc-fcn32s / publish.prototxt. يتم إنشاؤه بسهولة من voc-fcn32s / train.prototxt. انظر إلى التغييرات بين voc-fcn8s / train.prototxt و voc-fcn8s / publish.prototxt لمعرفة كيفية القيام بذلك ، أو يمكنك الحصول عليها من مستودع مطاردة القطط الخاص بي على github. يجب أن تكون الآن قادرًا على الجري.

  $ python infer.py 

يتضمن مستودع التخزين الخاص بي عدة إصدارات من infer.py ، والعديد من أدوات Python المساعدة التي تعرف عن الملفات المقسمة ، وكود فوتون والبرامج النصية للإدارة والبرامج النصية العاملة التي أستخدمها لبدء النظام ومراقبته. اقرأ المزيد عن البرنامج أدناه.

اختيار الشبكة


عادة ما يتم تدريب الشبكات العصبية للتعرف على الصور للتعرف على مجموعة من الكائنات. لنفترض أننا نعطي كل كائن فهرسًا من واحد إلى ن. تجيب شبكة التصنيف على السؤال "ما الأشياء الموجودة في هذه الصورة؟" إرجاع صفيف من صفر إلى n-1 ، حيث يكون لكل إدخال صفيف قيمة من صفر إلى واحد. الصفر يعني أن الكائن ليس في الصورة. تعني القيمة غير الصفرية أنه يمكن أن يكون هناك احتمال متزايد عندما تقترب القيمة من الوحدة. هنا قطة ورجل في مجموعة من 5 عناصر:



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



هذا المشروع جزء من مشروع أكبر يهدف إلى التحكم في سيارة يتم التحكم فيها عن طريق الراديو باستخدام جهاز كمبيوتر. تتمثل الفكرة في استخدام شبكة عصبية لتحديد موضع (الموضع والاتجاه ثلاثي الأبعاد العالمي) للسيارة لإرسال أوامر التنقل إليها. الكاميرا ثابتة ، والعشب مسطح في الغالب. يمكنني استخدام المشغل قليلاً لتغيير الموضع ثلاثي الأبعاد حتى تتمكن الشبكة العصبية من العثور على بكسل الشاشة واتجاهها. دور القط في كل هذا هو "الغرض المقصود".

بدأت بالتفكير بشكل أساسي في السيارة ، لأنني لم أكن أعرف كيف ستتحول ، على افتراض أن التعرف على قطة مع شبكة مدربة مسبقًا سيكون تافهاً. بعد الكثير من العمل ، والذي لن أصفه بالتفصيل في هذه المقالة ، قررت أنه يمكنك تحديد اتجاه السيارة بدرجة عالية من الموثوقية. فيما يلي لقطة تدريب بزاوية 292.5 درجة:



تم إنجاز معظم هذا العمل مع شبكة التصنيف ، نموذج Caffe bvlc_reference_caffenet. لذلك ، قررت السماح لمهمة شبكة التقسيم بتحديد موضع الجهاز على الشاشة.

الشبكة الأولى التي استخدمتها هي Faster R-CNN [1]. تقوم بإرجاع المربعات المحيطة بالكائنات الموجودة في الصورة ، وليس البكسل. لكن الشبكة على Jetson كانت بطيئة جدًا بالنسبة لهذا التطبيق. كانت فكرة الصندوق المحيط جذابة للغاية ، لذلك نظرت أيضًا إلى الشبكة الموجهة نحو القيادة [2]. كانت أيضا بطيئة جدا. كانت FCN [3] أسرع شبكة تجزئة حاولت. يُقصد بتعبير "FCN" "الشبكة التلافيفية بالكامل" ، الشبكة التلافيفية بالكامل ، حيث إنها لم تعد تتطلب إدخال أي حجم معين للصورة ويتكون فقط من التلافيات / التجمعات. يؤدي التبديل إلى الطبقات التلافيفية فقط إلى تسارع كبير ، حيث يصنّف صوري بحوالي 1/3 ثانية على Jetson. يتضمن FCN مجموعة جيدة من البرامج النصية Python للتدريب ونشر سهل. تقوم البرامج النصية Python بتغيير حجم الشبكة لتناسب أي حجم للصورة الواردة ، مما يسهل معالجة الصورة الرئيسية. كان لدي فائز!

يحتوي إصدار FCN GitHub على العديد من الخيارات. أولا حاولت voc-fcn32s. انها عملت تماما. تم تدريب Voc-fcn32s مسبقًا على 20 درسًا صوتيًا قياسيًا. لأن هذا بسيط جدًا ، جربت pascalcontext-fcn32s. تم تدريبه في 59 فصلًا ، بما في ذلك الحشائش والأشجار ، لذا اعتقدت أنه يجب أن يكون أفضل. ولكن اتضح أن ذلك ليس دائمًا - فقد كان لصور المخرجات مجموعات أكثر بكثير من البكسل ، ولم يكن تجزئة القطط والأشخاص المتراكب على العشب والشجيرات دقيقًا للغاية. كان الفصل من siftflow أكثر تعقيدًا ، لذا عدت سريعًا إلى خيارات voc.

لا يزال اختيار شبكات voc يعني ثلاثة أشياء يجب مراعاتها: voc-fcn32s و voc-fcn16s و voc-fcn8s. أنها تختلف في "خطوة" تجزئة الإخراج. الخطوة 32 هي الخطوة الرئيسية للشبكة: يتم تقليل صورة 640 × 360 إلى شبكة 20 × 11 بحلول وقت اكتمال الطبقات التلافيفية. ثم تجزئة هذا الخام "deconvolves" يعود إلى 640x360 ، كما هو موضح في [3]. يتم تحقيق الخطوة 16 والخطوة 8 بإضافة المزيد من المنطق إلى الشبكة من أجل تجزئة أفضل. لم أحاول حتى ذلك - التجزئة المقسمة إلى 32 مقطعًا هي الأولى التي جربتها ، وقد تمسكت بها ، لأن تمزيقها يبدو جيدًا بما يكفي لهذا المشروع ، والتدريب ، كما هو موضح ، يبدو أكثر تعقيدًا للشبكتين الأخريين.

تدريب


أول شيء لاحظته عند تشغيل النظام وبدء تشغيله هو أن حوالي 30٪ فقط من القطط تم التعرف عليها من قبل الشبكة. لقد وجدت سببين لذلك. أولاً ، غالبًا ما تأتي القطط في الليل ، لذلك ترى الكاميرا في ضوء الأشعة تحت الحمراء. يمكن إصلاح ذلك بسهولة - ما عليك سوى إضافة بعض صور الأشعة تحت الحمراء المجزأة للقطط للتدريب. المشكلة الثانية التي اكتشفتها بعد مراجعة عدة مئات من صور القطط من مجموعة التدريب هي أن العديد من الصور تنتمي إلى مجموعة "إلقاء نظرة على كيتي اللطيفة". هذه هي الصور الأمامية لقط على مستوى عين القط. إما أن تكون القط على ظهرها أو تقع على حضن صاحبها. لا يشبهون القطط التي تتجول في فناء المنزل. مرة أخرى ، يمكن إصلاحه بسهولة مع بعض الصور النهارية المقسمة.



كيفية تقسيم كائن في صورة التدريب؟ الطريقة التي تتبعها هي طرح صورة الخلفية ومعالجة بكسلات المقدمة للإشارة إلى تعقب الكائن. في الممارسة العملية ، يعمل هذا بشكل جيد ، لأنه في أرشيفي من الكاميرا عادة ما تكون هناك صورة تم التقاطها قبل بضع ثوان من الصورة المجزأة. ولكن هناك بعض القطع الأثرية التي تحتاج إلى تنظيف ، وغالبًا ما يحتاج التقسيم إلى توضيح ، لذلك كتبت أداة تحضير أولية لتحرير مقاطع الصور ، src / extract_fg.cpp. انظر الملاحظة في أعلى الملف المصدر للاستخدام. إنه خرقاء قليلاً ولديه أخطاء صغيرة في التحقق ويحتاج إلى بعض التنقيح ، لكنه يعمل جيدًا بما يكفي للمهمة.

الآن بعد أن لدينا بعض الصور للتدريب ، دعونا نرى كيفية القيام بذلك. أنا استنسخت voc-fcn32s إلى الدليل rgb_voc_fcn32s. تشير جميع أسماء الملفات إلى هذا الدليل حتى نهاية هذا الدرس.

  $ cp -r voc-fcn32s rgb_voc_fcn32s 

رمز على جيثب بلدي ، بما في ذلك ملف التدريب عينة في البيانات / rgb_voc. التغييرات الرئيسية موضحة أدناه.

تنسيق ملف التدريب


تتوقع طبقة البيانات الموزعة صورًا مشفرة ودلائل تجزئة. يحتوي ملف التدريب على سطر واحد لكل ملف ؛ ثم تحصل طبقة البيانات على أسماء ملفات الصور وشرائحها ، مضيفة أسماء الدليل الثابت الترميز. لم ينجح هذا بالنسبة لي ، لأن لدي عدة فئات من بيانات التدريب. تحتوي بيانات التدريب الخاصة بي على مجموعة من الخطوط ، يحتوي كل منها على صورة وتجزئة لتلك الصورة.

  $ head data/rgb_voc/train.txt /caffe/drive_rc/images/negs/MDAlarm_20160620-083644.jpg /caffe/drive_rc/images/empty_seg.png /caffe/drive_rc/images/yardp.fg/0128.jpg /caffe/drive_rc/images/yardp.seg/0128.png /caffe/drive_rc/images/negs/MDAlarm_20160619-174354.jpg /caffe/drive_rc/images/empty_seg.png /caffe/drive_rc/images/yardp.fg/0025.jpg /caffe/drive_rc/images/yardp.seg/0025.png /caffe/drive_rc/images/yardp.fg/0074.jpg /caffe/drive_rc/images/yardp.seg/0074.png /caffe/drive_rc/images/yard.fg/0048.jpg /caffe/drive_rc/images/yard.seg/0048.png /caffe/drive_rc/images/yard.fg/0226.jpg /caffe/drive_rc/images/yard.seg/0226.png 

لقد استبدلت voc_layers.py بـ rgb_voc_layers.py ، والذي يفهم المخطط الجديد:

  --- voc_layers.py 2016-05-20 10:04:35.426326765 -0700 +++ rgb_voc_layers.py 2016-05-31 08:59:29.680669202 -0700 ... - # load indices for images and labels - split_f = '{}/ImageSets/Segmentation/{}.txt'.format(self.voc_dir, - self.split) - self.indices = open(split_f, 'r').read().splitlines() + # load lines for images and labels + self.lines = open(self.input_file, 'r').read().splitlines() 

و train.prototxt المعدلة لاستخدام رمز rgb_voc_layers الخاص بي. لاحظ أن الوسائط مختلفة أيضًا.

  --- voc-fcn32s/train.prototxt 2016-05-03 09:32:05.276438269 -0700 +++ rgb_voc_fcn32s/train.prototxt 2016-05-27 15:47:36.496258195 -0700 @@ -4,9 +4,9 @@ top: "data" top: "label" python_param { - module: "layers" - layer: "SBDDSegDataLayer" - param_str: "{\'sbdd_dir\': \'../../data/sbdd/dataset\', \'seed\': 1337, \'split\': \'train\', \'mean\': (104.00699, 116.66877, 122.67892)}" + module: "rgb_voc_layers" + layer: "rgbDataLayer" + param_str: "{\'input_file\': \'data/rgb_voc/train.txt\', \'seed\': 1337, \'split\': \'train\', \'mean\': (104.00699, 1 

تقريبا نفس التغيير في val.prototxt:

  --- voc-fcn32s/val.prototxt 2016-05-03 09:32:05.276438269 -0700 +++ rgb_voc_fcn32s/val.prototxt 2016-05-27 15:47:44.092258203 -0700 @@ -4,9 +4,9 @@ top: "data" top: "label" python_param { - module: "layers" - layer: "VOCSegDataLayer" - param_str: "{\'voc_dir\': \'../../data/pascal/VOC2011\', \'seed\': 1337, \'split\': \'seg11valid\', \'mean\': (104.00699, 116.66877, 122.67892)}" + module: "rgb_voc_layers" + layer: "rgbDataLayer" + param_str: "{\'input_file\': \'data/rgb_voc/test.txt\', \'seed\': 1337, \'split\': \'seg11valid\', \'mean\': (104.00699, 116.66877, 122.67892)}" 

Solver.py


قم بتشغيل solution.py لبدء التمرين:

  $ python rgb_voc_fcn32s / solve.py 

إنه يعدل بعض الآليات الطبيعية لـ Caffe. على وجه الخصوص ، يتم تعيين عدد التكرارات في أسفل الملف. في هذا الإعداد المحدد ، يكون التكرار صورة واحدة لأن حجم الشبكة يتغير لكل صورة ويتم تخطي الصورة واحدة في كل مرة.

أحد الأشياء العظيمة حول العمل مع Nvidia هو توفر معدات رائعة حقًا. لديّ Titan مدمج في محطة عمل ، ولم تمانع إدارتي في السماح لي باستخدامه لشيء مشكوك فيه مثل هذا المشروع. كان آخر تدريب لي هو 4000 تكرار ، استغرق الأمر أكثر من ساعتين بقليل على تيتان.

لقد تعلمت بعض الأشياء


  • كانت حفنة من الصور (أقل من 50) كافية لتدريب الشبكة على التعرف على المتسللين الليليين.
  • علمت اللقطات الليلية الشبكة على الاعتقاد بأن الظلال على ممر المشاة هي قطط.
  • تساعد اللقطات السلبية ، أي الصور بدون بيكسلات مجزأة ، في التعامل مع مشكلة الظل.
  • من السهل إعادة تدريب الشبكة باستخدام كاميرا ثابتة حتى يتم تصنيف كل شيء مختلف على أنه شيء عشوائي.
  • القطط والبشر ، المتراكبة على خلفيات عشوائية ، تساعد في المشاكل الناشئة عن التدريب الزائد.

كما ترون ، فإن العملية تكرارية.

توصيات


[1] أسرع R-CNN: نحو اكتشاف كائن في الوقت الحقيقي مع شبكات اقتراح المنطقة Shaoqing Ren ، Kaiming He ، Ross Girshick ، ​​Jian Sun abs / 1506.01497v3 .
[2] تقييم تجريبي للتعلم العميق على القيادة السريعة برودي هوفال ، تاو وانغ ، ساميب تاندون ، جيف كيسكي ، ويل سونج ، جويل بازهايبامبيل ، ميخايلو أندريلوكا ، براناف راجبوركار ، توكي ميجيماتسو ، رويس شينج يو ، فيرناندو كوجوجو ، فرناندو موخيكا ، Andrew Y. Ng arXiv: 1504.01716v3 ، github.com/brodyh/caffe.git .
[3] الشبكات التلافيفية الكاملة للتقسيم الدلالي جوناثان لونغ ، إيفان شلهامر ، تريفور داريل ، ARXiv: 1411.4038v2 ، github.com/shelhamer/fcn.berkeleyvision.org.git .

النتائج


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

تجدر الإشارة إلى أن كل هذا تم بواسطة شخص ليس مبرمجًا يعمل في ياندكس أو غوغل طوال حياته وبمساعدة الأجهزة ، رخيص جدًا وصغير وبسيط.

قليلا من الإعلان :)


شكرا لك على البقاء معنا. هل تحب مقالاتنا؟ تريد أن ترى المزيد من المواد المثيرة للاهتمام؟ ادعمنا عن طريق تقديم طلب أو التوصية به لأصدقائك ، خصم 30٪ لمستخدمي Habr على خادم مستوى دخول تناظري فريد اخترعوه لك: الحقيقة الكاملة حول VPS (KVM) E5-2650 v4 (6 Cores) 10GB DDR4 240GB SSD 1Gbps من 20 دولارا أو كيفية تقسيم الخادم؟ (تتوفر خيارات مع RAID1 و RAID10 ، ما يصل إلى 24 مركزًا وما يصل إلى 40 جيجابايت من ذاكرة DDR4).

ديل R730xd 2 مرات أرخص؟ فقط لدينا 2 من Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6 جيجا هرتز 14 جيجا بايت 64 جيجا بايت DDR4 4 × 960 جيجا بايت SSD 1 جيجابت في الثانية 100 TV من 199 دولار في هولندا! Dell R420 - 2x E5-2430 سعة 2 جيجا هرتز 6 جيجا بايت 128 جيجا بايت ذاكرة DDR3 2x960GB SSD بسرعة 1 جيجابت في الثانية 100 تيرابايت - من 99 دولار اقرأ عن كيفية بناء البنية التحتية فئة باستخدام خوادم V4 R730xd E5-2650d تكلف 9000 يورو عن بنس واحد؟

Source: https://habr.com/ru/post/ar473334/


All Articles