بینایی ماشین چیست؟ راهنمای کامل Computer Vision با مثال عملی

بینایی ماشین یا Computer Vision شاخه‌ای از هوش مصنوعی است که به کامپیوترها امکان می‌دهد تصاویر و ویدیوها را تحلیل و تفسیر کنند. در این راهنمای جامع با پردازش تصویر، تشخیص اشیا، تقسیم‌بندی، OCR، ابزارهای متن‌باز و ساخت یک برنامه تحلیل تصویر با پایتون و API درواره آشنا می‌شوید.

Share
بینایی ماشین و تشخیص اشیا در تصویر با هوش مصنوعی

بینایی ماشین یا Computer Vision فناوری‌ای است که به کامپیوترها کمک می‌کند اطلاعات موجود در تصویر و ویدیو را پردازش و تفسیر کنند.

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

بینایی ماشین در کاربردهای مختلفی حضور دارد:

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

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

در این مقاله ابتدا مفاهیم Computer Vision را بررسی می‌کنیم، سپس یک برنامه تشخیص اشیا با YOLO می‌سازیم و در پایان، تحلیل تصویر با API درواره را آموزش می‌دهیم.

بینایی ماشین یا Computer Vision چیست؟

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

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

IBM بینایی ماشین را شاخه‌ای از هوش مصنوعی تعریف می‌کند که به ماشین‌ها توانایی پردازش، تحلیل و تفسیر ورودی‌های بصری را می‌دهد. IBM: What Is Computer Vision?

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

مدل بینایی ماشین باید از این اعداد به مفاهیمی مانند موارد زیر برسد:

  • خودرو
  • عابر پیاده
  • تابلو
  • خیابان
  • موقعیت هر شیء
  • ارتباط میان اشیا
  • رویداد در حال وقوع

تفاوت بینایی ماشین و پردازش تصویر چیست؟

پردازش تصویر و بینایی ماشین با یکدیگر مرتبط‌اند، اما هدف یکسانی ندارند.

پردازش تصویر

در Image Processing ورودی و خروجی معمولاً تصویر هستند.

نمونه‌ها:

  • تغییر اندازه تصویر
  • تنظیم روشنایی
  • افزایش کنتراست
  • حذف نویز
  • تبدیل تصویر رنگی به خاکستری
  • چرخاندن تصویر
  • تشخیص لبه
  • فشرده‌سازی تصویر

بینایی ماشین

در Computer Vision هدف استخراج مفهوم یا اطلاعات از تصویر است.

نمونه‌ها:

  • تشخیص نوع محصول
  • پیدا کردن خودروها
  • شمارش افراد
  • خواندن شماره فاکتور
  • شناسایی عیب قطعه
  • تشخیص وضعیت یک صحنه

پردازش تصویر معمولاً یکی از مراحل آماده‌سازی ورودی برای یک سیستم بینایی ماشین است.

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

تفاوت بینایی ماشین و هوش مصنوعی چندوجهی

مدل بینایی سنتی معمولاً برای یک وظیفه مشخص مانند تشخیص اشیا آموزش داده می‌شود.

مدل چندوجهی می‌تواند چند نوع داده را هم‌زمان پردازش کند:

  • متن
  • تصویر
  • صوت
  • ویدیو

برای مثال، کاربر می‌تواند تصویر یک محصول را همراه این پرسش ارسال کند:

رنگ، جنس احتمالی و ویژگی‌های قابل مشاهده این محصول چیست؟

مدل چندوجهی باید تصویر را تحلیل و پاسخ را به زبان طبیعی یا JSON تولید کند.

بنابراین، بینایی ماشین یک حوزه گسترده است و مدل‌های Vision-Language یکی از فناوری‌های جدید مورد استفاده در آن محسوب می‌شوند.

تصویر در کامپیوتر چگونه نمایش داده می‌شود؟

تصویر دیجیتال از پیکسل‌ها تشکیل شده است.

در تصویر سیاه‌وسفید، هر پیکسل ممکن است مقداری میان صفر تا ۲۵۵ داشته باشد:

  • صفر معمولاً نشان‌دهنده سیاه است.
  • ۲۵۵ معمولاً نشان‌دهنده سفید است.
  • مقادیر میان آن‌ها درجات خاکستری هستند.

در یک تصویر RGB، هر پیکسل معمولاً سه مقدار دارد:

Red
Green
Blue

