عندما أقوم بتشغيل نموذج ImageNet الذي تم اختباره مسبقًا ، وجدت أن غلاف python (wrapper.py) سيقرأ هذا الملف:
python / caffe / imagenet / ilsvrc_2012_mean.npy
على حد علمي ، الملف هو النسخة غير المفككة من الملف "imagenet_mean.binaryproto".
شكرا لك!
1: بالنسبة للتحويل الثنائي ، راجع convert.py ووظائف الأداة المساعدة. قم بتحميل binaryproto في python ، مما يؤدي إلى الحصول على blob ، ثم اتصل بـ blobproto_to_array
، واحفظ المصفوفة numpy كيفما تشاء (على سبيل المثال كـ npy).
2: من الأفضل أن يتم تضمين المتوسط في تعريف الشبكة ، بحيث لا يحتاج إلى حمله في مكان آخر. هناك عمل مستمر # 148 # 244 وتغيير مخطط للقناة يعني أنه يمكن كتابتها بسهولة في prototxt (أي أن كل قناة سيكون لها قيمة متوسطة ثابتة للفضاء ، والتي لها أداء مشابه لوسط الصورة الكامل وتبسيط المعالجة) .
عزيزي إيفان شيلهامر ،
شكرا لك على مساعدتك! لقد قرأت convert.py ووجدت أن الوظيفة "blobproto_to_array". لتحويل التنسيق ، أعتقد أنه يجب أن يكون:
الخطوة 1: dat = to_load_datum ('imagenet_mean.binaryproto')
الخطوة 2: arr = blobproto_to_array (dat)
الخطوة 3: ny.save ('ilsvrc_2012_mean.npy'، arr)
نظرًا لأنني لست على دراية كافية بـ datum و python ، لا أعرف كيفية تحميل ملف "imagenet_mean.binaryproto". هل يمكنك التفضل بإعطائي بعض أسطر التعليمات البرمجية للقيام بذلك؟ شكرا لك.
ملف binaryproto هو ملف protobuf لـ BlobProto
. ارجع إلى البرنامج التعليمي لـ protobuf python وقم بعمل from caffe.proto import caffe_pb2
للحصول على blob = caffe_pb2.BlobProto()
.
كنصيحة للأشخاص الذين يقرؤون هذا الآن ، فإن الملف: convert.py لم يعد موجودًا ، وبدلاً من ذلك انتقلت وظيفة blobproto_to_array إلى وحدة caffe.io .
أعتقد أن mezN تعني وحدة caffe / python / caffe / io.py
import caffe
import numpy as np
import sys
if len(sys.argv) != 3:
print "Usage: python convert_protomean.py proto.mean out.npy"
sys.exit()
blob = caffe.proto.caffe_pb2.BlobProto()
data = open( sys.argv[1] , 'rb' ).read()
blob.ParseFromString(data)
arr = np.array( caffe.io.blobproto_to_array(blob) )
out = arr[0]
np.save( sys.argv[2] , out )
اين كل هذه الملفات 404 أو غير موجود الآن
توجد وظائف الأداة المساعدة لقراءة الملفات الأولية وكتابتها في تنسيقات أخرى في الوحدة النمطية io. يمكنك العثور على الكود هنا:
CPP:
https://github.com/BVLC/caffe/blob/master/src/caffe/util/io.cpp
بايثون:
https://github.com/BVLC/caffe/blob/master/python/caffe/io.py
شكرًا جزيلاً لـ @ sg90 لمشاركة مثل هذا المقتطف اللطيف: +1:
التعليق الأكثر فائدة
808