برنامه نویسی

Computer Vision با ReductStore و Roboflow ساده شده است

Summarize this content to 400 words in Persian Lang بینایی کامپیوتر با خودکارسازی تصمیم‌گیری بر اساس داده‌های بصری، صنایع را متحول می‌کند.
از تشخیص چهره گرفته تا رانندگی خودکار، نیاز به راه حل های بینایی کامپیوتری کارآمد به سرعت در حال افزایش است.
این مقاله به بررسی چگونگی آن می پردازد روبوفلو ترکیب شده با ReductStore، یک ذخیره شی سری زمانی که برای مدیریت جریان های داده پیوسته بهینه شده است، می تواند برنامه های بینایی رایانه را بهبود بخشد. ReductStore برای مدیریت کارآمد داده‌های سری زمانی با فرکانس بالا، مانند جریان‌های ویدیویی، طراحی شده است، که آن را برای ذخیره و بازیابی مجموعه‌های داده بزرگ تولید شده توسط وظایف بینایی رایانه مناسب می‌کند.

در این مقاله به موارد زیر خواهیم پرداخت:

چالش های استقرار مدل چشم انداز رایانه ای سنتی
Roboflow چیست؟
مزایای استفاده از Roboflow Inference
انتخاب مدل بینایی کامپیوتری مناسب
روش های استقرار
استقرار ابر در مقابل لبه
ReductStore برای مدیریت کارآمد داده ها

در پایان این مقاله، درک روشنی از نحوه استفاده از Roboflow و ReductStore برای ساخت و استقرار مدل‌های بینایی کامپیوتری برای برنامه‌های بلادرنگ در دستگاه‌های لبه خواهید داشت. می توانید نمونه کد کامل این مقاله را در GitHub در زیر پیدا کنید reductstore/reduct-roboflow-example مخزن

چالش های استقرار مدل چشم انداز رایانه ای سنتی

چالش های متعددی برای استقرار مدل های بینایی کامپیوتری وجود دارد که می تواند بر کارایی و مقیاس پذیری پروژه ها تأثیر بگذارد. برخی از مسائل کلیدی هستند

الزامات زیرساختی پیچیده: مدل های بینایی کامپیوتری سنتی اغلب به یک زیرساخت محاسباتی قدرتمند نیاز دارند. این شامل پردازنده‌های گرافیکی پیشرفته، سخت‌افزار تخصصی و تنظیمات نرم‌افزاری بهینه‌شده است. برای بسیاری از سازمان ها، راه اندازی این زیرساخت می تواند زمان بر و پرهزینه باشد.
هزینه محاسباتی و تأخیر بالا: اجرای مدل ها، به ویژه برای کاربردهای بلادرنگ، به قدرت محاسباتی قابل توجهی نیاز دارد. در نتیجه، استنباط بر روی تصاویر با وضوح بالا یا جریان های ویدیویی می تواند منجر به تأخیر بالا شود که برای برنامه های حساس به زمان مانند وسایل نقلیه خودران یا نظارت در زمان واقعی مشکل ساز است.
مشکل در مدیریت مجموعه داده های بزرگ: مدل های بینایی کامپیوتری اغلب به مقادیر زیادی داده برچسب دار برای آموزش نیاز دارند. مدیریت این مجموعه داده ها، به ویژه در محیط های بلادرنگ یا در مدت زمان طولانی، موانع بیشتری برای ذخیره سازی، بازیابی و پردازش داده ها ایجاد می کند.

Roboflow چیست؟

Roboflow یک پلتفرم جامع است که برای ساده سازی فرآیند ساخت، آموزش و استقرار مدل های بینایی کامپیوتری پیشرفته طراحی شده است.
این ابزارها را فراهم می کند که به توسعه دهندگان و دانشمندان داده کمک می کند تا کل گردش کار، از ایجاد مجموعه داده تا استنتاج مدل را ساده کنند.

داشبورد Roboflow. منبع تصویر: Roboflow

برخی از ویژگی های کلیدی Roboflow عبارتند از

مدیریت مجموعه داده: Roboflow به کاربران اجازه می دهد تا به راحتی مجموعه داده های بزرگ را آپلود، سازماندهی و پیش پردازش کنند. این برنامه از فرمت های تصویری متعدد پشتیبانی می کند و ابزارهایی را برای تقویت داده ها، برچسب گذاری و تبدیل تصویر فراهم می کند، که تهیه داده ها را برای آموزش آسان می کند.
آموزش مدل و بهینه سازی: با Roboflow، کاربران می توانند از بین طیف گسترده ای از مدل های از پیش آموزش دیده انتخاب کنند یا مدل های خود را از ابتدا آموزش دهند. این پلتفرم ابزارهایی را برای بهینه سازی مدل ها برای محیط های سخت افزاری مختلف، چه در فضای ابری و چه در لبه، ارائه می دهد.
استقرار مدل: Roboflow استقرار مدل‌ها را در محیط‌های مختلف مانند روی دستگاه، لبه یا سیستم‌های مبتنی بر ابر آسان می‌کند. رابط بصری آن به کاربران اجازه می دهد تا مدل های بینایی کامپیوتری را بدون کدگذاری یا تنظیمات گسترده در برنامه ها ادغام کنند.

محیط کاربری آسان Roboflow مانع ورود پروژه‌های بینایی کامپیوتری را کاهش می‌دهد، اما به مدیریت جریان‌های داده بزرگ و پیوسته تولید شده توسط این مدل‌ها نمی‌پردازد.

این همان جایی است که ReductStore در آن جای می‌گیرد و یک ذخیره‌سازی شی سری زمانی تخصصی برای پردازش داده‌های بدون ساختار و فرکانس بالا مانند فیدهای ویدیویی و توالی‌های تصویر فراهم می‌کند. بعداً در این وبلاگ در مورد چگونگی تکمیل این فرآیند ReductStore بیشتر صحبت خواهیم کرد.

مزایای استفاده از Roboflow Inference

Roboflow Inference یک روش قوی و کارآمد برای استقرار مدل‌های بینایی کامپیوتری ارائه می‌کند.
این طراحی شده است تا فرآیند استقرار را با حفظ انعطاف پذیری و عملکرد ساده کند. در زیر برخی از مزایای کلیدی استفاده از Roboflow Inference آورده شده است.

مقرون به صرفه بودن

Roboflow Inference نیاز به زیرساخت های گران قیمت را با ارائه راه حل های استقرار بهینه و مقیاس پذیر از بین می برد. این به توسعه دهندگان اجازه می دهد تا مدل ها را به طور موثر بر روی سخت افزار کم هزینه یا در فضای ابری اجرا کنند و هزینه مقیاس گذاری و حفظ محیط های سفارشی را به حداقل برسانند.

حداقل نیازهای راه اندازی

یکی از نکات مهم در مورد استنتاج Roboflow سهولت استقرار آن است. این پلتفرم از طیف وسیعی از دستگاه‌ها، از پردازنده‌های گرافیکی ابری گرفته تا دستگاه‌های لبه سبک وزن، با حداقل نیازهای پیکربندی پشتیبانی می‌کند. این امکان استقرار سریع و بدون پیکربندی پیچیده را فراهم می کند.

قابلیت های آفلاین

برای برنامه‌های محاسباتی لبه‌ای که اتصال به اینترنت محدود یا غیرقابل اعتماد است، Roboflow Inference از استقرار آفلاین پشتیبانی می‌کند. این ویژگی به ویژه در مناطقی مانند وسایل نقلیه خودران، اینترنت اشیاء صنعتی یا نظارت از راه دور، که در آن پردازش قابل اعتماد و با تأخیر کم حیاتی است، ارزشمند است.

