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

آموزش بر پایه سناریوهای واقعی، نه تئوری!

گام ۰۱ // TRIGGER

دریافت و اتصال خودکار داده‌ها

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

  • اتصال بدون محدودیت به سرویس‌های ایرانی و خارجی
  • پردازش آنی داده‌های ورودی (Real-time Webhook)
POST /api/v1/n8n-webhook
// Event Listening...
{
  "event": "lead_captured",
  "source": "WordPress_Form"
}
گام ۰۲ // AI PROCESSING

پردازش هوشمند با مدل‌های AI

ارسال داده‌ها به ایجنت‌ها و مدل‌های پردازشی (GPT-4o, Claude) جهت تحلیل متن، خلاصه‌سازی و تصمیم‌گیری هوشمند.

  • استفاده از پرامپت‌های مهندسی‌شده و دقیق
  • استخراج داده‌های ساختاریافته (JSON Output)
AI_Agent.analyze({
  model: "gpt-4o",
  temperature: 0.2,
  status: "ANALYSIS_SUCCESSFUL"
});
گام ۰۳ // AUTOMATION EXECUTION

اجرای خودکار در n8n

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

  • کاهش ۹۰ درصدی خطای انسانی در فرایندها
  • اجرای تمام‌خودکار و ۲۴/۷ سناریوها
Workflow.execute();
✓ Notification sent to Telegram
✓ Row inserted into Database

 سرویس جستجوی تصویر با n8n

انتشار خودکار محتوا با n8n

مقدمه

ساخت سرویس جستجوی تصویر هوشمند با n8n : 

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

N8N برای چه کسب و کارهایی مناسب است:

اگر سازمان شما کوچک می باشد و هم اکنون بسیاری از کار های خود را با نرم افزار هایی همچون اکسل انجام می دهید، N8N برای کسب و کار شما ایده آل است و در صورتی که کسب و کاری متوسط یا بزرگ دارید می توانید بخش های بسیاری از فرایند های غیر کلیدی خود را با این ابزار هوشمند کنید.

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

همچنین اگر ترجیح می‌دهید شخصاً نصب و راه‌اندازی را انجام دهید، می‌توانید از اطلاعات موجود در مقالات، دسته N8N استفاده کنید .همچنین می توانید template موجود در این workflow را به صورت رایگان از این قسمت دانلود کنید.

ساخت سرویس جستجوی تصویر هوشمند با n8n

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

در این مقاله، با استفاده از n8n یک Workflow هوشمند می‌سازیم که تصاویر را دانلود، اشیای داخل آن را با مدل هوش مصنوعی شناسایی، برش‌های جداگانه هر شیء تولید و اطلاعات آن‌ها را در پایگاه داده Elasticsearch ذخیره می‌کند. این فرآیند زیربنای یک سرویس جستجوی تصویر مبتنی بر شیء (Object-based Image Search) را ایجاد می‌کند. در چنین سرویسی، کاربر می‌تواند به جای جستجوی کلمات کلیدی، مستقیماً بر اساس اشیای موجود در تصاویر جستجو کند. این رویکرد در فروشگاه‌های آنلاین، سیستم‌های مدیریت دارایی بصری و آرشیوهای تصویری کاربرد گسترده‌ای دارد.

برای پیاده‌سازی این Workflow از چند سرویس ابری استفاده می‌کنیم: Cloudflare Workers AI برای اجرای مدل تشخیص اشیا، Cloudinary برای میزبانی تصاویر برش‌خورده و Elasticsearch برای ذخیره‌سازی و فهرست‌گذاری داده‌ها. هر کدام از این سرویس‌ها نقش مشخصی در معماری Workflow ایفا می‌کنند و در ادامه مقاله به‌طور کامل معرفی خواهند شد.

قبل از شروع

اگر هنوز n8n را نصب نکرده‌اید، پیشنهاد می‌کنیم ابتدا مقاله «آموزش n8n» را مطالعه کنید. در آن مقاله، مراحل نصب با Node.js و Docker، راه‌اندازی اولیه و ساخت اولین Workflow به‌صورت کامل آموزش داده شده است. پس از نصب و راه‌اندازی، به این مقاله بازگردید و مراحل پیاده‌سازی این Workflow را دنبال کنید.

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

این Workflow فرآیند کاملی را برای تحلیل بصری تصاویر اجرا می‌کند. ابتدا یک تصویر منبع از اینترنت دانلود می‌شود. سپس تصویر به مدل هوش مصنوعی DETR-ResNet-50 ارسال می‌شود تا اشیای موجود در آن شناسایی شوند. هر شیء با یک نام (برچسب)، یک نمره اطمینان و یک کادر مرزی (Bounding Box) مشخص می‌شود. پس از فیلتر کردن اشیایی که نمره اطمینان آن‌ها بالای 90 درصد است، هر شیء به‌صورت جداگانه از تصویر اصلی برش داده می‌شود. تصاویر برش‌خورده در Cloudinary آپلود شده و اطلاعات مربوط به هر شیء شامل نام، نمره، آدرس تصویر و متادیتا در یک شاخص Elasticsearch ذخیره می‌شود. نتیجه نهایی یک پایگاه داده ساختاریافته از تصاویر اشیا است که امکان جستجو بر اساس محتوای بصری را فراهم می‌کند.

کاربردهای سرویس جستجوی تصویر با n8n

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

پیش‌نیازها

  • نصب n8n (نسخه پایدار)
  • حساب Cloudflare با فعال‌سازی Workers AI و دریافت Account ID و API Token
  • حساب Cloudinary با نام کاربری و Upload Preset
  • سرور Elasticsearch فعال با نام کاربری و رمز عبور
  • دسترسی به اینترنت برای دانلود تصاویر و ارسال درخواست به APIها

دانلود Template

فایل JSON این Workflow را از این قسمت دانلود کنید.

رمز فایل:danixai.com

آموزش Import کردن Workflow

  1. وارد داشبورد n8n شوید.
  2. روی Import from File کلیک کنید.
  3. فایل JSON را انتخاب کنید.
  4. Workflow ایجاد خواهد شد.
  5. Credentialهای موردنیاز را تنظیم کنید.

ساختار سرویس جستجوی تصویر با n8n

ساختار اجرایی این Workflow به صورت خطی و مرحله‌ای است:

 

Manual Trigger (Test workflow)

    Set Variables

  Fetch Source Image

  Object Classification (DETR-ResNet-50)

  Split Out Results Only

  Filter Score >= 0.9

  Fetch Source Image Again

  Crop Object From Image

  Upload to Cloudinary

  Create Docs In Elasticsearch
 

آموزش کامل تمام Nodeهای سرویس جستجوی تصویر با n8n

Manual Trigger (When clicking “Test workflow”)
  • وظیفه: نقطه شروع Workflow با فشردن دکمه تست در داشبورد n8n. این Node هیچ داده‌ای تولید نمی‌کند و فقط یک سیگنال شروع ارسال می‌دهد.
  • ورودی: بدون ورودی.
  • خروجی: یک آبجکت خالی که زنجیره اجرا را فعال می‌کند.
  • تنظیمات مهم: ندارد.
  • نکات قابل تغییر: می‌توانید آن را با Webhook Trigger برای دریافت تصویر از سرویس‌های خارجی یا Schedule Trigger برای پردازش دوره‌ای تصاویر جایگزین کنید.
  • دلیل استفاده: برای تست و توسعه Workflow استفاده از Manual Trigger ساده‌ترین راه است.
Set Variables
  • وظیفه: تعریف متغیرهای اصلی Workflow شامل شناسه حساب Cloudflare، نام مدل هوش مصنوعی، آدرس تصویر منبع و نام شاخص Elasticsearch.
  • ورودی: سیگنال شروع از Manual Trigger.
  • خروجی: آبجکتی حاوی چهار متغیر:
    • CLOUDFLARE_ACCOUNT_ID: شناسه حساب Cloudflare (باید توسط کاربر تکمیل شود)
    • model: نام مدل @cf/facebook/detr-resnet-50
    • source_image: آدرس تصویر نمونه از سایت Pexels
    • elasticsearch_index: نام شاخص n8n-image-search
  • تنظیمات مهم: شناسه حساب Cloudflare خالی است و حتماً باید پیش از اجرای Workflow آن را وارد کنید.
  • نکات قابل تغییر: آدرس تصویر منبع را به هر تصویر دلخواه تغییر دهید. نام شاخص Elasticsearch را بر اساس نیاز پروژه تنظیم کنید.
  • دلیل استفاده: استفاده از Node Set برای تعریف متغیرها به جای تکرار مقادیر در هر Node، مدیریت و تغییر Workflow را بسیار ساده‌تر می‌کند.
Fetch Source Image
  • وظیفه: دانلود تصویر منبع از آدرس URL تعریف‌شده در متغیر source_image. نتیجه این درخواست به صورت داده باینری دریافت می‌شود.
  • ورودی: خروجی Node Set Variables (آدرس تصویر).
  • خروجی: داده باینری تصویر همراه با متادیتای آن.
  • تنظیمات مهم: آدرس URL از متغیر source_image خوانده می‌شود. تنظیمات اضافی پیش‌فرض است.
  • نکات قابل تغییر: آدرس تصویر را به هر منبع دلخواه تغییر دهید. در محیط Production، می‌توانید این تصویر را از Webhook، Google Drive یا هر منبع دیگری دریافت کنید.
  • دلیل استفاده: مدل هوش مصنوعی به داده باینری تصویر نیاز دارد. این Node تصویر را از اینترنت دریافت و برای پردازش بعدی آماده می‌کند.
Use Detr-Resnet-50 Object Classification
  • وظیفه: ارسال داده باینری تصویر به API Cloudflare Workers AI برای اجرای مدل DETR-ResNet-50. این مدل اشیای موجود در تصویر را شناسایی و برای هر شیء یک نام (label)، نمره اطمینان (score) و کادر مرزی (bounding box) باز می‌گرداند.
  • ورودی: داده باینری تصویر از Node Fetch Source Image.
  • خروجی: پاسخ JSON شامل آرایه‌ای از اشیای شناسایی‌شده. هر شیء حاوی فیلدهای label، score و box (با مقادیر xmin، ymin، xmax، ymax) است.
  • تنظیمات مهم:

URL: آدرس API Cloudflare با استفاده از شناسه حساب و نام مدل ساخته می‌شود.

Method: POST

Content Type: binaryData (داده باینری تصویر)

Credential: از نوع predefinedCredentialType و نوع Cloudflare API استفاده می‌کند. باید Credential حساب Cloudflare در n8n تنظیم شده باشد.

  • نکات قابل تغییر: می‌توانید مدل را به مدل‌های دیگر Cloudflare Workers AI مانند YOLO تغییر دهید. در صورت استفاده از مدل دیگر، ساختار پاسخ ممکن است متفاوت باشد.
  • دلیل استفاده: Cloudflare Workers AI امکان اجرای مدل‌های هوش مصنوعی در لبه شبکه (Edge) را فراهم می‌کند. مدل DETR-ResNet-50 یک مدل تشخیص اشیا از شرکت Meta (Facebook) است که معماری Transformer را با شبکه عصبی ResNet-50 ترکیب می‌کند و برای شناسایی اشیا در تصاویر بهینه شده است. استفاده از این سرویس نیاز به راه‌اندازی سرور اختصاصی هوش مصنوعی را از بین می‌برد.
Split Out Results Only
  • وظیفه: استخراج آرایه result از پاسخ JSON دریافتی از مدل هوش مصنوعی. این Node آرایه اشیا را از ساختار تو در تو پاسخ خارج کرده و هر شیء را به‌عنوان یک آیتم مستقل در خروجی n8n قرار می‌دهد.
  • ورودی: پاسخ JSON از Node Object Classification.
  • خروجی: چندین آیتم مستقل که هر کدام حاوی اطلاعات یک شیء شناسایی‌شده (label، score، box) است.
  • تنظیمات مهم: فیلد result به‌عنوان فیلد مبدأ برای جدا کردن (Split Out) تعیین شده است.
  • نکات قابل تغییر: در صورت استفاده از مدل دیگر با ساختار متفاوت پاسخ، نام فیلد را تغییر دهید.
  • دلیل استفاده: پاسخ مدل به صورت یک آرایه واحد است. برای پردازش جداگانه هر شیء، نیاز به تبدیل آرایه به آیتم‌های مستقل داریم. Node Split Out این کار را انجام می‌دهد.
Filter Score >= 0.9
  • وظیفه: فیلتر کردن اشیای شناسایی‌شده و حفظ فقط اشیایی که نمره اطمینان آن‌ها 0.9 یا بالاتر است. این مرحله از پردازش اشیای نادرست یا نامطمئن جلوگیری می‌کند.
  • ورودی: آیتم‌های جداشده از Node Split Out.
  • خروجی: فقط آیتم‌هایی که مقدار score آن‌ها بزرگ‌تر یا مساوی 0.9 باشد.
  • تنظیمات مهم: شرط فیلتر روی فیلد score با عملگر gte (بزرگ‌تر یا مساوی) و مقدار 0.9 تنظیم شده است.
  • نکات قابل تغییر: آستانه 0.9 را بر اساس نیاز خود تغییر دهید. مقدار پایین‌تر (مانند 0.7) اشیای بیشتری را شامل می‌شود اما دقت کمتری دارد. مقدار بالاتر (مانند 0.95) دقیق‌تر است اما ممکن است برخی اشیای واقعی را از دست بدهد.
  • دلیل استفاده: مدل‌های تشخیص اشیا ممکن است اشیایی با نمره پایین شناسایی کنند که در واقعیت وجود ندارند. فیلتر کردن بر اساس نمره اطمینان کیفیت نتایج را به‌طور چشمگیری افزایش می‌دهد.
Fetch Source Image Again
  • وظیفه: بارگذاری مجدد تصویر منبع از همان آدرس URL. دلیل این بازبارگذاری این است که در مرحله قبل (فیلتر) داده‌های باینری تصویر از جریان اصلی داده حذف شده‌اند و برای مرحله برش به داده باینری تصویر نیاز است.
  • ورودی: آیتم‌های فیلترشده (شیء با نمره بالای 0.9).
  • خروجی: داده باینری تصویر منبع همراه با اطلاعات هر شیء.
  • تنظیمات مهم: آدرس URL دقیقاً مشابه Node Fetch Source Image اول است.
  • نکات قابل تغییر: نیازی به تغییر ندارد مگر اینکه آدرس تصویر منبع را در Set Variables تغییر دهید.
  • دلیل استفاده: n8n در برخی Nodeها داده‌های باینری را حفظ نمی‌کند و پس از عبور از Nodeهایی مانند Filter و Split Out، داده باینری از بین می‌رود. این Node این مشکل را با بازیابی مجدد تصویر حل می‌کند.
Crop Object From Image
  • وظیفه: برش هر شیء شناسایی‌شده از تصویر منبع با استفاده از مختصات کادر مرزی. برای هر شیء، یک تصویر جداگانه JPEG تولید می‌شود.
  • ورودی: داده باینری تصویر منبع و اطلاعات کادر مرزی (xmin، ymin، xmax، ymax) از هر شیء.
  • خروجی: تصویر JPEG برش‌خورده هر شیء همراه با برچسب و نام فایل سفارشی.
  • تنظیمات مهم:
    • Operation: crop
    • Width: محاسبه از xmax تا xmin
    • Height: محاسبه از ymax تا ymin
    • Position X و Y: مقادیر xmin و ymin
    • Format: JPEG
    • File Name: نام فایل شامل نام تصویر اصلی، برچسب شیء و شماره ایندکس آیتم
  • نکات قابل تغییر: فرمت خروجی را به PNG تغییر دهید اگر شفافیت تصویر مهم است. نام فایل خروجی را با الگوی دلخواه تغییر دهید. از مرتب‌سازی (pad) برای هم‌اندازه‌سازی تصاویر برش‌خورده استفاده کنید.
  • دلیل استفاده: Node Edit Image قابلیت‌های قدرتمندی برای ویرایش تصاویر در n8n فراهم می‌کند. برش تصاویر بر اساس مختصات دقیق یکی از مهم‌ترین کاربردهای این Node است.
Upload to Cloudinary
  • وظیفه: آپلود تصویر برش‌خورده در پلتفرم Cloudinary. Cloudinary یک سرویس ابری مدیریت تصاویر و ویدیوها است که امکاناتی مانند میزبانی، بهینه‌سازی خودکار و تحویل از طریق CDN را فراهم می‌کند. پس از آپلود، یک URL امن (secure_url) برای دسترسی به تصویر بازگردانده می‌شود.
  • ورودی: تصویر برش‌خورده از Node Crop Object.
  • خروجی: پاسخ JSON شامل secure_url (آدرس تصویر در CDN Cloudinary)، original_filename و سایر اطلاعات آپلود.
  • تنظیمات مهم:

URL: آدرس API آپلود Cloudinary با نام حساب کاربری.

Method: POST

Content Type: multipart-form-data

Body: فیلد file حاوی داده باینری تصویر

Query Parameter: upload_preset تنظیم‌شده به n8n-workflows-preset

Credential: از نوع HTTP Query Auth با نام Cloudinary API

  • نکات قابل تغییر: نام حساب Cloudinary و Upload Preset را با مقادیر حساب خود جایگزین کنید. می‌توانید پارامترهای اضافی مانند width، quality و format را برای بهینه‌سازی خودکار اضافه کنید.
  • دلیل استفاده: تصاویر برش‌خورده باید در یک فضای قابل دسترس ذخیره شوند تا برای جستجو و بازیابی در Elasticsearch قابل استفاده باشند. Cloudinary گزینه‌ای مناسب با CDN جهانی و بهینه‌سازی خودکار ارائه می‌دهد.
Create Docs In Elasticsearch
  • وظیفه: ایجاد یک سند در شاخص Elasticsearch حاوی اطلاعات تصویر برش‌خورده. Elasticsearch یک موتور جستجو و تحلیل توزیع‌شده است که برای جستجوی متنی سریع، تحلیل داده‌های ساختاریافته و ذخیره‌سازی لاگ استفاده می‌شود. در اینجا از Elasticsearch به‌عنوان پایگاه داده فهرست تصاویر استفاده می‌شود.
  • ورودی: اطلاعات تصویر برش‌خورده از Node Crop و URL تصویر از Node Upload to Cloudinary.
  • خروجی: تأیید ایجاد سند در Elasticsearch همراه با شناسه سند.
  • تنظیمات مهم:

Index ID: نام شاخص از متغیر elasticsearch_index خوانده می‌شود.

Operation: create

فیلدها:

image_url: آدرس تصویر در Cloudinary با پارامترهای بهینه‌سازی (f_auto, q_auto)

source_image_url: آدرس تصویر منبع اصلی

label: برچسب شناسایی‌شده برای شیء

metadata: اطلاعات تکمیلی شامل برچسب، نمره، مختصات کادر و نام فایل اصلی به صورت رشته JSON

Credential: از نوع Elasticsearch API با نام Elasticsearch account

  • نکات قابل تغییر: فیلدهای اضافی مانند تاریخ پردازش، دسته‌بندی یا برچسب‌های سفارشی اضافه کنید. از Elasticsearch Query DSL برای جستجوی تصاویر بر اساس فیلدهای مختلف استفاده کنید.
  • دلیل استفاده: Elasticsearch امکانات قدرتمندی برای جستجوی فول‌تکست و جستجوی برداری ارائه می‌دهد. با ذخیره‌سازی اطلاعات اشیا در Elasticsearch، می‌توان سرویس جستجوی تصویر مبتنی بر شیء را پیاده‌سازی کرد.

نحوه شخصی‌سازی سرویس جستجوی تصویر با n8n

  • تغییر تصویر منبع: مقدار متغیر source_image در Node Set Variables را به آدرس هر تصویر دلخواه تغییر دهید. برای محیط Production، آن را از Webhook یا API دریافت کنید.
  • تغییر مدل هوش مصنوعی: نام مدل در متغیر model قابل تغییر است. Cloudflare Workers AI مدل‌های متنوعی ارائه می‌دهد. ساختار پاسخ ممکن است بسته به مدل تغییر کند.
  • تغییر آستانه فیلتر: مقدار 0.9 در Node Filter Score را بر اساس نیاز تنظیم کنید. مقادیر پایین‌تر نتایج بیشتر و مقادیر بالاتر نتایج دقیق‌تری تولید می‌کنند.
  • تغییر Trigger: Manual Trigger را با Webhook Trigger جایگزین کنید تا تصاویر از سرویس‌های خارجی دریافت شوند. یا Schedule Trigger برای پردازش دوره‌ای تصاویر جدید اضافه کنید.
  • تغییر محل ذخیره‌سازی: به جای Elasticsearch از سایر پایگاه‌داده‌ها مانند MongoDB، PostgreSQL یا Pinecone (برای جستجوی برداری) استفاده کنید.
  • تغییر مسیر اجرا: پس از فیلتر، یک بلوک IF اضافه کنید تا اشیایی با نمره پایین به مسیر دیگری هدایت شوند. یا پس از ذخیره‌سازی، نتیجه را به Telegram یا Slack ارسال کنید.

مزایای استفاده از سرویس جستجوی تصویر با n8n

  • اتوماسیون کامل فرآیند: از دریافت تصویر تا ذخیره‌سازی اطلاعات، تمام مراحل بدون دخالت دستی انجام می‌شود.
  • استفاده از مدل پیشرفته: DETR-ResNet-50 یکی از دقیق‌ترین مدل‌های تشخیص اشیا است که توسط Meta توسعه یافته.
  • پردازش در لبه شبکه: اجرای مدل روی Cloudflare Workers AI سرعت پاسخ‌دهی را افزایش و هزینه را کاهش می‌دهد.
  • قابلیت جستجوی دقیق: ذخیره‌سازی اطلاعات شیء در Elasticsearch امکان جستجو بر اساس محتوای بصری را فراهم می‌کند.
  • مقیاس‌پذیری بالا: با اضافه کردن Webhook و حلقه پردازش، می‌توانید هزاران تصویر را به‌صورت خودکار پردازش کنید.
  • بدون نیاز به زیرساخت هوش مصنوعی اختصاصی: تمام سرویس‌ها ابری هستند و نیازی به سرور GPU ندارید.

نکات مهم

  • حتماً شناسه حساب Cloudflare و Token مربوطه را در Node Set Variables و Credential تنظیم کنید. بدون آن، درخواست به API Cloudflare با خطای احراز هویت مواجه می‌شود.
  • نسخه پروتکل API و نام مدل‌ها ممکن است با به‌روزرسانی Cloudflare تغییر کند. مستندات Cloudflare Workers AI را مرور کنید.
  • آستانه فیلتر 0.9 مقداری محافظه‌کارانه است. در صورت نیاز به شناسایی اشیای با نمره متوسط، این مقدار را کاهش دهید.
  • تصاویر برش‌خورده به صورت جداگانه آپلود می‌شوند. اگر تصویر حاوی 10 شیء باشد، 10 درخواست آپلود به Cloudinary ارسال خواهد شد.
  • از محدودیت‌های رایگان سرویس‌های ابری آگاه باشید. Cloudflare، Cloudinary و Elasticsearch همگی طرح‌های رایگان محدودی ارائه می‌دهند.
  • نام فایل‌های خروجی با الگوی خاصی ساخته می‌شود تا از تداخل نام جلوگیری شود. اگر نیاز به الگوی متفاوتی دارید، فیلد fileName در Node Crop را تغییر دهید.
  • در محیط Production، تصاویر منبع را از منابع قابل اعتماد دریافت کنید و اعتبارسنجی نوع فایل و حجم را اضافه کنید.
  • اگر Workflow را به‌صورت خودکار اجرا می‌کنید، مکانیزم مدیریت خطا و ارسال اعلان برای شکست درخواست‌ها اضافه کنید.

خطاهای رایج (Troubleshooting)

احراز هویت Cloudflare
  • علت: شناسه حساب یا API Token نادرست یا ناقص است.
  • راه‌حل: مقدار CLOUDFLARE_ACCOUNT_ID را در Node Set Variables بررسی و تکمیل کنید. Credential Cloudflare API در n8n را بازبینی کنید و مطمئن شوید Token دسترسی کافی برای Workers AI دارد.
عدم دریافت پاسخ از مدل هوش مصنوعی
  • علت: تصویر منبع قابل دسترس نیست، URL نادرست است یا مدل درخواستی روی حساب Cloudflare فعال نیست.
  • راه‌حل: آدرس تصویر را در مرورگر باز کنید و از نمایش صحیح آن اطمینان حاصل کنید. نام مدل را در مستندات Cloudflare Workers AI تأیید کنید.
آپلود در Cloudinary
  • علت: Upload Preset نامعتبر است یا Credential Cloudinary تنظیم نشده است.
  • راه‌حل: نام Upload Preset را در داشبورد Cloudinary تأیید کنید. Credential HTTP Query Auth را با کلید API صحیح تنظیم کنید.
اتصال Elasticsearch
  • علت: سرور Elasticsearch در دسترس نیست، نام شاخص وجود ندارد یا Credential نادرست است.
  • راه‌حل: آدرس و پورت Elasticsearch را بررسی کنید. شاخص n8n-image-search را در Elasticsearch ایجاد کنید. Credential Elasticsearch API را در n8n تنظیم کنید.
برش تصویر با مقادیر نامعتبر
  • علت: مختصات کادر مرزی خارج از ابعاد تصویر منبع است یا مقادیر منفی دارد.
  • راه‌حل: مدل‌های تشخیص اشیا معمولاً مختصات صحیح برمی‌گردانند. اگر خطا تکرار شد، تصویر منبع را بررسی کنید و آستانه فیلتر را افزایش دهید.

جمع‌بندی

در این مقاله با ساخت یک Workflow جستجوی تصویر هوشمند در n8n آشنا شدیم. این Workflow با ترکیب مدل تشخیص اشیای DETR-ResNet-50 روی Cloudflare Workers AI، پلتفرم میزبانی تصویر Cloudinary و موتور جستجوی Elasticsearch، فرآیند کاملی از شناسایی، برش، آپلود و فهرست‌گذاری تصاویر را به‌صورت خودکار اجرا می‌کند. ساخت سرویس جستجوی تصویر با n8n نشان می‌دهد که چگونه می‌توان با ترکیب چند سرویس ابری و یک ابزار اتوماسیون، راه‌حلی پیشرفته برای چالش بازیابی تصاویر ایجاد کرد. این الگو قابل گسترش به سناریوهای واقعی مانند فروشگاه آنلاین، آرشیو تصویری و تحلیل محتوای بصری است. با شخصی‌سازی مدل، آستانه فیلتر و محل ذخیره‌سازی، می‌توانید این Workflow را با نیازهای خاص پروژه خود تطبیق دهید.

سوالات متداول

آیا برای استفاده از این Workflow به حساب پولی Cloudflare نیاز دارم؟ Cloudflare Workers AI طرح رایگانی با محدودیت مشخص ارائه می‌دهد. برای استفاده آزمایشی و حجم پردازش پایین، طرح رایگان کافی است. برای حجم بالا، طرح‌های پولی فعال‌سازی می‌شوند.

مدل DETR-ResNet-50 چه تفاوتی با YOLO دارد؟ هر دو مدل تشخیص اشیا هستند اما معماری متفاوتی دارند. DETR از معماری Transformer استفاده می‌کند و معمولاً در تشخیص دقیق‌تر اشیای پیچیده عملکرد بهتری دارد. YOLO سرعت بالاتری دارد و برای پردازش لحظه‌ای مناسب‌تر است.

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

چگونه می‌توانم تصاویر برش‌خورده را در Elasticsearch جستجو کنم؟ پس از ذخیره‌سازی، می‌توانید با Query DSL Elasticsearch بر اساس فیلد label جستجو کنید. برای مثال، جستجوی تمام تصاویری که برچسب «person» یا «car» دارند.

آیا این Workflow برای تصاویر بزرگ مناسب است؟ بله، اما مدت زمان پردازش با افزایش حجم تصویر بیشتر می‌شود. برای تصاویر بزرگ، ابتدا تصویر را قبل از ارسال به مدل کاهش اندازه (Resize) دهید تا سرعت پردازش افزایش یابد.

 

GIT

Categories: , ,

توسعه توسط تیم میهن وردپرس