برای مثال:

[255, 0, 0] = قرمز
[0, 255, 0] = سبز
[0, 0, 255] = آبی

یک تصویر رنگی ۱۹۲۰ در ۱۰۸۰ پیکسل شامل میلیون‌ها مقدار عددی است. مدل باید از میان این اعداد الگوهای بصری مهم را یاد بگیرد.

بینایی ماشین چگونه کار می‌کند؟

فرایند ساخت یک سیستم Computer Vision معمولاً شامل مراحل زیر است.

۱. تعریف مسئله

ابتدا باید خروجی موردنیاز مشخص شود.

نمونه مسئله‌های دقیق:

  • تشخیص وجود یا نبود محصول معیوب
  • شمارش خودروهای واردشده به پارکینگ
  • استخراج نام و قیمت از تصویر کالا
  • پیدا کردن محل بسته‌ها در انبار
  • دسته‌بندی تصاویر محصولات
  • خواندن کد رهگیری از بسته‌بندی

عبارت «می‌خواهیم تصاویر را با هوش مصنوعی تحلیل کنیم» هدف اجرایی دقیقی نیست.

۲. جمع‌آوری تصاویر

داده می‌تواند از منابع زیر جمع‌آوری شود:

  • دوربین
  • گوشی کاربران
  • آرشیو شرکت
  • اسکنر
  • پهپاد
  • ماهواره
  • تصاویر محصول
  • مجموعه‌داده عمومی

داده باید شرایط واقعی محصول را پوشش دهد:

  • نورهای مختلف
  • زاویه‌های متفاوت
  • پس‌زمینه‌های مختلف
  • کیفیت‌های متفاوت دوربین
  • اندازه‌های مختلف شیء
  • اشیای ناقص یا پوشیده‌شده

۳. برچسب‌گذاری

نوع برچسب به وظیفه بستگی دارد.

برچسب کلاس

برای دسته‌بندی کل تصویر:

سالم
معیوب

Bounding Box

برای مشخص کردن محل شیء با یک کادر مستطیلی.

برچسب پیکسلی

برای تعیین کلاس هر پیکسل در تقسیم‌بندی تصویر.

نقاط کلیدی

برای مشخص کردن نقاطی مانند مفاصل بدن یا گوشه‌های یک شیء.

کیفیت برچسب‌ها مستقیماً روی کیفیت مدل اثر می‌گذارد.

۴. پیش‌پردازش

عملیات رایج پیش‌پردازش عبارت‌اند از:

  • تغییر اندازه
  • اصلاح نسبت تصویر
  • نرمال‌سازی مقدار پیکسل
  • کاهش نویز
  • تنظیم روشنایی
  • تبدیل فضای رنگی
  • برش تصویر
  • اصلاح جهت

پیش‌پردازش زمان آموزش و زمان استفاده از مدل باید یکسان باشد.

۵. افزایش داده

Data Augmentation با ایجاد تغییرات کنترل‌شده، تنوع داده آموزشی را افزایش می‌دهد.

نمونه‌ها:

  • چرخاندن
  • برش
  • جابه‌جایی
  • تغییر نور
  • بزرگ‌نمایی
  • معکوس کردن افقی
  • افزودن نویز محدود

تغییر باید با شرایط واقعی سازگار باشد. برای مثال، وارونه کردن یک سند یا تابلو ممکن است نمونه غیرواقعی ایجاد کند.

۶. انتخاب مدل

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

۷. آموزش یا استفاده از مدل آماده

سه مسیر اصلی وجود دارد:

  • آموزش مدل از ابتدا
  • Fine-tuning مدل از پیش آموزش‌دیده
  • استفاده مستقیم از مدل آماده یا API

۸. ارزیابی

مدل باید روی تصاویر دیده‌نشده و شرایط واقعی بررسی شود.

۹. استقرار

مدل می‌تواند در یکی از محیط‌های زیر اجرا شود:

  • سرور
  • فضای ابری
  • اپلیکیشن موبایل
  • دوربین هوشمند
  • دستگاه صنعتی
  • مرورگر
  • سیستم Edge

۱۰. پایش

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

مهم‌ترین وظایف بینایی ماشین

دسته‌بندی تصویر

در Image Classification کل تصویر در یک یا چند دسته قرار می‌گیرد.

مثال:

تصویر محصول → کفش

یا:

تصویر قطعه → سالم

دسته‌بندی محل شیء را مشخص نمی‌کند و فقط برچسب کلی تولید می‌کند.

تشخیص اشیا

در Object Detection مدل علاوه بر نوع شیء، محل آن را با Bounding Box مشخص می‌کند.

مثال:

خودرو: [x1, y1, x2, y2]
عابر پیاده: [x1, y1, x2, y2]

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

تقسیم‌بندی معنایی

در Semantic Segmentation برای هر پیکسل یک کلاس تعیین می‌شود.

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

تقسیم‌بندی نمونه‌ها

Instance Segmentation علاوه بر کلاس هر پیکسل، نمونه‌های جداگانه یک کلاس را نیز از هم تفکیک می‌کند.

اگر سه خودرو در تصویر وجود داشته باشند، مرز هر خودرو جداگانه مشخص می‌شود.

ردیابی اشیا

Object Tracking یک شیء را در فریم‌های متوالی ویدیو دنبال می‌کند.

کاربردها:

  • شمارش افراد
  • تحلیل حرکت
  • مدیریت ترافیک
  • ردیابی بسته
  • تحلیل مسابقه
  • نظارت خط تولید

تخمین وضعیت بدن

Pose Estimation موقعیت نقاط مختلف بدن یا شیء را تخمین می‌زند.

نمونه نقاط بدن:

  • سر
  • شانه
  • آرنج
  • مچ
  • لگن
  • زانو
  • مچ پا

OCR

تشخیص نوری نویسه یا OCR متن را از تصویر و سند اسکن‌شده استخراج می‌کند.

کاربردها:

  • خواندن فاکتور
  • دیجیتال‌سازی اسناد
  • استخراج شماره سریال
  • خواندن برچسب کالا
  • تبدیل دست‌نوشته به متن

درک صحنه

Scene Understanding فقط اشیا را تشخیص نمی‌دهد، بلکه رابطه و وضعیت آن‌ها را نیز تحلیل می‌کند.

برای مثال:

یک خودرو کنار خیابان پارک شده است.
فردی یک بسته را روی میز قرار می‌دهد.

توصیف تصویر

Image Captioning توضیحی متنی درباره محتوای تصویر تولید می‌کند.

پاسخ به پرسش تصویری

در Visual Question Answering مدل تصویر و سؤال متنی را هم‌زمان دریافت می‌کند.

مثال:

سؤال: چند صندلی در تصویر وجود دارد؟
پاسخ: چهار صندلی

جست‌وجوی تصویری

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

معماری‌های پرکاربرد Computer Vision

CNN

شبکه عصبی کانولوشنی یا CNN از فیلترهایی استفاده می‌کند که روی تصویر حرکت می‌کنند و ویژگی‌هایی مانند لبه، شکل و بافت را یاد می‌گیرند.

بخش‌های رایج CNN عبارت‌اند از:

  • لایه کانولوشن
  • تابع فعال‌سازی
  • Pooling
  • لایه تمام‌متصل
  • لایه خروجی

CNNها سال‌ها معماری اصلی بسیاری از وظایف تصویری بوده‌اند.

Vision Transformer

Vision Transformer یا ViT تصویر را به مجموعه‌ای از Patchها تقسیم و آن‌ها را مشابه توکن‌های یک دنباله پردازش می‌کند.

مکانیزم Self-Attention رابطه میان بخش‌های مختلف تصویر را یاد می‌گیرد.

YOLO

YOLO خانواده‌ای از مدل‌های تشخیص اشیا است که کلاس و موقعیت اشیا را با یک جریان استنتاج سریع پیش‌بینی می‌کند.

این مدل‌ها برای تشخیص بلادرنگ اشیا کاربرد زیادی دارند.

مدل‌های Vision-Language

این مدل‌ها تصویر و زبان را در یک فضای مشترک پردازش می‌کنند.

قابلیت‌های آن‌ها می‌تواند شامل موارد زیر باشد:

  • توضیح تصویر
  • پاسخ به سؤال تصویری
  • استخراج اطلاعات
  • مقایسه تصاویر
  • درک اسناد
  • تحلیل رابط کاربری
  • تولید خروجی JSON

ابزارهای پرکاربرد بینایی ماشین

ابزارکاربرد
OpenCVپردازش تصویر و ویدیو
Pillowعملیات ساده روی تصویر در پایتون
Scikit-imageالگوریتم‌های پردازش تصویر
TensorFlow و Kerasآموزش شبکه‌های عصبی
PyTorchتوسعه و آموزش مدل‌های عمیق
Torchvisionمدل‌ها و ابزارهای تصویری PyTorch
Ultralytics YOLOتشخیص و تقسیم‌بندی اشیا
Detectron2تشخیص و تقسیم‌بندی پیشرفته
Albumentationsافزایش داده تصویری
CVATبرچسب‌گذاری تصویر و ویدیو
Label Studioبرچسب‌گذاری انواع داده
ONNXانتقال مدل میان محیط‌های اجرا
OpenVINOبهینه‌سازی اجرای مدل
TensorRTاستنتاج سریع روی GPUهای NVIDIA

OpenCV کتابخانه‌ای متن‌باز با ماژول‌هایی برای پردازش تصویر، ویدیو، کالیبراسیون دوربین، تشخیص اشیا و اجرای شبکه‌های عصبی است. مستندات OpenCV

Torchvision نیز مدل‌ها، Datasetها و تبدیل‌های پرکاربرد تصویری را در اکوسیستم PyTorch ارائه می‌کند. مستندات Torchvision

آموزش پردازش تصویر با OpenCV

ابتدا OpenCV را نصب کنید:

pip install opencv-python

خواندن و نمایش اطلاعات تصویر

import cv2


image = cv2.imread(
    "product.jpg"
)

if image is None:
    raise FileNotFoundError(
        "تصویر پیدا نشد."
    )

height, width, channels = (
    image.shape
)

print("Width:", width)
print("Height:", height)
print("Channels:", channels)

تغییر اندازه

resized = cv2.resize(
    image,
    (800, 600),
)

cv2.imwrite(
    "product-resized.jpg",
    resized,
)

تبدیل به خاکستری

gray = cv2.cvtColor(
    image,
    cv2.COLOR_BGR2GRAY,
)

cv2.imwrite(
    "product-gray.jpg",
    gray,
)

تشخیص لبه

edges = cv2.Canny(
    gray,
    threshold1=100,
    threshold2=200,
)

cv2.imwrite(
    "product-edges.jpg",
    edges,
)

تشخیص لبه به‌تنهایی محتوای تصویر را درک نمی‌کند. این عملیات فقط تغییرات شدید شدت پیکسل‌ها را پیدا می‌کند.

پروژه عملی تشخیص اشیا با YOLO

در این مثال از مدل از پیش آموزش‌دیده YOLO برای پیدا کردن اشیا در یک تصویر استفاده می‌کنیم.

مستندات فعلی Ultralytics، مدل‌های YOLO26 را برای تشخیص اشیا ارائه می‌کند و خروجی آن‌ها شامل کلاس، مختصات Bounding Box و Confidence است. مستندات تشخیص اشیا با Ultralytics YOLO

نصب کتابخانه

pip install ultralytics

اجرای مدل آماده

from ultralytics import YOLO


model = YOLO("yolo26n.pt")

results = model(
    "store.jpg",
    conf=0.35,
)

for result in results:
    result.save(
        filename=(
            "store-detected.jpg"
        )
    )

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

استخراج نتیجه به‌صورت ساختاریافته

detections = []

for result in results:
    boxes = result.boxes

    for index in range(
        len(boxes)
    ):
        class_id = int(
            boxes.cls[index].item()
        )

        confidence = float(
            boxes.conf[index].item()
        )

        coordinates = (
            boxes.xyxy[index]
            .tolist()
        )

        detections.append(
            {
                "class_id": class_id,
                "class_name": (
                    result.names[
                        class_id
                    ]
                ),
                "confidence": round(
                    confidence,
                    4,
                ),
                "box": {
                    "x1": coordinates[0],
                    "y1": coordinates[1],
                    "x2": coordinates[2],
                    "y2": coordinates[3],
                },
            }
        )

print(detections)

نمونه خروجی:

[
  {
    "class_id": 0,
    "class_name": "person",
    "confidence": 0.9341,
    "box": {
      "x1": 115.2,
      "y1": 48.7,
      "x2": 342.8,
      "y2": 691.4
    }
  }
]

مدل عمومی فقط کلاس‌هایی را تشخیص می‌دهد که در داده آموزشی آن تعریف شده‌اند. برای تشخیص محصول یا عیب اختصاصی باید مدل مناسب پیدا یا روی داده اختصاصی Fine-tune شود.

آموزش مدل اختصاصی YOLO

برای آموزش مدل تشخیص اشیا باید تصاویر برچسب‌گذاری شوند.

ساختار کلی Dataset:

dataset/
├── images/
│   ├── train/
│   └── val/
├── labels/
│   ├── train/
│   └── val/
└── dataset.yaml

نمونه فایل dataset.yaml:

path: /absolute/path/to/dataset
train: images/train
val: images/val

names:
  0: healthy_product
  1: damaged_product

آموزش:

from ultralytics import YOLO


model = YOLO("yolo26n.pt")

model.train(
    data="dataset.yaml",
    epochs=100,
    imgsz=640,
    batch=16,
)

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

معیارهای ارزیابی تشخیص اشیا

Precision

از میان اشیایی که مدل تشخیص داده، چه تعداد واقعاً درست بوده‌اند؟

Recall

از میان اشیای واقعی موجود، مدل چه تعداد را پیدا کرده است؟

IoU

Intersection over Union میزان هم‌پوشانی کادر پیش‌بینی‌شده و کادر واقعی را محاسبه می‌کند.

IoU =
مساحت اشتراک دو کادر
÷
مساحت اجتماع دو کادر

mAP

Mean Average Precision یکی از معیارهای اصلی ارزیابی مدل‌های تشخیص اشیا است.

در گزارش‌ها معمولاً موارد زیر دیده می‌شوند:

  • mAP@0.5
  • mAP@0.5:0.95

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

زمان استنتاج

برای ویدیو و کاربرد بلادرنگ، دقت تنها معیار نیست. زمان پردازش هر فریم و تعداد فریم در ثانیه نیز اهمیت دارند.

ساخت سیستم تحلیل تصویر با API درواره

برای بسیاری از کاربردها نیازی به آموزش مدل اختصاصی نیست. یک مدل بینایی یا چندوجهی آماده می‌تواند تصویر را همراه دستور متنی پردازش کند.

کاربردهای مناسب:

  • استخراج ویژگی محصول
  • ساخت توضیحات تصویر
  • پاسخ‌گویی درباره نمودار
  • استخراج اطلاعات سند
  • مقایسه دو تصویر
  • دسته‌بندی محتوای عمومی
  • پیشنهاد عنوان و برچسب
  • تبدیل تصویر به داده JSON

آدرس پایه API درواره:

https://api.darvareh.ir/v1

نصب کتابخانه‌ها

pip install openai pydantic

تنظیم متغیرهای محیطی

export DARVAREH_API_KEY="YOUR_API_KEY"
export DARVAREH_MODEL="YOUR_VISION_MODEL_ID"

مدلی را انتخاب کنید که از ورودی تصویر پشتیبانی کند.

تبدیل تصویر به Data URL

import base64
import mimetypes


def image_to_data_url(
    image_path: str,
) -> str:
    mime_type, _ = (
        mimetypes.guess_type(
            image_path
        )
    )

    if not mime_type:
        mime_type = "image/jpeg"

    with open(
        image_path,
        "rb",
    ) as image_file:
        encoded = base64.b64encode(
            image_file.read()
        ).decode("utf-8")

    return (
        f"data:{mime_type};"
        f"base64,{encoded}"
    )

تعریف ساختار خروجی

from pydantic import BaseModel


class ProductAnalysis(BaseModel):
    product_type: str
    colors: list[str]
    visible_features: list[str]
    possible_material: str | None
    suggested_category: str
    confidence_note: str

تحلیل تصویر محصول

import json
import os

from openai import OpenAI


client = OpenAI(
    api_key=os.environ[
        "DARVAREH_API_KEY"
    ],
    base_url=(
        "https://api.darvareh.ir/v1"
    ),
)

MODEL_ID = os.environ[
    "DARVAREH_MODEL"
]


def analyze_product(
    image_path: str,
) -> ProductAnalysis:
    image_data = image_to_data_url(
        image_path
    )

    response = (
        client.chat.completions.create(
            model=MODEL_ID,
            temperature=0.1,
            messages=[
                {
                    "role": "system",
                    "content": (
                        "شما دستیار تحلیل "
                        "تصاویر محصول هستید و "
                        "فقط JSON معتبر "
                        "تولید می‌کنید."
                    ),
                },
                {
                    "role": "user",
                    "content": [
                        {
                            "type": "text",
                            "text": """
تصویر محصول را تحلیل کن.

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

ساختار:
{
  "product_type": "نوع محصول",
  "colors": ["رنگ"],
  "visible_features": ["ویژگی"],
  "possible_material": null,
  "suggested_category": "دسته پیشنهادی",
  "confidence_note": "توضیح عدم قطعیت"
}
""",
                        },
                        {
                            "type": "image_url",
                            "image_url": {
                                "url": (
                                    image_data
                                )
                            },
                        },
                    ],
                },
            ],
        )
    )

    content = (
        response
        .choices[0]
        .message
        .content
    )

    if not content:
        raise ValueError(
            "پاسخی از مدل دریافت نشد."
        )

    parsed = json.loads(content)

    return (
        ProductAnalysis
        .model_validate(parsed)
    )

اجرای برنامه

result = analyze_product(
    "product.jpg"
)

print(
    result.model_dump_json(
        indent=2
    )
)

نمونه خروجی:

{
  "product_type": "کفش ورزشی",
  "colors": [
    "سفید",
    "مشکی"
  ],
  "visible_features": [
    "بنددار",
    "زیره ضخیم",
    "طراحی کم‌ارتفاع"
  ],
  "possible_material": "ترکیبی از پارچه و مواد مصنوعی",
  "suggested_category": "کفش ورزشی روزمره",
  "confidence_note": "جنس دقیق و برند محصول از تصویر قابل تأیید نیست."
}

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

تفاوت YOLO و مدل بینایی چندوجهی

معیارYOLOمدل بینایی چندوجهی
خروجی اصلیکلاس و مختصات اشیاپاسخ متنی یا ساختاریافته
سرعتمناسب پردازش سریعوابسته به مدل و API
شمارش شیءمناسبممکن است دقیق نباشد
درک متن و زمینهمحدودقوی‌تر
تشخیص کلاس اختصاصینیازمند آموزشگاهی با دستور ممکن است
توضیح تصویرمحدودمناسب
محل دقیق شیءمناسببسته به مدل
کاربردتشخیص و ردیابیتحلیل و تعامل با تصویر

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

  1. YOLO اشیا و مختصات را پیدا کند.
  2. تصویر یا بخش‌های برش‌خورده برای مدل چندوجهی ارسال شوند.
  3. مدل چندوجهی ویژگی‌ها و توضیحات را استخراج کند.
  4. خروجی‌ها با قواعد برنامه اعتبارسنجی شوند.

معماری پیشنهادی برای تحلیل تصویر

کاربر
  ↓
بارگذاری تصویر
  ↓
اعتبارسنجی فرمت و اندازه
  ↓
اصلاح جهت و تغییر اندازه
  ↓
مدل محلی یا API درواره
  ↓
اعتبارسنجی JSON
  ↓
قواعد کسب‌وکار
  ↓
نمایش یا ذخیره نتیجه

کلید API باید فقط روی سرور نگهداری شود و نباید در کد مرورگر یا اپلیکیشن عمومی قرار بگیرد.

کاربردهای بینایی ماشین در کسب‌وکار

فروشگاه اینترنتی

  • استخراج ویژگی محصول
  • دسته‌بندی خودکار کالا
  • جست‌وجوی محصول با عکس
  • کنترل کیفیت تصاویر
  • ساخت متن جایگزین تصویر
  • شناسایی چند محصول در یک تصویر

تولید

  • تشخیص خط و خش
  • بررسی مونتاژ
  • شمارش قطعات
  • خواندن شماره سریال
  • تشخیص محصول ناقص
  • پایش خط تولید

انبار و لجستیک

  • شمارش بسته‌ها
  • خواندن برچسب
  • ردیابی کالا
  • تشخیص فضای خالی
  • بررسی وضعیت بسته‌بندی

کشاورزی

  • بررسی وضعیت گیاه
  • تشخیص علف هرز
  • شمارش محصول
  • تحلیل تصاویر پهپاد
  • تخمین سطح پوشش گیاهی

اسناد

  • OCR
  • تشخیص نوع سند
  • استخراج جدول
  • استخراج مبلغ و تاریخ
  • بررسی چیدمان صفحه
  • دیجیتال‌سازی آرشیو

معماری و املاک

  • دسته‌بندی تصاویر ملک
  • تشخیص اجزای اتاق
  • برآورد وضعیت ظاهری
  • جست‌وجوی تصاویر مشابه
  • پیشنهاد برچسب برای آگهی

چگونه داده تصویری مناسب جمع‌آوری کنیم؟

یک Dataset خوب باید نماینده محیط واقعی باشد.

موارد مهم:

  • دوربین‌های مختلف
  • فاصله‌های متفاوت
  • نور روز و شب
  • پس‌زمینه‌های متنوع
  • زاویه‌های مختلف
  • نمونه‌های سالم و معیوب
  • نمونه‌های دشوار
  • اشیای ناقص یا پوشیده
  • کیفیت‌های مختلف تصویر
  • شرایط فصلی یا محیطی

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

چه زمانی مدل اختصاصی بسازیم؟

مدل اختصاصی زمانی منطقی است که:

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

چه زمانی از API مدل آماده استفاده کنیم؟

API انتخاب مناسبی است اگر:

  • می‌خواهید سریع نمونه اولیه بسازید.
  • داده آموزشی کافی ندارید.
  • خروجی متنی یا JSON نیاز دارید.
  • تصاویر عمومی هستند.
  • مسئله نیازمند درک زمینه است.
  • مدیریت GPU برای شما مطلوب نیست.
  • مصرف پروژه در ابتدا نامشخص است.
  • می‌خواهید چند مدل را آزمایش کنید.

کاهش هزینه تحلیل تصویر

ابعاد تصویر را کنترل کنید

تصویر بسیار بزرگ همیشه اطلاعات مفید بیشتری ایجاد نمی‌کند. اندازه ورودی را متناسب با وظیفه تنظیم کنید.

ناحیه مهم را برش دهید

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

نتایج را Cache کنید

تصویر یکسان نباید بدون دلیل چندین بار پردازش شود.

از مدل مناسب وظیفه استفاده کنید

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

پردازش غیرهم‌زمان بسازید

برای عملیات سنگین، درخواست را در صف قرار دهید و نتیجه را بعداً با Polling یا Webhook تحویل دهید.

بازتولید محدود انجام دهید

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

اشتباهات رایج در پروژه‌های Computer Vision

استفاده از تصاویر تمیز آزمایشگاهی

مدل باید روی تصاویر واقعی کاربران یا محیط عملی آزمایش شود.

نشت داده

فریم‌های بسیار مشابه یک ویدیو نباید تصادفی میان آموزش و آزمون توزیع شوند؛ زیرا نتیجه ارزیابی غیرواقعی می‌شود.

بررسی نکردن کلاس‌های جداگانه

دقت کلی ممکن است خوب باشد، اما مدل روی یک نوع محصول خاص ضعیف عمل کند.

اعتماد به Confidence

Confidence احتمال آماری مدل است و تضمین صحت نیست.

انتخاب آستانه ثابت بدون آزمایش

Threshold مناسب باید بر اساس هزینه مثبت کاذب و منفی کاذب تعیین شود.

استفاده از Accuracy برای تشخیص اشیا

در تشخیص اشیا باید Precision، Recall، IoU و mAP نیز بررسی شوند.

نادیده گرفتن زمان پاسخ

مدل دقیق اما کند ممکن است برای دوربین بلادرنگ قابل‌استفاده نباشد.

استفاده مستقیم از خروجی مدل

خروجی باید پیش از اجرای اقدام در نرم‌افزار اعتبارسنجی شود.

نداشتن امکان بررسی انسانی

برای موارد کم‌اطمینان بهتر است مسیر بررسی انسانی وجود داشته باشد.

مسیر یادگیری بینایی ماشین

مرحله اول: پایتون

توابع، کلاس‌ها، NumPy، فایل‌ها و محیط مجازی را یاد بگیرید.

مرحله دوم: مبانی تصویر

با پیکسل، کانال رنگ، رزولوشن، Histogram و فضای رنگی آشنا شوید.

مرحله سوم: OpenCV

خواندن تصویر، تغییر اندازه، فیلتر، لبه‌یابی و پردازش ویدیو را تمرین کنید.

مرحله چهارم: یادگیری ماشین

مفاهیم داده آموزش، آزمون، بیش‌برازش و معیارهای ارزیابی را یاد بگیرید.

مرحله پنجم: Deep Learning

CNN، Backpropagation و Transfer Learning را مطالعه کنید.

مرحله ششم: تشخیص و تقسیم‌بندی

یک مدل YOLO یا مدل تقسیم‌بندی را روی داده نمونه اجرا کنید.

مرحله هفتم: مدل‌های چندوجهی

تحلیل تصویر با Prompt، خروجی JSON و ارزیابی مدل بینایی را تمرین کنید.

مرحله هشتم: استقرار

مدل را روی سرور، موبایل یا Edge اجرا و سرعت، حافظه و کیفیت را پایش کنید.

پرسش‌های متداول

بینایی ماشین به زبان ساده چیست؟

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

Computer Vision چه تفاوتی با پردازش تصویر دارد؟

پردازش تصویر معمولاً ظاهر یا ساختار تصویر را تغییر می‌دهد؛ اما Computer Vision تلاش می‌کند از تصویر اطلاعات و مفهوم استخراج کند.

آیا OCR بخشی از بینایی ماشین است؟

بله. OCR یکی از وظایف بینایی ماشین است که متن موجود در تصویر یا سند اسکن‌شده را استخراج می‌کند.

YOLO چیست؟

YOLO خانواده‌ای از مدل‌های تشخیص اشیا است که نوع و موقعیت اشیا را در تصویر یا ویدیو پیش‌بینی می‌کند.

آیا برای Computer Vision به GPU نیاز داریم؟

برای مثال‌های کوچک و بعضی مدل‌های سبک CPU کافی است. آموزش یا اجرای سریع مدل‌های بزرگ معمولاً از GPU بهره می‌برد. هنگام استفاده از API نیازی به مدیریت مستقیم GPU ندارید.

بهترین زبان برنامه‌نویسی برای بینایی ماشین چیست؟

پایتون به دلیل وجود کتابخانه‌هایی مانند OpenCV، PyTorch، TensorFlow و Ultralytics یکی از انتخاب‌های اصلی است. برای سیستم‌های سریع و Embedded از C++ نیز استفاده می‌شود.

آیا می‌توان تصویر فارسی را تحلیل کرد؟

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

آیا مدل بینایی می‌تواند تعداد اشیا را بشمارد؟

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

آیا مدل چندوجهی جای YOLO را می‌گیرد؟

نه در همه کاربردها. YOLO برای مکان‌یابی و پردازش سریع مناسب است؛ مدل چندوجهی برای درک زمینه و تولید پاسخ متنی توانمندتر است.

درواره چگونه در پروژه بینایی ماشین استفاده می‌شود؟

با API درواره می‌توان به مدل‌های دارای قابلیت ورودی تصویر متصل شد و قابلیت‌هایی مانند استخراج ویژگی، توضیح تصویر، تحلیل سند یا پاسخ به پرسش تصویری را به نرم‌افزار اضافه کرد.

جمع‌بندی

بینایی ماشین به سیستم‌ها امکان می‌دهد تصاویر و ویدیوها را پردازش و تفسیر کنند.

یک پروژه موفق Computer Vision باید:

  1. مسئله تصویری مشخصی داشته باشد.
  2. تصاویر نماینده شرایط واقعی جمع‌آوری کند.
  3. برچسب‌های دقیق و سازگار داشته باشد.
  4. مدل ساده و مدل آماده را ابتدا آزمایش کند.
  5. معیار مناسب وظیفه را انتخاب کند.
  6. کیفیت را برای هر کلاس جداگانه بسنجد.
  7. زمان پاسخ و هزینه اجرا را اندازه‌گیری کند.
  8. موارد کم‌اطمینان را به بررسی انسانی هدایت کند.
  9. خروجی مدل را پیش از استفاده اعتبارسنجی کند.
  10. تغییر شرایط محیط را پس از استقرار پایش کند.

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

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

درواره با یک API سازگار با OpenAI، کیف پول ریالی و دسترسی یکپارچه به مدل‌های مختلف، امکان ساخت و آزمایش قابلیت‌های بینایی هوش مصنوعی را برای توسعه‌دهندگان ایرانی فراهم می‌کند.

مقالات مرتبط

منابع

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

Read more

بازنویسی و پارافریز متن فارسی با هوش مصنوعی

بازنویسی متن با هوش مصنوعی؛ آموزش پارافریز متن فارسی با مثال عملی

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

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

پردازش زبان طبیعی چیست؟ راهنمای کامل NLP فارسی با مثال عملی

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