سلام
هم میتونید از Lmdb استفاده کنید هم میتونید نکنید.
هم از طریق سی++ میتونید فیجر اکسترکشن داشته باشید و هم پایتون
مثال سی++ اینجا اومده که سر راسته و فقط فراخونی میکنید فایل اجرایی رو و ارگومانهای مورد نیاز رو میدید .
برای پایتون مثال classification.ipnb رو ببینید از همون طریق میتونید استارت کار رو بزنید. چون کاملا سر راسته . یه net میسازید فایل deploy و مدل از پیش اموزش داده شده رو مشخص میکنید . اگر میانگین استفاده شده اون رو هم لحاظ میکنید . حالا تصاویر خودتون رو به شبکه میدید و خروجی اون لایه ای که مدنظرتون هست رو میگیرید و ذخیره میکنید.
یعنی بطور خلاصه بصورت زیر هست :
net = caffe.Net(deploy.prototxt, pretrainedModel.caffemodel, caffe.TEST)
با ترنسفورمر پیش پردازشهای معمول اگر نیاز باشه انجام میدید مثل فایل میانگین و...
transformer = caffe.io.Transformer({'data': net.blobs['data'].data.shape})
transformer.set_mean('data', np.load(mean.npy).mean(1).mean(1))
transformer.set_transpose('data', (2,0,1))
transformer.set_raw_scale('data', 255.0)
اینا پیش پردازشهای معمول هست که رو الکس نت معمولا انجام میشه (مثال classification.ipnb رو در پوشه examples ببینید همه اینها رو متوجه میشید)
net.blobs['data'].reshape(1,3,227,227)
و بعد هم تصویر رو میخونید
img = caffe.io.load_image(image_file)
تصویر رو بعد از پیش پردازش به لایه دیتا میدیم (یادتون باشه تو دیپلوی batch رو برابر یک بزارید )
net.blobs['data'].data[...] = transformer.preprocess('data', img)
فوروارد پس رو انجام میدیم تا محاسبات مورد نیاز انجام بشه و فیچرها بدست بیاد
output = net.forward()
و نهایتا هم نام لایه رو مشخص میکنید :
extrated_feature =net.blobs['fc7'].data[0]
توضیحات کارها و خطوط بالا همه در مثالهایی پایتون در پوشه examples اومده و براحتی متوجه میشید.
برای پایتون هم میتونید مثل بالا عمل کنید یا از این اسکریپت استفاده کنید.