Darkflow: إضافة دقة التدريب والتحقق من صحة عملية التدريب

تم إنشاؤها على ٣٠ مايو ٢٠١٧  ·  37تعليقات  ·  مصدر: thtrieu/darkflow

اثناء التدريب:
الخطوة 1 - الخسارة 240.92623901367188 - نقل خسارة ave 240.92623901367188
الخطوة 2 - الخسارة 241.2866668701172 - نقل خسارة الوزن 240.96228179931643
الخطوة 3 - الخسارة 239.79562377929688 - نقل خسارة الوزن 240.84561599731447

كيف أضيف دقة التدريب ودقة التحقق من الصحة؟

الخطوة 1 - الخسارة 240.92623901367188 - نقل الخسارة 240.92623901367188 - القطار 0.221
الخطوة 2 - الخسارة 241.2866668701172 - نقل الخسارة 240.96228179931643 - القطار 0.222
الخطوة 3 - خسارة 239.79562377929688 - نقل خسارة ave 240.84561599731447 - قطار 0.223
المرحلة الأولى المنتهية ، التحقق 0.210

التعليق الأكثر فائدة

نعم، ليست مشكلة. سوف أقوم بتحميل الملفات هنا. فلتتفضل بالسؤال إذا كان لديك أى إستفسار.

diff.zip

ال 37 كومينتر

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

على أي حال ، من أجل القيام بذلك ، يجب عليك إضافة بعض المعلمات الجديدة في ملف default.py ، ثم تعديل الوظائف _ الدفعة ، والتحليل والخلط من data.py (كل من مجلدات yolo و yolov2) وتعديل طريقة القطار () في flow.py ملف (هنا عليك فقط تشغيل دفعة أخرى (كل تكرار أو مرة واحدة عدد من التكرارات) باستخدام نفس جلسة tensorflow ، ولكن دون إعادة train_op حتى لا تقوم بتعديل الأوزان). يمكنك أيضًا إضافة tf.summary.FileWriter آخر للتحقق من الصحة حتى تتمكن من تصور الرسم البياني لفقدان التحقق باستخدام لوحة التنسور.

أنا شخصياً اخترت إرسال مجموعتين مختلفتين من البيانات. كانت جميلة للأمام. آمل أن أكون واضحا بما فيه الكفاية.

@ Costyv95 هل يمكنك مشاركة التعليمات البرمجية الخاصة بك مع المعلمات المضافة والتغييرات التي اقترحتها؟

نعم، ليست مشكلة. سوف أقوم بتحميل الملفات هنا. فلتتفضل بالسؤال إذا كان لديك أى إستفسار.

diff.zip

@ Costyv95 هل تساهم مجموعة التحقق في تحديث التدرج في التنفيذ الخاص بك؟

لقد حصلت عليها ، عينات التحقق من الصحة لا تساهم في تحديث التدرج.

نعم ، التحقق من الصحة هو فقط لمعاينة نتائج النموذج خارج مجموعة التدريب.

مرحبا،
آسف. لم ألاحظ آخر بريد. نعم ، التحقق من الصحة هو فقط لمعاينة نتائج النموذج خارج مجموعة التدريب.

في يوم الثلاثاء ، 4 يوليو 2017 ، الساعة 3:16:24 مساءً بتوقيت غرينتش +3 ، كتب yfliu [email protected] :

لقد حصلت عليها ، عينات التحقق من الصحة لا تساهم في تحديث التدرج.

-
أنت تتلقى هذا لأنه تم ذكرك.
قم بالرد على هذه الرسالة الإلكترونية مباشرةً ، أو اعرضها على GitHub ، أو قم بكتم صوت الموضوع.

@ Costyv95 أريد فقط معرفة كيفية تشغيله بعد تعديل الكود الأصلي؟ شكرا جزيلا!

@ Costyv95 قمت بتشغيله على هذا النحو ./flow --model cfg / yolo.cfg --train --dataset "/ home / thinkjoy / lwl / تعديل-darkflow-master / data / VOCdevkit / VOC2007 / JPEGImages" --annotation " / home / thinkjoy / lwl / edit-darkflow-master / data / VOCdevkit / VOC2007 / Annotations "- GPU 1.0
هنا خطأ (قم بتعديل الكود كما أنت)
ملف "/home/thinkjoy/lwl/modify-darkflow-master/darkflow/net/flow.py" ، السطر 82 ، في القطار
feed_dict [self.learning_rate] = lr
AttributeError: كائن "TFNet" ليس له سمة "Learning_rate"

يحدث هذا لأن الكود الذي قدمته لك به بعض التعديلات لمعدل التعلم التكيفي وهناك تغيير آخر عليك القيام به. تجده هنا: https://github.com/thtrieu/darkflow/pull/216/commits/124d55d32d17bdee111201fd6fe520db709a4f9c

ويجب عليك إضافة --val_dataset و val_annotation إلى الوسيطات الخاصة بفقدان التحقق من الصحة.

@ Costyv95 هل يمكننا التحكم في عدد الخطوات للتحقق من الصحة مرة واحدة ، أعتقد فقط أن الخطوة الأولى هي إضاعة بعض الوقت في التدريب؟ شكرا!

@ Costyv95 وهل حققتم اضافة الدقة عند فال؟

@ dream-will للتحقق مرة واحدة في خطوات N ، يمكنك بسهولة إضافة وسيطة (val_steps) في defaults.py وفي طريقة القطار في flow.py تقوم فقط بتشغيل الكود الذي يأتي بعد "#validation time" داخل عبارة if مثله:

# وقت التحقق

if i % self.FLAGS.val_steps == 0:
    (x_batch, datum) = next(val_batches)
    feed_dict = {
        loss_ph[key]: datum[key] 
            for key in loss_ph }
    feed_dict[self.inp] = x_batch
    feed_dict.update(self.feed)
    feed_dict[self.learning_rate] = lr

    fetches = [loss_op, self.summary_op] 
    fetched = self.sess.run(fetches, feed_dict)
    loss = fetched[0]

    if loss_mva_valid is None: loss_mva_valid = loss
    loss_mva_valid = .9 * loss_mva_valid + .1 * loss

    self.val_writer.add_summary(fetched[1], step_now)

    form = 'VALIDATION step {} - loss {} - moving ave loss {}'
    self.say(form.format(step_now, loss, loss_mva_valid))`

في defaults.py فقط أضف هذا السطر:

self.define('val_steps', '1', 'evaluate validation loss every #val_steps iterations')

لا أحصل تمامًا على السؤال الثاني حول إضافة الدقة.

@ Costyv95 شكرًا على إجابتك ، السؤال الثاني يعني فقط عند التحقق من الصحة ، لا نحصل على فقدان التحقق فحسب ، بل نحصل أيضًا على دقة التحقق؟

@ dream-will لذلك عليك أن تنفذ بنفسك طريقة دقة مخصصة تقارن جي تي بي بوكس ​​و بي بوكسز المتوقعة (للحصول على بي بوكس ​​المتوقع ، انظر الكود المستخدم في التنبؤ) ، لكني لا أرى سببًا لذلك لأن تكفي الخسارة. اعلم أن عملية التحقق التي تراها موجودة فقط على مجموعة صغيرة عشوائية من مجموعة التحقق من الصحة ، ولكن هذا يمثل بشكل جيد خسارة الاختبار على مجموعة بيانات تحقق كبيرة بما يكفي.

@ Costyv95 طيب ، شكرا

مرحبًا @ Costyv95 . أواجه مشكلة في إخراج قيم فقد الصمام. لقد قمت بتعديل جميع الملفات باتباع التعليمات والرموز الخاصة بك. هذه هي الأخطاء التالية
File "flow", line 6, in <module> cliHandler(sys.argv) File "/home/alxe/ML/darkflow/darkflow/cli.py", line 26, in cliHandler tfnet = TFNet(FLAGS) File "/home/alxe/ML/darkflow/darkflow/net/build.py", line 64, in __init__ self.framework = create_framework(*args) File "/home/alxe/ML/darkflow/darkflow/net/framework.py", line 59, in create_framework return this(meta, FLAGS) File "/home/alxe/ML/darkflow/darkflow/net/framework.py", line 15, in __init__ self.constructor(meta, FLAGS) File "/home/alxe/ML/darkflow/darkflow/net/yolo/__init__.py", line 20, in constructor misc.labels(meta, FLAGS) #We're not loading from a .pb so we do need to load the labels File "/home/alxe/ML/darkflow/darkflow/net/yolo/misc.py", line 36, in labels with open(file, 'r') as f: TypeError: coercing to Unicode: need string or buffer, NoneType found

هل يمكنك طباعة قيمة متغير الملف؟

@ Costyv95 لا لا أستطيع. هذا ما أديره:
python flow --model cfg/tiny-yolo-voc-1c.cfg --train --dataset train/images --annotation train/annotations --load bin/yolo.weights --gpu 1.0 --epoch 300

ما قصدته بـ "متغير الملف" هو المتغير المستخدم في السطر 36 في misc.py ، لأنني لا أستطيع حقًا فهم الخطأ في التعليمات البرمجية الخاصة بك.
ليس لديك أي حجة --val_dataset؟ كيف نفذت التغيير؟ هل قمت بتقسيم مجموعة البيانات داخل الكود أو أضفت الوسيطة --val_dataset؟

@ Costyv95 مرحبًا ، لدي نسخ ولصق ملفاتك على diff.zip ثم حاولت التدريب باستخدام الأمر

"flow --train --model ./coke/yolo-coke-2c.cfg --annotation ./coke/train/annotations --dataset ./coke/train/images --gpu 1.0 --batch 8 --save 1000 --val_dataset ./coke/validation/images --val_annotation ./coke/validation/annotations

لكن لا يزال هناك خطأ
"
[ nkhanh @ localhost khanh] $ ./run_coke.sh

الاعراب ./coke/yolo-coke-2c.cfg
تحميل بلا ...
انتهى في 0.0001392364501953125 ثانية
Traceback (آخر مكالمة أخيرة):
ملف "/ usr / local / bin / flow" ، السطر 6 ، بتنسيق
cliHandler (sys.argv)
ملف "/usr/local/lib64/python3.6/site-packages/darkflow/cli.py" ، السطر 26 ، في cliHandler
tfnet = TFNet (أعلام)
ملف "/usr/local/lib64/python3.6/site-packages/darkflow/net/build.py" ، السطر 64 ، في __init__
self.framework = create_framework (* args)
ملف "/usr/local/lib64/python3.6/site-packages/darkflow/net/framework.py" ، السطر 59 ، في create_framework
إرجاع هذا (meta، FLAGS)
ملف "/usr/local/lib64/python3.6/site-packages/darkflow/net/framework.py" ، السطر 15 ، في __init__
self.constructor (ميتا ، أعلام)
ملف "/usr/local/lib64/python3.6/site-packages/darkflow/net/yolo/__init__.py" ، السطر 20 ، في المُنشئ
علامات متنوعة (meta، FLAGS) # نحن لا نقوم بالتحميل من ملف pb. لذلك نحتاج إلى تحميل الملصقات
ملف "/usr/local/lib64/python3.6/site-packages/darkflow/net/yolo/misc.py" ، السطر 36 ، في الملصقات
مع open (file، 'r') كـ f:
TypeError: المتوقع str أو bytes أو os.PathLike object ، وليس NoneType
"

@ khanh1412
في سطر منوعات 29
قم بتغييره إلى ملف التسميات المخصص الخاص بك.
ملف = 'labels.txt'

ملاحظة: إنه حل مؤقت.

تضمين التغريدة
كيف نفهم إزالة "[" و "]"؟

أدخل التدريب ...
Traceback (آخر مكالمة أخيرة):
ملف "تدفق" ، السطر 6 ، في
cliHandler (sys.argv)
ملف "/Users/sisyphus/darkflow/darkflow/cli.py" ، السطر 33 ، في cliHandler
طباعة ("أدخل التدريب ...") ؛ tfnet.train ()
ملف "/Users/sisyphus/darkflow/darkflow/net/flow.py" ، السطر 54 ، في القطار
arg_steps = self.FLAGS.steps [1: -1] # إزالة '[' و ']'
TypeError: الكائن "NoneType" غير قابل للانخفاض

هههههههههههههه

أين يجب أن أضيف tf.summary.FileWriter للتحقق من الصحة لتصور الرسم البياني لفقدان التحقق باستخدام لوحة التنسور.

شكرا

@ Costyv95 جربت ملفك المضغوط ، diff.zip. لكن المحطة تخبرني أن --val_dataset هي حجة غير صالحة. هل أحتاج إلى تغيير ملفات أخرى؟

@ Costyv95 جربت ملفك المضغوط ، diff.zip. لكن المحطة تخبرني أن --val_dataset هي حجة غير صالحة. هل أحتاج إلى تغيير ملفات أخرى؟

يجب استبدال جميع الملفات بما في ذلك ملفات yolo-data و yolov2-data. يجب عليك ببساطة نسخ ولصق على التوالي في المجلدات ذات الصلة عن طريق تغيير أسمائهم من خلال "البيانات" فقط لتغيير الملف ببساطة فيها.

تضمين التغريدة
أضف رمز "self.define ('labels'، 'labels.txt'، 'path to labels file')" إلى "def setDefaults (self):" in "darkflow \ defaults.py" ، ثم يمكنك استخدام " - تسميات xxx.txt "كالسابق.

شكرا جزيلا لك!!!!!!!!

في 25 مايو 2019 ، الساعة 3:11 صباحًا ، كتب Jack [email protected] :

KhanhHH https://github.com/KhanhHH
أضف رمز "self.define ('labels'، 'labels.txt'، 'path to labels file')" إلى "def setDefaults (self):" in "darkflow \ defaults.py" ، ثم يمكنك استخدام " - تسميات xxx.txt "كالسابق.

-
أنت تتلقى هذا لأنك علقت.
الرد على هذا البريد الإلكتروني مباشرة، مشاهدته على جيثب https://github.com/thtrieu/darkflow/issues/264؟email_source=notifications&email_token=AEIP7DOZYIFBYZHV22RVIADPXD7ELA5CNFSM4DNH2ANKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODWHLNQQ#issuecomment-495892162 ، أو كتم موضوع https://github.com/notifications/ إلغاء الاشتراك - المصادقة / AEIP7DPOGFQ2EYSSZFPZSL3PXD7ELANCNFSM4DNH2ANA .

تضمين التغريدة
مرحبًا ، أريد أن أعرف كيفية تعيين المسار "gs: // bucket_hand_detection_2" في "darkflow \ defaults.py"؟ my python (3.7) لا يمكنه العثور على هذا المسار ، إنه يرمي بالخطأ ؛ وما جرعة "دلو" يمثل؟

تضمين التغريدة
مرحبًا ، أريد أن أعرف كيفية تعيين المسار "gs: // bucket_hand_detection_2" في "darkflow \ defaults.py"؟ my python (3.7) لا يمكنه العثور على هذا المسار ، إنه يرمي بالخطأ ؛ وما جرعة "دلو" يمثل؟

يتم حفظ نفس الخطأ ولكن نقطة التفتيش بشكل طبيعي ، لذلك لا أعرف ما هو هذا الخطأ @ Costyv95

شكرا @ Costyv95!

مرحبًا ، @ Costyv95 Yolo قطارات وإخراج فقدان التحقق من الصحة ، ولكن بعد 1000 خطوة ، يحدث خطأ. FileNotFoundError: [Errno 2] لا يوجد مثل هذا الملف أو الدليل: 'gsutil': 'gsutil'.

خطأ:
error

akmeraki مرحباً ، لقد قابلت نفس المشكلة ، هل وجدت أي حل بخصوص هذا الخطأ؟

@ zhe0503akmeraki آمل في وقت متأخر لم يفت ولكن كل ما فعلته هو نوع "نقطة تثبيت gsutil" وأنها تحل المشكلة !!

مرحبا شباب.
ماذا علي أن أفعل إذا كنت أرغب في الحصول على دقة النموذج المدرَّب بالكامل؟
على سبيل المثال ، أقوم بتدريب نموذجي وأوقف التدريب في مرحلة ما. الآن لدي آخر نقطة تفتيش محفوظة وأريد حساب الدقة حتى آخر نقطة تفتيش.
تتم تسمية الملفات الموجودة في مجلد cpkt باسم ،

نقطة تفتيش
yolo-new-50.data-00000-of-00001
yolo-new-50.index
يولو الجديد 50 meta
الملف الشخصي yolo-new-50

سأكون ممتنا يا شباب المساعدة.

تضمين التغريدة
لقد اتبعت تعليماتك اللطيفة بعناية ولكن يبدو أن train.py لا يتعرف على حجج --val _... هل يمكنك مساعدتي من فضلك؟ الخطأ على النحو التالي:
خطأ - وسيطة غير صالحة: --val_dataset

يحدث هذا لأن الكود الذي قدمته لك به بعض التعديلات لمعدل التعلم التكيفي وهناك تغيير آخر عليك القيام به. تجده هنا: 124d55d

ويجب عليك إضافة --val_dataset و val_annotation إلى الوسيطات الخاصة بفقدان التحقق من الصحة.

انها لا تعمل بالنسبة لي. تلقيت خطأ على النحو التالي:
خطأ - وسيطة غير صالحة: --val_dataset

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات