ذخیرهٔ تصاویر بهصورت فایلهای .png یا .jpg برای کار با تعداد کمی تصویر، یا حتی ویرایش چندصد عکس با Python Imaging Library (PIL)، انتخاب مناسبی است. اما آموزش Real Python توضیح میدهد که با بزرگشدن dataset، شیوهٔ ذخیره و دسترسی به تصاویر به موضوع مهمتری تبدیل میشود؛ بهویژه وقتی لازم است دادهها بارها برای آموزش مدل خوانده شوند.
این مسئله در کار با convolutional neural networks یا CNNs پررنگ است. مقاله برای نشاندادن مقیاس چنین کارهایی به ImageNet اشاره میکند: یک database عمومی با بیش از ۱۴ میلیون تصویر که برای آموزش مدلها در کارهایی مثل تشخیص و دستهبندی اشیا استفاده میشود. خواندن مکرر چنین مجموعهای در batchهای متعدد میتواند زمان زیادی بگیرد.
آموزش سه مسیر را معرفی میکند: ذخیرهٔ تصاویر بهشکل فایلهای PNG روی دیسک، استفاده از LMDB و استفاده از HDF5. محورهای مقایسهٔ اعلامشده شامل خواندن و نوشتن یک تصویر، خواندن و نوشتن تعداد زیادی تصویر و فضای مصرفی دیسک است. بااینحال، بخش موجود از مقاله هنوز نتیجهٔ این مقایسهها یا برتری یکی از روشها را ارائه نمیکند.
برای اجرای مثالها، CIFAR-10 انتخاب شده است؛ datasetی شامل ۶۰ هزار تصویر رنگی با ابعاد ۳۲ در ۳۲ pixel از گروههایی مانند سگ، گربه و هواپیما. نسخهٔ Python این مجموعه، تصاویر را نه بهشکل فایلهای تصویری معمول، بلکه بهصورت دادههای ذخیرهشده با cPickle در اختیار میگذارد. نمونهٔ کد ارائهشده پنج فایل batch آموزشی را میخواند، تصاویر را با NumPy بازسازی میکند و تصاویر و labelهای متناظر را در RAM قرار میدهد.
مقاله همچنین یادآوری میکند که pickle میتواند objectهای Python را بدون تبدیل اضافی ذخیره کند، اما خطر امنیتی بالقوه دارد و برای حجم بسیار زیاد داده هم محدودیتهایی دارد. در این آموزش، استفاده از آن صرفاً برای استخراج CIFAR-10 است، نه بهعنوان یکی از سه روش اصلی ذخیرهٔ تصویر. برای جزئیات پیادهسازی و ادامهٔ مقایسهها، به مقالهٔ اصلی مراجعه کن: https://realpython.com/storing-images-in-python/