انتخاب مدل بینایی کامپیوتری مناسب

انتخاب مدل مناسب برای برنامه بینایی کامپیوتر شما برای دستیابی به بهترین عملکرد بسیار مهم است. Roboflow این فرآیند را با ارائه طیف گسترده ای از مدل ها که هر کدام برای وظایف و محیط های مختلف مناسب هستند، ساده می کند.

شناخت جهان روبوفلو

Roboflow دسترسی به کتابخانه گسترده ای از مدل های از پیش آموزش دیده را فراهم می کند که معمولاً به عنوان Roboflow Universe شناخته می شود.
این کتابخانه وظایف مختلفی مانند تشخیص اشیا، طبقه بندی تصویر و تقسیم بندی را پوشش می دهد.
کاربران می‌توانند مستقیماً از این مدل‌ها استفاده کنند یا آن‌ها را بر اساس مجموعه داده‌های خاص خود تنظیم کنند.

جهان روبوفلو منبع تصویر: Roboflow
کیهان

معیارهای انتخاب مدل

هنگام انتخاب مدل، فاکتورهای زیر را در نظر بگیرید

نوع وظیفه: تعیین کنید که آیا پروژه شما شامل تشخیص شی، طبقه بندی تصویر یا تقسیم بندی تصویر است. این به طور قابل توجهی بر نوع مدل انتخابی شما تأثیر می گذارد.
دقت مدل: مدلی را انتخاب کنید که با الزامات دقت برنامه شما مطابقت داشته باشد. بسته به کار، معیارهای مختلفی مانند mAP (میانگین دقت متوسط) برای تشخیص شی یا mIoU (متوسط ​​تقاطع روی اتحادیه) برای تقسیم‌بندی وجود دارد که می‌تواند به ارزیابی عملکرد مدل کمک کند.
محدودیت های سخت افزاری: مطمئن شوید مدلی که انتخاب می کنید با سخت افزار شما سازگار است. برای مثال، مدل‌های کوچک‌تر برای دستگاه‌های لبه‌ای با منابع محدود مناسب هستند، در حالی که مدل‌های بزرگ‌تر ممکن است به پردازنده‌های گرافیکی قدرتمندتری نیاز داشته باشند.
الزامات تاخیر: مدل‌های با تأخیر کم برای کاربردهای بلادرنگ مانند نظارت تصویری یا سیستم‌های مستقل ضروری هستند. در بینایی کامپیوتر، GFLOP (عملیات نقطه شناور گیگا) به اندازه گیری پیچیدگی محاسباتی یک مدل کمک می کند. GFLOPهای پایین اغلب به معنای زمان پردازش سریعتر است، اما ممکن است به قیمت دقت تمام شود.

یک رویکرد مفید، مرور وضعیت مدل‌های هنری در آن است اوراق با کد. این به شما ایده ای از عملکرد مدل های مختلف در کارهای مختلف می دهد.

تشخیص شی در COCO منبع تصویر: مقالات با
کد

مرز پارتو بهترین مبادله بین دو هدف رقیب، مانند دقت و هزینه محاسباتی (به عنوان مثال، GFLOP) را نشان می دهد. مدل‌های موجود در مرز پارتو کارآمدترین هستند، به این معنی که اگر می‌خواهید یک هدف را بهبود ببخشید (مانند دقت)، باید هزینه‌های بالاتری را در دیگری بپذیرید (مانند محاسبات بیشتر).

با تمام مدل‌های موجود، می‌توانید یکی از بهترین مدل‌ها را انتخاب کنید. گاهی اوقات بهتر است مدلی را انتخاب کنید که مدت طولانی تری وجود داشته باشد و برای سهولت استفاده و قابلیت اطمینان توسط جامعه آزمایش شده باشد.

کتابخانه مدل Roboflow به گونه ای سازماندهی شده است که به شما کمک می کند تا به راحتی مدل ها را بر اساس این معاوضه ها مرور و انتخاب کنید.

مدل نمونه کلاه سخت. منبع تصویر: Roboflow
کیهان

Roboflow گردش کار برای تقسیم و تسخیر

به خصوص در بینایی کامپیوتر، تقسیم وظایف پیچیده به مراحل کوچکتر می تواند به طور قابل توجهی دقت و کارایی را بهبود بخشد.

به عنوان مثال، تشخیص ارقام در پلاک ها را می توان به دو کار تقسیم کرد: یک مدل پلاک ها را شناسایی و بومی سازی می کند، در حالی که مدل دیگر بر تشخیص ارقام تمرکز می کند. این رویکرد خط لوله به هر مدل اجازه می دهد تا تخصصی شود و در نتیجه عملکرد بهتری داشته باشد. در مقابل، استفاده از یک مدل واحد برای انجام هر دو کار به طور همزمان چالش‌هایی مانند برخورد با نورهای متنوع، زوایای دوربین و طراحی‌های مختلف صفحه را به همراه دارد که منجر به کاهش دقت و فرآیند توسعه پیچیده‌تر می‌شود.

مزایای رویکرد خط لوله عبارتند از:

دقت بهبود یافته زیرا هر مدل متغیرهای کمتری را کنترل می کند.
توسعه سریعتر با کار بر روی مدل ها به صورت موازی.
اشکال زدایی آسان تر با اجزای ایزوله.
مقیاس پذیری از آنجایی که مدل های جداگانه می توانند به طور مستقل به روز شوند.
قابلیت استفاده مجدد از گردش کار برای سایر وظایف یا پروژه ها.

Roboflow Workflows. منبع تصویر: Roboflow

در گردش‌های کاری Roboflow، می‌توانید مجموعه‌ای از مدل‌ها یا مراحل را برای پردازش تصاویر تعریف کنید، مانند تغییر اندازه، بزرگ‌نمایی یا تقسیم آن‌ها به قطعات کوچک‌تر. این به شما امکان می دهد خطوط لوله پیچیده ای ایجاد کنید که می توانند وظایف مختلفی را به طور موثر انجام دهند.

برای مثال، می‌توانید تصاویر را به قطعات کوچک‌تر تقسیم کنید و نتایج را برای پیش‌بینی دقیق‌تر به هم بپیچید:

با گردش کار تقسیم شده
بدون تقسیم گردش کار

نمونه تصویر و تصویر مشروح. تصویر از Viktor Forgacs در Unsplash و
با استفاده از Roboflow Inference حاشیه نویسی شده است.

روش های استقرار

Roboflow Inference چندین روش استقرار را ارائه می دهد که آن را برای انواع مختلف برنامه ها انعطاف پذیر می کند.
فرقی نمی‌کند با تجزیه و تحلیل تصویر تکی، پخش جریانی ویدیوی بی‌درنگ، یا سناریوهای آفلاین کار می‌کنید، Roboflow می‌تواند این موارد استفاده را به طور موثر مدیریت کند.

استقرار روی یک تصویر واحد

برای کاربردهای اساسی مانند تشخیص شی یا طبقه‌بندی یک تصویر، Roboflow به شما امکان می‌دهد یک تصویر را آپلود کنید و فوراً با استفاده از یک مدل انتخاب شده استنتاج کنید. فرآیند شامل

در حال بارگذاری تصویر
استفاده از مدل از پیش آموزش دیده برای تشخیص یا طبقه بندی.
نتایج بی‌درنگ، از جمله برچسب‌ها و جعبه‌های مرزی برای اشیاء شناسایی‌شده را به دست آورید.

در اینجا مثالی از نحوه استنتاج روی یک تصویر با استفاده از Roboflow Inference آورده شده است:

import cv2
from inference_sdk import InferenceHTTPClient
import supervision as sv

# Load the example image
image = cv2.imread(“img/image_example.png”)

# Perform inference using Roboflow Inference
CLIENT = InferenceHTTPClient(
api_url=”https://detect.roboflow.com”,
api_key=”0V9NRqITldFn0MFxy9jb”, # Public API key for demonstration purposes
)
predictions = CLIENT.infer(image, model_id=”hard-hat-sample-hicg4/3″)

# Annotate the image with the detected objects
labels = [item[“class”] for item in predictions[“predictions”]] detections = sv.Detections.from_inference(predictions)

label_annotator = sv.LabelAnnotator()
box_annotator = sv.BoxAnnotator()

annotated_image = box_annotator.annotate(scene=image.copy(), detections=detections)
annotated_image = label_annotator.annotate(scene=annotated_image, detections=detections)

نمونه تصویر
تصویر مشروح شده

نمونه تصویر و تصویر مشروح. تصویر از Jsbco در Unsplash و حاشیه نویسی شده است
با استفاده از استنتاج Roboflow

این روش سریع، ساده و ایده آل برای کارهایی است که پردازش با سرعت بالا حیاتی نیست. اطلاعات بیشتر در مورد نحوه انجام استنتاج بر روی یک تصویر واحد را می توان در اینجا یافت مستندات استنتاج روبوفلو.

پخش جریانی ویدیو

برای برنامه های بلادرنگ، Roboflow از استقرار مدل ها در جریان های ویدئویی پشتیبانی می کند. این به ویژه برای موارد استفاده مانند نظارت، نظارت بر ترافیک، و تشخیص رویداد زنده مفید است. Roboflow هر فریم ویدیو را از طریق مدل پردازش می کند و از تجزیه و تحلیل بلادرنگ اطمینان حاصل می کند. مراحل مربوطه:

جریان ویدیوی خود را (مثلاً از فید دوربین) وصل کنید.
مدل انتخاب شده را روی هر فریم در زمان واقعی اعمال کنید.
تشخیص یا طبقه بندی اشیاء خروجی فریم به فریم.

در اینجا مثالی از نحوه استنتاج در یک جریان ویدیویی با استفاده از Roboflow InferencePipeline آورده شده است:

from inference import InferencePipeline

# Define a custom sink function to process the model predictions
def my_sink(result, video_frame):

# Initialize the InferencePipeline with the desired workflow
pipeline = InferencePipeline.init_with_workflow(
api_key=”API_KEY”,
workspace_name=”workspace-name”,
workflow_id=”workflow-id”,
video_reference=0,
on_prediction=my_sink
)
pipeline.start()
pipeline.join()

برای اطلاعات بیشتر در مورد نحوه استقرار مدل‌ها در جریان‌های ویدیویی، به بخش مراجعه کنید مستندات استقرار Roboflow.

استقرار ابر در مقابل لبه

انتخاب بین ابر و لبه به ماهیت برنامه شما بستگی دارد. هر کدام دارای مزایای مشخصی هستند که ممکن است بر تصمیم شما تأثیر بگذارد.

مزایای استفاده از Cloud Deployment

مقیاس پذیری: استقرارهای مبتنی بر ابر می‌توانند پردازش در مقیاس بزرگ را انجام دهند و برای برنامه‌هایی که نیاز به محاسبات سنگین دارند ایده‌آل هستند.

سهولت دسترسی: می‌توانید مدل‌ها را از هرجایی مستقر کرده و به آنها دسترسی داشته باشید و به‌روزرسانی‌ها را به راحتی منتشر کنید.

مزایای استفاده از Edge Deployment

کاهش تاخیر: اجرای مدل‌ها بر روی دستگاه‌های لبه تأخیر را به حداقل می‌رساند، که برای برنامه‌های بلادرنگ حیاتی است.

عملیات آفلاین: استقرار Edge به مدل ها اجازه می دهد در محیط هایی اجرا شوند که اتصال به اینترنت در دسترس نیست یا متناوب است.

ReductStore برای مدیریت کارآمد داده ها

ReductStore نقش مهمی در مدیریت حجم عظیم داده های تولید شده توسط مدل های بینایی کامپیوتری، به ویژه در برنامه های کاربردی بلادرنگ ایفا می کند.
این یک ذخیره‌سازی شی سری زمانی است که برای جریان‌های داده پیوسته طراحی شده است، و آن را برای ذخیره و مدیریت داده‌های تصویر همراه با برچسب‌های تولید شده توسط هوش مصنوعی بسیار کارآمد می‌کند.

ReductStore برای مدیریت کارآمد داده ها. تصویر توسط نویسنده

راه اندازی ReductStore

ایجاد یک docker-compose.yml فایل با پیکربندی زیر:

services:
reductstore:
image: reduct/store:latest
ports:
– “8383:8383”
volumes:
– data:/data
environment:
– RS_API_TOKEN=my-token
– RS_BUCKET_1_NAME=my-bucket-1
– RS_BUCKET_2_NAME=my-bucket-2

volumes:
data:
driver: local

سپس دستور زیر را برای راه اندازی ReductStore اجرا کنید:

docker compose up -d

با این کار ReductStore در پورت 8383 با توکن و نام سطل مشخص شده API شروع می شود.

کنسول وب ReductStore. منبع تصویر: ReductStore

ذخیره تصاویر با برچسب های هوش مصنوعی در لبه

یکی از چالش های کلیدی در محاسبات لبه، مدیریت مجموعه داده های بزرگ تولید شده توسط دوربین ها یا سایر دستگاه های تصویربرداری است. ReductStore این مورد را توسط

ذخیره سازی داده های تصویر با فرکانس بالا: به طور موثر ذخیره سازی جریان های پیوسته تصاویر گرفته شده در لبه را مدیریت می کند. ReductStore به طور قابل توجهی سریعتر از سایر پایگاه های داده سری زمانی برای رکوردهایی با بارهای باینری بزرگ است.
برچسب های تولید شده توسط هوش مصنوعی: ReductStore از ذخیره سازی ابرداده ها، مانند برچسب های اشیا، به طور مستقیم با سوابق تصویر پشتیبانی می کند، تجزیه و تحلیل آینده و بازیابی اطلاعات را ساده می کند.
مدیریت ذخیره سازی کارآمد: دستگاه های لبه اغلب ظرفیت ذخیره سازی محدودی دارند. ReductStore امکان تنظیم خط مشی FIFO (First In, First Out) را بر اساس حجم برای مدیریت کارآمد ذخیره سازی فراهم می کند.

import time
from reduct import Client, Bucket

async with Client(“http://127.0.0.1:8383″, api_token=”my-token”) as client:
bucket: Bucket = await client.create_bucket(“my-bucket-1”, exist_ok=True)
ts = time.time()
await bucket.write(
“roboflow”,
image_bytes,
ts,
labels=flat_predictions,
content_type=”text/plain”,
)

برای اطلاعات بیشتر در مورد ذخیره تصاویر با برچسب های هوش مصنوعی در لبه، به آدرس مراجعه کنید راهنمای جذب داده های ReductStore.

تکثیر انتخابی داده در ابر

در حالی که ذخیره سازی لبه برای پردازش با تأخیر کم حیاتی است، ذخیره سازی ابری مقیاس پذیری و پشتیبان گیری برای نگهداری طولانی مدت داده ها را فراهم می کند. ReductStore قابلیت های انتخابی تکرار داده ها را فراهم می کند که به کاربران اجازه می دهد

فقط داده های حیاتی را تکرار کنید: توسعه‌دهندگان می‌توانند به‌جای ارسال همه داده‌ها به ابر، رکوردهای خاص را به‌عنوان مهم برچسب‌گذاری کنند و فقط آن‌ها را تکرار کنند، و با تمرکز بر اطلاعات مهم، هزینه‌های ذخیره‌سازی ابری را به‌طور قابل‌توجهی کاهش دهند.
پایین نمونه داده های فرکانس بالا: ReductStore از نمونه برداری پایین از جریان های داده با فرکانس بالا پشتیبانی می کند و به کاربران امکان می دهد داده ها را بر اساس معیارهای خاص مانند

هر n رکورد (به عنوان مثال، هر 10 رکورد)
در فواصل زمانی خاص، مانند هر ثانیه ثانیه (مثلاً هر 5 ثانیه).

برای تنظیم Replication، می‌توانیم از کنسول وب ReductStore برای تعریف منبع و مقصد تکرار و همچنین قوانینی مانند فاصله تکرار و معیارهای فیلتر استفاده کنیم.

ReductStore Data Replication. منبع تصویر: ReductStore

برای اطلاعات بیشتر در مورد تکثیر انتخابی داده ها در ابر، به آدرس مراجعه کنید راهنمای تکرار ReductStore.

استعلام داده از ReductStore

هنگامی که داده های شما در ReductStore ذخیره می شوند، بازیابی آنها برای تجزیه و تحلیل یا پردازش بیشتر آسان است. می توانید بر اساس مهر زمانی استفاده شده در حین ذخیره سازی یا برای یک محدوده زمانی خاص، پرس و جو کنید و داده ها را بازیابی کنید.

ساده ترین راه برای بازیابی داده ها استفاده از ابزار خط فرمان است reduct-cli. در اینجا مثالی از نحوه کپی کردن داده ها از زمان شروع و صادر کردن آنها به فهرست محلی همراه با متادیتا آورده شده است:

reduct-cli alias add local -L http://localhost:8383 -t “my-token”
# Query data for a specific time range and export it to a local directory
reduct-cli cp local/my-bucket-1 ./export –start “2024-09-01T00:00:00Z” –with-meta –limit 100

این دستور داده ها را برای تمام رکوردهای موجود در آن واکشی می کند my-bucket-1 سطل از زمان شروع مشخص شده و آن را به دایرکتوری محلی صادر می کند. را –with-meta پرچم شامل فراداده (برچسب) مرتبط با رکوردها و –limit flag حداکثر تعداد رکوردها را برای واکشی مشخص می کند.

برای دسترسی برنامه‌ریزی‌شده، در اینجا نمونه‌ای از نحوه پرس‌وجو کردن داده‌ها از ReductStore با استفاده از کلاینت پایتون برای یک زمان مشخص است:

async with Client(“http://127.0.0.1:8383″, api_token=”my-token”) as client:
bucket: Bucket = await client.get_bucket(“my-bucket-1”)

async with bucket.read(“roboflow”, ts) as record:
content = await record.read_all()
image_reconstructed = bytes_to_image(content)
label_reconstructed = unflatten_predictions(record.labels)

assert np.array_equal(image, image_reconstructed)

در این مثال، bucket.read روش داده ها را با استفاده از همان نام ورودی بازیابی می کند (“roboflow”) و مهر زمانی که در طول فرآیند ذخیره سازی استفاده شده است. تصویر ذخیره‌شده را می‌توان از روی بایت‌ها بازسازی کرد و برچسب‌های تولید شده توسط هوش مصنوعی را می‌توان از ابرداده‌ها بازیابی کرد.

همانطور که در بالا ذکر شد، ReductStore از داده های پرس و جو در یک بازه زمانی پشتیبانی می کند، بنابراین می توانید در صورت نیاز، داده ها را بین مهرهای زمانی خاص بازیابی کنید. برای جزئیات بیشتر در مورد گزینه های پرس و جو، لطفا به مراجعه کنید اسناد ReductStore.

نتیجه گیری

ترکیب Roboflow و ReductStore یک راه حل جامع برای استقرار و مدیریت موثر مدل های بینایی کامپیوتری ارائه می دهد. Roboflow فرآیند توسعه و استقرار مدل را ساده می کند و آن را برای توسعه دهندگان و دانشمندان داده در دسترس قرار می دهد، در حالی که ReductStore تضمین می کند که حجم عظیمی از داده های تولید شده توسط این مدل ها به طور موثر مدیریت می شوند، به خصوص در محیط های بلادرنگ مانند جریان های ویدیویی.

این ابزارها چه در فضای ابری و چه در لبه مستقر شوند، پیچیدگی عملیاتی را کاهش می‌دهند، هزینه‌ها را کاهش می‌دهند و انعطاف‌پذیری را برای مقیاس‌بندی برنامه‌های بینایی رایانه فراهم می‌کنند. همانطور که بینش کامپیوتری به تکامل خود ادامه می دهد، استفاده از این پلتفرم ها برای ایجاد راه حل های کارآمد و مقیاس پذیر ضروری خواهد بود.

سوالات متداول (سؤالات متداول)

آیا ReductStore راه حل ابری ارائه می دهد؟

بله، ReductStore در حال حاضر یک راه حل ابری موجود در Azure ارائه می دهد. شما به راحتی می توانید ReductStore را روی یک ماشین مجازی Azure مستقر کنید تا جریان داده های خود را با مقیاس پذیری و انعطاف پذیری مدیریت کنید. لطفا به راهنمای راه اندازی Azure VM برای دستورالعمل های گام به گام

مزایای استفاده از ReductStore با Roboflow برای وظایف بینایی کامپیوتر چیست؟

ReductStore با ارائه ذخیره سازی و مدیریت کارآمد جریان های داده بزرگ و با فرکانس بالا، مانند توالی های ویدیویی یا تصویری، Roboflow را تکمیل می کند، و مدیریت داده های تولید شده توسط مدل های بینایی کامپیوتری را آسان تر می کند.

چگونه ReductStore به کاهش هزینه های ذخیره سازی ابری برای داده های با فرکانس بالا کمک می کند؟

ReductStore تکرار و نمونه برداری انتخابی را فعال می کند، به این معنی که می توانید تنها داده های مهم را تکرار کنید یا فرکانس داده های ارسال شده به ابر را کاهش دهید و هزینه های ذخیره سازی و انتقال را به حداقل برسانید.

نمونه برداری پایین در ReductStore چگونه کار می کند و چه زمانی باید از آن استفاده کرد؟

نمونه برداری با انتخاب رکوردهای خاص بر اساس معیارهایی مانند هر n رکورد یا در فواصل زمانی خاص، مقدار داده های تکرار شده در ابر یا مکان ذخیره سازی دیگر را کاهش می دهد. باید برای کاهش هزینه های ذخیره سازی ابری و تمرکز بر داده های حیاتی استفاده شود.

گزینه های استقرار مدل های بینایی کامپیوتری در Roboflow چیست؟

Roboflow گزینه‌های استقرار انعطاف‌پذیری را ارائه می‌دهد که به مدل‌ها اجازه می‌دهد بسته به نیازهای برنامه (به عنوان مثال، مقیاس‌پذیری در مقابل پردازش تأخیر کم) در فضای ابری، روی دستگاه‌های لبه یا حتی آفلاین اجرا شوند.

بینایی کامپیوتر با خودکارسازی تصمیم‌گیری بر اساس داده‌های بصری، صنایع را متحول می‌کند.
از تشخیص چهره گرفته تا رانندگی خودکار، نیاز به راه حل های بینایی کامپیوتری کارآمد به سرعت در حال افزایش است.
این مقاله به بررسی چگونگی آن می پردازد روبوفلو ترکیب شده با ReductStore، یک ذخیره شی سری زمانی که برای مدیریت جریان های داده پیوسته بهینه شده است، می تواند برنامه های بینایی رایانه را بهبود بخشد. ReductStore برای مدیریت کارآمد داده‌های سری زمانی با فرکانس بالا، مانند جریان‌های ویدیویی، طراحی شده است، که آن را برای ذخیره و بازیابی مجموعه‌های داده بزرگ تولید شده توسط وظایف بینایی رایانه مناسب می‌کند.

در این مقاله به موارد زیر خواهیم پرداخت:

  • چالش های استقرار مدل چشم انداز رایانه ای سنتی
  • Roboflow چیست؟
  • مزایای استفاده از Roboflow Inference
  • انتخاب مدل بینایی کامپیوتری مناسب
  • روش های استقرار
  • استقرار ابر در مقابل لبه
  • ReductStore برای مدیریت کارآمد داده ها

در پایان این مقاله، درک روشنی از نحوه استفاده از Roboflow و ReductStore برای ساخت و استقرار مدل‌های بینایی کامپیوتری برای برنامه‌های بلادرنگ در دستگاه‌های لبه خواهید داشت. می توانید نمونه کد کامل این مقاله را در GitHub در زیر پیدا کنید reductstore/reduct-roboflow-example مخزن

فهرست مطالب

چالش های استقرار مدل چشم انداز رایانه ای سنتی

چالش های متعددی برای استقرار مدل های بینایی کامپیوتری وجود دارد که می تواند بر کارایی و مقیاس پذیری پروژه ها تأثیر بگذارد. برخی از مسائل کلیدی هستند

  1. الزامات زیرساختی پیچیده: مدل های بینایی کامپیوتری سنتی اغلب به یک زیرساخت محاسباتی قدرتمند نیاز دارند. این شامل پردازنده‌های گرافیکی پیشرفته، سخت‌افزار تخصصی و تنظیمات نرم‌افزاری بهینه‌شده است. برای بسیاری از سازمان ها، راه اندازی این زیرساخت می تواند زمان بر و پرهزینه باشد.
  2. هزینه محاسباتی و تأخیر بالا: اجرای مدل ها، به ویژه برای کاربردهای بلادرنگ، به قدرت محاسباتی قابل توجهی نیاز دارد. در نتیجه، استنباط بر روی تصاویر با وضوح بالا یا جریان های ویدیویی می تواند منجر به تأخیر بالا شود که برای برنامه های حساس به زمان مانند وسایل نقلیه خودران یا نظارت در زمان واقعی مشکل ساز است.
  3. مشکل در مدیریت مجموعه داده های بزرگ: مدل های بینایی کامپیوتری اغلب به مقادیر زیادی داده برچسب دار برای آموزش نیاز دارند. مدیریت این مجموعه داده ها، به ویژه در محیط های بلادرنگ یا در مدت زمان طولانی، موانع بیشتری برای ذخیره سازی، بازیابی و پردازش داده ها ایجاد می کند.

Roboflow چیست؟

Roboflow یک پلتفرم جامع است که برای ساده سازی فرآیند ساخت، آموزش و استقرار مدل های بینایی کامپیوتری پیشرفته طراحی شده است.
این ابزارها را فراهم می کند که به توسعه دهندگان و دانشمندان داده کمک می کند تا کل گردش کار، از ایجاد مجموعه داده تا استنتاج مدل را ساده کنند.


داشبورد Roboflow. منبع تصویر: Roboflow

برخی از ویژگی های کلیدی Roboflow عبارتند از

  1. مدیریت مجموعه داده: Roboflow به کاربران اجازه می دهد تا به راحتی مجموعه داده های بزرگ را آپلود، سازماندهی و پیش پردازش کنند. این برنامه از فرمت های تصویری متعدد پشتیبانی می کند و ابزارهایی را برای تقویت داده ها، برچسب گذاری و تبدیل تصویر فراهم می کند، که تهیه داده ها را برای آموزش آسان می کند.
  2. آموزش مدل و بهینه سازی: با Roboflow، کاربران می توانند از بین طیف گسترده ای از مدل های از پیش آموزش دیده انتخاب کنند یا مدل های خود را از ابتدا آموزش دهند. این پلتفرم ابزارهایی را برای بهینه سازی مدل ها برای محیط های سخت افزاری مختلف، چه در فضای ابری و چه در لبه، ارائه می دهد.
  3. استقرار مدل: Roboflow استقرار مدل‌ها را در محیط‌های مختلف مانند روی دستگاه، لبه یا سیستم‌های مبتنی بر ابر آسان می‌کند. رابط بصری آن به کاربران اجازه می دهد تا مدل های بینایی کامپیوتری را بدون کدگذاری یا تنظیمات گسترده در برنامه ها ادغام کنند.

محیط کاربری آسان Roboflow مانع ورود پروژه‌های بینایی کامپیوتری را کاهش می‌دهد، اما به مدیریت جریان‌های داده بزرگ و پیوسته تولید شده توسط این مدل‌ها نمی‌پردازد.

این همان جایی است که ReductStore در آن جای می‌گیرد و یک ذخیره‌سازی شی سری زمانی تخصصی برای پردازش داده‌های بدون ساختار و فرکانس بالا مانند فیدهای ویدیویی و توالی‌های تصویر فراهم می‌کند. بعداً در این وبلاگ در مورد چگونگی تکمیل این فرآیند ReductStore بیشتر صحبت خواهیم کرد.

مزایای استفاده از Roboflow Inference

Roboflow Inference یک روش قوی و کارآمد برای استقرار مدل‌های بینایی کامپیوتری ارائه می‌کند.
این طراحی شده است تا فرآیند استقرار را با حفظ انعطاف پذیری و عملکرد ساده کند. در زیر برخی از مزایای کلیدی استفاده از Roboflow Inference آورده شده است.

مقرون به صرفه بودن

Roboflow Inference نیاز به زیرساخت های گران قیمت را با ارائه راه حل های استقرار بهینه و مقیاس پذیر از بین می برد. این به توسعه دهندگان اجازه می دهد تا مدل ها را به طور موثر بر روی سخت افزار کم هزینه یا در فضای ابری اجرا کنند و هزینه مقیاس گذاری و حفظ محیط های سفارشی را به حداقل برسانند.

حداقل نیازهای راه اندازی

یکی از نکات مهم در مورد استنتاج Roboflow سهولت استقرار آن است. این پلتفرم از طیف وسیعی از دستگاه‌ها، از پردازنده‌های گرافیکی ابری گرفته تا دستگاه‌های لبه سبک وزن، با حداقل نیازهای پیکربندی پشتیبانی می‌کند. این امکان استقرار سریع و بدون پیکربندی پیچیده را فراهم می کند.

قابلیت های آفلاین

برای برنامه‌های محاسباتی لبه‌ای که اتصال به اینترنت محدود یا غیرقابل اعتماد است، Roboflow Inference از استقرار آفلاین پشتیبانی می‌کند. این ویژگی به ویژه در مناطقی مانند وسایل نقلیه خودران، اینترنت اشیاء صنعتی یا نظارت از راه دور، که در آن پردازش قابل اعتماد و با تأخیر کم حیاتی است، ارزشمند است.

انتخاب مدل بینایی کامپیوتری مناسب

انتخاب مدل مناسب برای برنامه بینایی کامپیوتر شما برای دستیابی به بهترین عملکرد بسیار مهم است. Roboflow این فرآیند را با ارائه طیف گسترده ای از مدل ها که هر کدام برای وظایف و محیط های مختلف مناسب هستند، ساده می کند.

شناخت جهان روبوفلو

Roboflow دسترسی به کتابخانه گسترده ای از مدل های از پیش آموزش دیده را فراهم می کند که معمولاً به عنوان Roboflow Universe شناخته می شود.
این کتابخانه وظایف مختلفی مانند تشخیص اشیا، طبقه بندی تصویر و تقسیم بندی را پوشش می دهد.
کاربران می‌توانند مستقیماً از این مدل‌ها استفاده کنند یا آن‌ها را بر اساس مجموعه داده‌های خاص خود تنظیم کنند.

جهان روبوفلو

جهان روبوفلو منبع تصویر: Roboflow
کیهان

معیارهای انتخاب مدل

هنگام انتخاب مدل، فاکتورهای زیر را در نظر بگیرید

  1. نوع وظیفه: تعیین کنید که آیا پروژه شما شامل تشخیص شی، طبقه بندی تصویر یا تقسیم بندی تصویر است. این به طور قابل توجهی بر نوع مدل انتخابی شما تأثیر می گذارد.
  2. دقت مدل: مدلی را انتخاب کنید که با الزامات دقت برنامه شما مطابقت داشته باشد. بسته به کار، معیارهای مختلفی مانند mAP (میانگین دقت متوسط) برای تشخیص شی یا mIoU (متوسط ​​تقاطع روی اتحادیه) برای تقسیم‌بندی وجود دارد که می‌تواند به ارزیابی عملکرد مدل کمک کند.
  3. محدودیت های سخت افزاری: مطمئن شوید مدلی که انتخاب می کنید با سخت افزار شما سازگار است. برای مثال، مدل‌های کوچک‌تر برای دستگاه‌های لبه‌ای با منابع محدود مناسب هستند، در حالی که مدل‌های بزرگ‌تر ممکن است به پردازنده‌های گرافیکی قدرتمندتری نیاز داشته باشند.
  4. الزامات تاخیر: مدل‌های با تأخیر کم برای کاربردهای بلادرنگ مانند نظارت تصویری یا سیستم‌های مستقل ضروری هستند. در بینایی کامپیوتر، GFLOP (عملیات نقطه شناور گیگا) به اندازه گیری پیچیدگی محاسباتی یک مدل کمک می کند. GFLOPهای پایین اغلب به معنای زمان پردازش سریعتر است، اما ممکن است به قیمت دقت تمام شود.

یک رویکرد مفید، مرور وضعیت مدل‌های هنری در آن است اوراق با کد. این به شما ایده ای از عملکرد مدل های مختلف در کارهای مختلف می دهد.

تشخیص شی در COCO

تشخیص شی در COCO منبع تصویر: مقالات با
کد

مرز پارتو بهترین مبادله بین دو هدف رقیب، مانند دقت و هزینه محاسباتی (به عنوان مثال، GFLOP) را نشان می دهد. مدل‌های موجود در مرز پارتو کارآمدترین هستند، به این معنی که اگر می‌خواهید یک هدف را بهبود ببخشید (مانند دقت)، باید هزینه‌های بالاتری را در دیگری بپذیرید (مانند محاسبات بیشتر).

با تمام مدل‌های موجود، می‌توانید یکی از بهترین مدل‌ها را انتخاب کنید. گاهی اوقات بهتر است مدلی را انتخاب کنید که مدت طولانی تری وجود داشته باشد و برای سهولت استفاده و قابلیت اطمینان توسط جامعه آزمایش شده باشد.

کتابخانه مدل Roboflow به گونه ای سازماندهی شده است که به شما کمک می کند تا به راحتی مدل ها را بر اساس این معاوضه ها مرور و انتخاب کنید.

انتخاب مدل Roboflow

مدل نمونه کلاه سخت. منبع تصویر: Roboflow
کیهان

Roboflow گردش کار برای تقسیم و تسخیر

به خصوص در بینایی کامپیوتر، تقسیم وظایف پیچیده به مراحل کوچکتر می تواند به طور قابل توجهی دقت و کارایی را بهبود بخشد.

به عنوان مثال، تشخیص ارقام در پلاک ها را می توان به دو کار تقسیم کرد: یک مدل پلاک ها را شناسایی و بومی سازی می کند، در حالی که مدل دیگر بر تشخیص ارقام تمرکز می کند. این رویکرد خط لوله به هر مدل اجازه می دهد تا تخصصی شود و در نتیجه عملکرد بهتری داشته باشد. در مقابل، استفاده از یک مدل واحد برای انجام هر دو کار به طور همزمان چالش‌هایی مانند برخورد با نورهای متنوع، زوایای دوربین و طراحی‌های مختلف صفحه را به همراه دارد که منجر به کاهش دقت و فرآیند توسعه پیچیده‌تر می‌شود.

مزایای رویکرد خط لوله عبارتند از:

  • دقت بهبود یافته زیرا هر مدل متغیرهای کمتری را کنترل می کند.
  • توسعه سریعتر با کار بر روی مدل ها به صورت موازی.
  • اشکال زدایی آسان تر با اجزای ایزوله.
  • مقیاس پذیری از آنجایی که مدل های جداگانه می توانند به طور مستقل به روز شوند.
  • قابلیت استفاده مجدد از گردش کار برای سایر وظایف یا پروژه ها.

Roboflow Workflows

Roboflow Workflows. منبع تصویر: Roboflow

در گردش‌های کاری Roboflow، می‌توانید مجموعه‌ای از مدل‌ها یا مراحل را برای پردازش تصاویر تعریف کنید، مانند تغییر اندازه، بزرگ‌نمایی یا تقسیم آن‌ها به قطعات کوچک‌تر. این به شما امکان می دهد خطوط لوله پیچیده ای ایجاد کنید که می توانند وظایف مختلفی را به طور موثر انجام دهند.

برای مثال، می‌توانید تصاویر را به قطعات کوچک‌تر تقسیم کنید و نتایج را برای پیش‌بینی دقیق‌تر به هم بپیچید:

با گردش کار تقسیم شدهبدون تقسیم گردش کار
نتیجه با تقسیم گردش کارنتیجه بدون تقسیم گردش کار

نمونه تصویر و تصویر مشروح. تصویر از Viktor Forgacs در Unsplash و
با استفاده از Roboflow Inference حاشیه نویسی شده است.

روش های استقرار

Roboflow Inference چندین روش استقرار را ارائه می دهد که آن را برای انواع مختلف برنامه ها انعطاف پذیر می کند.
فرقی نمی‌کند با تجزیه و تحلیل تصویر تکی، پخش جریانی ویدیوی بی‌درنگ، یا سناریوهای آفلاین کار می‌کنید، Roboflow می‌تواند این موارد استفاده را به طور موثر مدیریت کند.

استقرار روی یک تصویر واحد

برای کاربردهای اساسی مانند تشخیص شی یا طبقه‌بندی یک تصویر، Roboflow به شما امکان می‌دهد یک تصویر را آپلود کنید و فوراً با استفاده از یک مدل انتخاب شده استنتاج کنید. فرآیند شامل

  1. در حال بارگذاری تصویر
  2. استفاده از مدل از پیش آموزش دیده برای تشخیص یا طبقه بندی.
  3. نتایج بی‌درنگ، از جمله برچسب‌ها و جعبه‌های مرزی برای اشیاء شناسایی‌شده را به دست آورید.

در اینجا مثالی از نحوه استنتاج روی یک تصویر با استفاده از Roboflow Inference آورده شده است:

import cv2
from inference_sdk import InferenceHTTPClient
import supervision as sv

# Load the example image
image = cv2.imread("img/image_example.png")

# Perform inference using Roboflow Inference
CLIENT = InferenceHTTPClient(
    api_url="https://detect.roboflow.com",
    api_key="0V9NRqITldFn0MFxy9jb",  # Public API key for demonstration purposes
)
predictions = CLIENT.infer(image, model_id="hard-hat-sample-hicg4/3")

# Annotate the image with the detected objects
labels = [item["class"] for item in predictions["predictions"]]
detections = sv.Detections.from_inference(predictions)

label_annotator = sv.LabelAnnotator()
box_annotator = sv.BoxAnnotator()

annotated_image = box_annotator.annotate(scene=image.copy(), detections=detections)
annotated_image = label_annotator.annotate(scene=annotated_image, detections=detections)
نمونه تصویرتصویر مشروح شده
نمونه تصویرتصویر مشروح شده

نمونه تصویر و تصویر مشروح. تصویر از Jsbco در Unsplash و حاشیه نویسی شده است
با استفاده از استنتاج Roboflow

این روش سریع، ساده و ایده آل برای کارهایی است که پردازش با سرعت بالا حیاتی نیست. اطلاعات بیشتر در مورد نحوه انجام استنتاج بر روی یک تصویر واحد را می توان در اینجا یافت مستندات استنتاج روبوفلو.

پخش جریانی ویدیو

برای برنامه های بلادرنگ، Roboflow از استقرار مدل ها در جریان های ویدئویی پشتیبانی می کند. این به ویژه برای موارد استفاده مانند نظارت، نظارت بر ترافیک، و تشخیص رویداد زنده مفید است. Roboflow هر فریم ویدیو را از طریق مدل پردازش می کند و از تجزیه و تحلیل بلادرنگ اطمینان حاصل می کند. مراحل مربوطه:

  1. جریان ویدیوی خود را (مثلاً از فید دوربین) وصل کنید.
  2. مدل انتخاب شده را روی هر فریم در زمان واقعی اعمال کنید.
  3. تشخیص یا طبقه بندی اشیاء خروجی فریم به فریم.

در اینجا مثالی از نحوه استنتاج در یک جریان ویدیویی با استفاده از Roboflow InferencePipeline آورده شده است:

from inference import InferencePipeline

# Define a custom sink function to process the model predictions
def my_sink(result, video_frame):
    ...

# Initialize the InferencePipeline with the desired workflow
pipeline = InferencePipeline.init_with_workflow(
    api_key="API_KEY",
    workspace_name="workspace-name",
    workflow_id="workflow-id",
    video_reference=0,
    on_prediction=my_sink
)
pipeline.start()
pipeline.join()

برای اطلاعات بیشتر در مورد نحوه استقرار مدل‌ها در جریان‌های ویدیویی، به بخش مراجعه کنید مستندات استقرار Roboflow.

استقرار ابر در مقابل لبه

انتخاب بین ابر و لبه به ماهیت برنامه شما بستگی دارد. هر کدام دارای مزایای مشخصی هستند که ممکن است بر تصمیم شما تأثیر بگذارد.

مزایای استفاده از Cloud Deployment

  • مقیاس پذیری: استقرارهای مبتنی بر ابر می‌توانند پردازش در مقیاس بزرگ را انجام دهند و برای برنامه‌هایی که نیاز به محاسبات سنگین دارند ایده‌آل هستند.
  • سهولت دسترسی: می‌توانید مدل‌ها را از هرجایی مستقر کرده و به آنها دسترسی داشته باشید و به‌روزرسانی‌ها را به راحتی منتشر کنید.

مزایای استفاده از Edge Deployment

  • کاهش تاخیر: اجرای مدل‌ها بر روی دستگاه‌های لبه تأخیر را به حداقل می‌رساند، که برای برنامه‌های بلادرنگ حیاتی است.
  • عملیات آفلاین: استقرار Edge به مدل ها اجازه می دهد در محیط هایی اجرا شوند که اتصال به اینترنت در دسترس نیست یا متناوب است.

ReductStore برای مدیریت کارآمد داده ها

ReductStore نقش مهمی در مدیریت حجم عظیم داده های تولید شده توسط مدل های بینایی کامپیوتری، به ویژه در برنامه های کاربردی بلادرنگ ایفا می کند.
این یک ذخیره‌سازی شی سری زمانی است که برای جریان‌های داده پیوسته طراحی شده است، و آن را برای ذخیره و مدیریت داده‌های تصویر همراه با برچسب‌های تولید شده توسط هوش مصنوعی بسیار کارآمد می‌کند.

ReductStore برای مدیریت کارآمد داده ها

ReductStore برای مدیریت کارآمد داده ها. تصویر توسط نویسنده

راه اندازی ReductStore

ایجاد یک docker-compose.yml فایل با پیکربندی زیر:

services:
  reductstore:
    image: reduct/store:latest
    ports:
      - "8383:8383"
    volumes:
      - data:/data
    environment:
      - RS_API_TOKEN=my-token
      - RS_BUCKET_1_NAME=my-bucket-1
      - RS_BUCKET_2_NAME=my-bucket-2

volumes:
  data:
    driver: local

سپس دستور زیر را برای راه اندازی ReductStore اجرا کنید:

docker compose up -d

با این کار ReductStore در پورت 8383 با توکن و نام سطل مشخص شده API شروع می شود.

کنسول وب ReductStore

کنسول وب ReductStore. منبع تصویر: ReductStore

ذخیره تصاویر با برچسب های هوش مصنوعی در لبه

یکی از چالش های کلیدی در محاسبات لبه، مدیریت مجموعه داده های بزرگ تولید شده توسط دوربین ها یا سایر دستگاه های تصویربرداری است. ReductStore این مورد را توسط

  1. ذخیره سازی داده های تصویر با فرکانس بالا: به طور موثر ذخیره سازی جریان های پیوسته تصاویر گرفته شده در لبه را مدیریت می کند. ReductStore به طور قابل توجهی سریعتر از سایر پایگاه های داده سری زمانی برای رکوردهایی با بارهای باینری بزرگ است.
  2. برچسب های تولید شده توسط هوش مصنوعی: ReductStore از ذخیره سازی ابرداده ها، مانند برچسب های اشیا، به طور مستقیم با سوابق تصویر پشتیبانی می کند، تجزیه و تحلیل آینده و بازیابی اطلاعات را ساده می کند.
  3. مدیریت ذخیره سازی کارآمد: دستگاه های لبه اغلب ظرفیت ذخیره سازی محدودی دارند. ReductStore امکان تنظیم خط مشی FIFO (First In, First Out) را بر اساس حجم برای مدیریت کارآمد ذخیره سازی فراهم می کند.
import time
from reduct import Client, Bucket

async with Client("http://127.0.0.1:8383", api_token="my-token") as client:
    bucket: Bucket = await client.create_bucket("my-bucket-1", exist_ok=True)
    ts = time.time()
    await bucket.write(
        "roboflow",
        image_bytes,
        ts,
        labels=flat_predictions,
        content_type="text/plain",
    )

برای اطلاعات بیشتر در مورد ذخیره تصاویر با برچسب های هوش مصنوعی در لبه، به آدرس مراجعه کنید راهنمای جذب داده های ReductStore.

تکثیر انتخابی داده در ابر

در حالی که ذخیره سازی لبه برای پردازش با تأخیر کم حیاتی است، ذخیره سازی ابری مقیاس پذیری و پشتیبان گیری برای نگهداری طولانی مدت داده ها را فراهم می کند. ReductStore قابلیت های انتخابی تکرار داده ها را فراهم می کند که به کاربران اجازه می دهد

  1. فقط داده های حیاتی را تکرار کنید: توسعه‌دهندگان می‌توانند به‌جای ارسال همه داده‌ها به ابر، رکوردهای خاص را به‌عنوان مهم برچسب‌گذاری کنند و فقط آن‌ها را تکرار کنند، و با تمرکز بر اطلاعات مهم، هزینه‌های ذخیره‌سازی ابری را به‌طور قابل‌توجهی کاهش دهند.
  2. پایین نمونه داده های فرکانس بالا: ReductStore از نمونه برداری پایین از جریان های داده با فرکانس بالا پشتیبانی می کند و به کاربران امکان می دهد داده ها را بر اساس معیارهای خاص مانند
    • هر n رکورد (به عنوان مثال، هر 10 رکورد)
    • در فواصل زمانی خاص، مانند هر ثانیه ثانیه (مثلاً هر 5 ثانیه).

برای تنظیم Replication، می‌توانیم از کنسول وب ReductStore برای تعریف منبع و مقصد تکرار و همچنین قوانینی مانند فاصله تکرار و معیارهای فیلتر استفاده کنیم.

ReductStore Data Replication

ReductStore Data Replication. منبع تصویر: ReductStore

برای اطلاعات بیشتر در مورد تکثیر انتخابی داده ها در ابر، به آدرس مراجعه کنید راهنمای تکرار ReductStore.

استعلام داده از ReductStore

هنگامی که داده های شما در ReductStore ذخیره می شوند، بازیابی آنها برای تجزیه و تحلیل یا پردازش بیشتر آسان است. می توانید بر اساس مهر زمانی استفاده شده در حین ذخیره سازی یا برای یک محدوده زمانی خاص، پرس و جو کنید و داده ها را بازیابی کنید.

ساده ترین راه برای بازیابی داده ها استفاده از ابزار خط فرمان است reduct-cli. در اینجا مثالی از نحوه کپی کردن داده ها از زمان شروع و صادر کردن آنها به فهرست محلی همراه با متادیتا آورده شده است:

reduct-cli alias add local -L http://localhost:8383 -t "my-token"
# Query data for a specific time range and export it to a local directory
reduct-cli cp local/my-bucket-1 ./export --start "2024-09-01T00:00:00Z" --with-meta --limit 100

این دستور داده ها را برای تمام رکوردهای موجود در آن واکشی می کند my-bucket-1 سطل از زمان شروع مشخص شده و آن را به دایرکتوری محلی صادر می کند. را --with-meta پرچم شامل فراداده (برچسب) مرتبط با رکوردها و --limit flag حداکثر تعداد رکوردها را برای واکشی مشخص می کند.

برای دسترسی برنامه‌ریزی‌شده، در اینجا نمونه‌ای از نحوه پرس‌وجو کردن داده‌ها از ReductStore با استفاده از کلاینت پایتون برای یک زمان مشخص است:

async with Client("http://127.0.0.1:8383", api_token="my-token") as client:
    bucket: Bucket = await client.get_bucket("my-bucket-1")

    async with bucket.read("roboflow", ts) as record:
        content = await record.read_all()
        image_reconstructed = bytes_to_image(content)
        label_reconstructed = unflatten_predictions(record.labels)

        assert np.array_equal(image, image_reconstructed)

در این مثال، bucket.read روش داده ها را با استفاده از همان نام ورودی بازیابی می کند ("roboflow") و مهر زمانی که در طول فرآیند ذخیره سازی استفاده شده است. تصویر ذخیره‌شده را می‌توان از روی بایت‌ها بازسازی کرد و برچسب‌های تولید شده توسط هوش مصنوعی را می‌توان از ابرداده‌ها بازیابی کرد.

همانطور که در بالا ذکر شد، ReductStore از داده های پرس و جو در یک بازه زمانی پشتیبانی می کند، بنابراین می توانید در صورت نیاز، داده ها را بین مهرهای زمانی خاص بازیابی کنید. برای جزئیات بیشتر در مورد گزینه های پرس و جو، لطفا به مراجعه کنید اسناد ReductStore.

نتیجه گیری

ترکیب Roboflow و ReductStore یک راه حل جامع برای استقرار و مدیریت موثر مدل های بینایی کامپیوتری ارائه می دهد. Roboflow فرآیند توسعه و استقرار مدل را ساده می کند و آن را برای توسعه دهندگان و دانشمندان داده در دسترس قرار می دهد، در حالی که ReductStore تضمین می کند که حجم عظیمی از داده های تولید شده توسط این مدل ها به طور موثر مدیریت می شوند، به خصوص در محیط های بلادرنگ مانند جریان های ویدیویی.

این ابزارها چه در فضای ابری و چه در لبه مستقر شوند، پیچیدگی عملیاتی را کاهش می‌دهند، هزینه‌ها را کاهش می‌دهند و انعطاف‌پذیری را برای مقیاس‌بندی برنامه‌های بینایی رایانه فراهم می‌کنند. همانطور که بینش کامپیوتری به تکامل خود ادامه می دهد، استفاده از این پلتفرم ها برای ایجاد راه حل های کارآمد و مقیاس پذیر ضروری خواهد بود.

سوالات متداول (سؤالات متداول)

آیا ReductStore راه حل ابری ارائه می دهد؟

بله، ReductStore در حال حاضر یک راه حل ابری موجود در Azure ارائه می دهد. شما به راحتی می توانید ReductStore را روی یک ماشین مجازی Azure مستقر کنید تا جریان داده های خود را با مقیاس پذیری و انعطاف پذیری مدیریت کنید. لطفا به راهنمای راه اندازی Azure VM برای دستورالعمل های گام به گام

مزایای استفاده از ReductStore با Roboflow برای وظایف بینایی کامپیوتر چیست؟

ReductStore با ارائه ذخیره سازی و مدیریت کارآمد جریان های داده بزرگ و با فرکانس بالا، مانند توالی های ویدیویی یا تصویری، Roboflow را تکمیل می کند، و مدیریت داده های تولید شده توسط مدل های بینایی کامپیوتری را آسان تر می کند.

چگونه ReductStore به کاهش هزینه های ذخیره سازی ابری برای داده های با فرکانس بالا کمک می کند؟

ReductStore تکرار و نمونه برداری انتخابی را فعال می کند، به این معنی که می توانید تنها داده های مهم را تکرار کنید یا فرکانس داده های ارسال شده به ابر را کاهش دهید و هزینه های ذخیره سازی و انتقال را به حداقل برسانید.

نمونه برداری پایین در ReductStore چگونه کار می کند و چه زمانی باید از آن استفاده کرد؟

نمونه برداری با انتخاب رکوردهای خاص بر اساس معیارهایی مانند هر n رکورد یا در فواصل زمانی خاص، مقدار داده های تکرار شده در ابر یا مکان ذخیره سازی دیگر را کاهش می دهد. باید برای کاهش هزینه های ذخیره سازی ابری و تمرکز بر داده های حیاتی استفاده شود.

گزینه های استقرار مدل های بینایی کامپیوتری در Roboflow چیست؟

Roboflow گزینه‌های استقرار انعطاف‌پذیری را ارائه می‌دهد که به مدل‌ها اجازه می‌دهد بسته به نیازهای برنامه (به عنوان مثال، مقیاس‌پذیری در مقابل پردازش تأخیر کم) در فضای ابری، روی دستگاه‌های لبه یا حتی آفلاین اجرا شوند.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا