ساختار YOLO چیست و چگونه کار میکند؟ همگانی شدن فناوری هوش مصنوعی و بینایی ماشین (Machine Vision) در دهههای اخیر باعث شده تا تشخیص اشیا به عنوان یکی از مفاهیم بنیادی در حوزهی تکنولوژیهای اطلاعاتی و مهندسی کامپیوتر نقش مهمی را بازی کند. تشخیص اشیا، زیرمجموعهای از فناوری بینایی ماشین یا همان “کامپیوتر ویژن” است که به انسانها این امکان را میدهد تا مانند چشمان خود، دنیای پیرامون خود را ببینند و اشیا را شناسایی کنند. یولو یا YOLO (مخفف You Only Look Once به معنی شما فقط یک بار نگاه میکنید) یک مدل تشخیص شی محبوب است که به دلیل سرعت و دقت آن شناخته شده است. این مفهوم اولین بار توسط جوزف ردمون و همکارانش (Joseph Redmon) معرفی شد. در سال 2016 و از آن زمان تاکنون چندین بار به روزرسانی شده است که آخرین آن YOLO v8 است.
در این مقاله از وبسایت آویر قرار است ما در مورد سیر تکاملی الگوریتم یولو و آخرین ورژن آن صحبت خواهیم کرد. با ما همراه باشید.
یولو چیست؟
یکی از شناختهشده ترین و معروفترین مدلها در هوش مصنوعی (AI) سری مدلهای “یولو” است. YOLO مخفف عبارت You Only Look Once به معنی شما فقط یک بار نگاه میکنید است. یولو مجموعهای محبوب از مدلهای تشخیص اشیا است که برای تشخیص و طبقهبندی اشیاء در زمان واقعی در بینایی کامپیوتری استفاده میشود.
یولو در ابتدا توسط جوزف ردمون، علی فرهادی و سانتوش دیوالا توسعه داده شد و هدفش دستیابی به دقت بالا در تشخیص اشیا با سرعت واقعی است. خانواده مدل یولو متعلق به مدلهای تشخیص شی یک مرحلهای است که کل تصویر را در یک گذر به جلو از یک شبکه عصبی کانولوشنال (CNN) پردازش میکند.
ویژگی کلیدی YOLO، رویکرد تشخیص تکمرحلهای آن است که برای شناسایی اشیاء در زمان واقعی و با دقت بالا طراحی شده است. بر خلاف مدلهای تشخیص دو مرحلهای، مانند R-CNN، که ابتدا مناطق مورد نظر را پیشنهاد میکنند و سپس این مناطق را طبقهبندی میکنند، یولو کل تصویر را در یک گذر پردازش میکند و آن را سریعتر و کارآمدتر میکند.
منبع: Pjreddie. سیستم تشخیص یولو. پردازش تصاویر با YOLO ساده و آسان است. سیستم ما (1) اندازه تصویر ورودی را به 448 × 448 تغییر میدهد، (2) یک شبکه کانولوشنال را روی تصویر اجرا میکند، و (3) تشخیصهای حاصل را با اطمینان مدل آستانه میگیرد.
در این مقاله، روی یولو ورژن 8 (YOLOv8)، آخرین نسخه از سیستم YOLO که توسط Ultralytics توسعه یافته است، تمرکز خواهیم کرد و در مورد تکامل آن از YOLO به YOLOv8، معماری شبکه، ویژگیهای جدید و برنامه های کاربردی آن صحبت خواهیم کرد. علاوه بر این، راهنمای گام به گام نحوه استفاده از ورژن 8 یولو و در آخر نحوه استفاده از آن برای ایجاد حاشیهنویسی به کمک مدل با Encord Annotate ارائه خواهیم کرد.
چه یک مهندس باتجربه یادگیری ماشین باشید و چه تازه شروع به کار کردهاید، این راهنما تمام دانش و ابزارهایی را که برای شروع کار با ورژن 8 یولو نیاز دارید در اختیار شما قرار میدهد.
سیر تکامل از یولو به ورژن 8
تصویر زیر، در یک نگاه سیر تکاملی الگوریتم یولو تا ورژن 8 را نشان میدهد.
ورژن 1 یولو (YOLOv1) اولین مدل رسمی YOLO بود. این مدل از یک شبکه عصبی کانولوشنال منفرد (CNN) برای تشخیص اشیاء در یک تصویر استفاده کرد و در مقایسه با سایر مدلهای تشخیص اشیا نسبتاً سریع بود. با این حال، به اندازه برخی از مدلهای دو مرحلهای در آن زمان دقیق نبود.
ورژن 2 یولو (YOLOv2) در سال 2016 منتشر شد و پیشرفتهایی نسبت به ورژن 1 یولو داشت. ورژن 2 یولو از کادرهای محصورکننده (Anchor Boxes) برای بهبود دقت تشخیص استفاده کرد و لایه Upsample را معرفی کرد که وضوح نقشه ویژگی خروجی را بهبود بخشید.
ورژن 3 یولو (YOLOv3) در سال 2018 با هدف افزایش دقت و سرعت الگوریتم معرفی شد. پیشرفت اولیه در YOLOv3 نسبت به پیشینیان خود استفاده از معماری Darknet-53 بود، که نوعی از معماری ResNet است که به طور خاص برای تشخیص اشیا طراحی شده است.
YOLO v3 همچنین کادرهای محصورکننده را بهبود داد و به مقیاسها و نسبتهای مختلف اجازه داد تا با اندازه و شکل اشیاء شناساییشده بهتر مطابقت داشته باشند. استفاده از شبکههای هرمی ویژگی (FPN) و عملکرد از دست دادن GHM، به همراه طیف وسیعتری از اندازهها و نسبتهای ابعادی اشیا و دقت و پایداری بهبود یافته، از ویژگیهای بارز ورژن 3 یولو بودند.
ورژن 4 یولو (YOLOv4) در سال 2020 توسط بوشکفسکی و همکارانش (Bochkovskiy et. al) معرفی شد و پیشرفتهایی نسبت به YOLOv3 داشت، از جمله این پیشرفتهای میتوان به معرفی یک شبکه ستون فقرات جدید، بهبود فرآیند آموزش و افزایش ظرفیت مدل اشاره کرد. ورژن 4 یولو همچنین Cross mini-Batch Normalization را معرفی کرد که یک روش عادیسازی جدید برای افزایش پایداری فرآیند آموزش طراحی شده است.
ورژن 5 یولو (YOLOv5) که در سال 2020 معرفی شد، بر اساس موفقیت نسخههای قبلی است و به عنوان یک پروژه منبع باز توسط Ultralytics منتشر شد. ورژن 5 یولو از معماری EfficientDet مبتنی بر شبکه EfficientNet و چندین ویژگی و پیشرفت جدید برای دستیابی به عملکرد تشخیص شی بهبود یافته استفاده کرد. YOLOv5 با توجه به ساختار پایتونی منعطف خود در سال 2020 به پیشرفتهترین منبع جهان برای تشخیص اشیا تبدیل شد و همچنین اولین مدلی بود که ما برای یادگیری به کمک مدل در Encord گنجانده بودیم.
ورژن 6 یولو (YOLOv6) روی کارآمدتر کردن سیستم و کاهش ردپای حافظه آن تمرکز داشت. از معماری جدید CNN به نام SPP-Net (شبکه ادغام هرمی فضایی) استفاده کرد. این معماری برای رسیدگی به اشیاء با اندازهها و نسبتهای مختلف طراحی شده است که آن را برای کارهای تشخیص اشیا ایدهآل میکند.
ورژن 7 یولو (YOLOv7) در سال 2022 معرفی شد. یکی از پیشرفتهای کلیدی در YOLOv7 استفاده از معماری جدید CNN به نام ResNeXt است.
ورژن 7 یولو همچنین یک استراتژی آموزشی چند مقیاسی جدید را معرفی میکند که شامل آموزش مدل بر روی تصاویر در مقیاسهای چندگانه و سپس ترکیب پیشبینیها میشود. این استراتژی به مدل کمک میکند تا اشیاء با اندازهها و شکلهای مختلف را بهطور مؤثرتری اداره کند.
در نهایت، YOLOv7 یک تکنیک جدید به نام “زیان کانونی” یا Focal Loss را در خود جای داده است که برای رفع مشکل عدم تعادل کلاس طراحی شده است و اغلب در وظایف تشخیص اشیا ایجاد میشود. عملکرد زیان کانونی به نمونههای سخت، وزن بیشتری میدهد و تأثیر نمونههای آسان را کاهش میدهد.
Source:Youtube
یکی از نسخههای جالب و قابل توجه YOLO9000 بود. جوزف ردمون و علی فرهادی با نام رسمی YOLO9000: Better, Faster, Stronger دور هم جمع شدند تا مدل ورژن 2 یولو را برای شناسایی بیش از 9000 دسته شیء بهبود بخشند.
در طول سال گذشته، کمپانی Ultralytics سخت روی تحقیق و ساخت جدیدترین نسخه YOLO، یعنی ورژن 8 یولو (YOLOv8) کار کرد. YOLOv8 در 10 ژانویه 2023 راهاندازی شد.
چرا باید از ورژن 8 یولو استفاده کنم؟
مهمتریم دلایلی که سبب میشوند توصیه کنیم از ورژن 8 یولو در پروژه بعدی بینایی کامپیوتر خود استفاده کنید عبارتند از:
- یولو ورژن 8 دقت بهتری نسبت به مدل های قبلی یولو دارد.
- آخرین نسخه یولو یعنی YOLOv8 با ویژگیهای جدید بسیاری همراه است، به خصوص CLI و مخزن GitHub کاربرپسند آن.
- از تشخیص شی، تقسیمبندی نمونه، و طبقهبندی تصویر پشتیبانی میکند.
- جامعه اطراف YOLO باورنکردنی است، فقط کافی است هر نسخهای از مدل یولو را جستجو کنید تا صدها آموزش، ویدیو و مقاله را بیابید. علاوه بر این، همیشه میتوانید کمکهای مورد نیاز خود را در جوامعی مانند انجمن MLOps، DCAI و دیگران بیابید.
- آموزش ورژن 8 یولو احتمالاً سریعتر از سایر مدلهای تشخیص شی دو مرحلهای خواهد بود.
البته یک دلیل برای عدم استفاده از YOLOv8 هم وجود دارد:
در حال حاضر ورژن 8 یولو از مدل های آموزشدیده با وضوح 1280 (بر حسب پیکسل) پشتیبانی نمیکند، بنابراین اگر به دنبال استنتاج با وضوح بالا هستید، استفاده از YOLOv8 توصیه نمی شود.
مقایسه ورژن 8 یولو با مدلهای قبلی
تیم Ultralytics یک بار دیگر ورژن 8 یولو را در برابر مجموعه دادههای COCO محک زده و در مقایسه با نسخههای قبلی YOLO در هر پنج اندازه مدل به نتایج چشمگیری دست یافته است.
Source:GitHub
در زمان مقایسه عملکرد نسخهها مختلف یولو و اندازههای مدل در مجموعه داده COCO، میخواهیم معیارهای مختلف را با هم مقایسه کنیم.
- عملکرد: میانگین دقت متوسط (mAP)
- سرعت: سرعت استنتاج (بر اساس فریم بر ثانیه)
- هزینه: اندازه مدل بر حسب FLOP و پارامتر
برای مقایسه تشخیص شی 5 اندازه مدل، مدل YOLOv8m به mAP 50.2% در مجموعه داده COCO دست یافت، در حالی که بزرگترین مدل، YOLOv8x با بیش از دو برابر تعداد پارامترها به 53.9% رسید.
Source:GitHub
به طور کلی، دقت و عملکرد بالای YOLOv8 آن را به یک رقیب قوی برای پروژه بعدی بینایی کامپیوتر شما تبدیل می کند.
چه به دنبال پیادهسازی تشخیص اشیا در یک محصول تجاری باشید، چه بخواهید با آخرین فناوریهای بینایی کامپیوتر آزمایش کنید، YOLOv8 یک مدل پیشرفته است که باید آن را در نظر بگیرید.
در ادامه به تحلیل معماری و طراحی مدل YOLOv8 خواهیم پرداخت.
معماری و طراحی شبکه ورژن 8 یولو
مقاله واقعی در این مورد هنوز منتشر نشده است اما سازندگان ورژن 8 یولو قول دادهاند که به زودی مقاله منتشر خواهد شد.
بنابراین ما دید کلی خوبی از روشهای مورد استفاده در حین ایجاد نداریم و همچنین به مطالعات فرسایشی انجامشده توسط تیم دسترسی نداریم. به محض انتشار نسخه به روز شده آن را منتشر خواهیم کرد.
اما خوشبختانه میتوانیم اطلاعات زیادی را به صورت آنلاین و در مخزن گیت هات پیدا کنیم.
طرح YOLOv8
در اینجا قرار نیست زیاد به جزئیات معماری YOLOv8 بپردازیم، اما بعضی از تفاوتهای عمده را نسبت به تکرارهای قبلی پوشش خواهیم داد.
طرح زیر توسط RangeKing در گیت هاب ساخته شده است و یک راه عالی برای تجسم معماری ورژن 8 یولو است.
Source:GitHub
پیچیدگیهای جدید در ورژن 8 یولو
طبق پست مقدماتی Ultralytics، مجموعهای از به روز رسانیها و پیچیدگیهای جدید در معماری YOLOv8 وجود دارد:
ستون فقرات سیستم با معرفی C2f و جایگزینی C3 دچار تغییراتی شد. اولین کانولوشن 6×6 در stem به کانولوشن 3×3 تبدیل شد. در C2f، خروجی های Bottleneck (که ترکیبی از دو تبدیل 3×3 با اتصالات باقیمانده است) ترکیب میشوند، در حالی که در C3 تنها خروجی آخرین Bottleneck استفاده میشود.
- دو کانولوشن (#10 و #14 در پیکربندی ورژن 5 یولو) حذف شد.
- Bottleneck در ورژن 8 یولو مانند ورژن 5 یولو باقی مانده، با این تفاوت که اندازه هسته کانولوشن اول از 1×1 به 3×3 تغییر کرد. این تغییر نشان دهنده تغییر به سمت بلوک ResNet است که در سال 2015 تعریف شده است.
تشخیص بدون کادر محصورکننده
تشخیص بدون کادر محصورکننده (Anchor-free detection) زمانی است که یک مدل تشخیص شی مستقیماً مرکز یک شی را به جای افست از یک کادر محصورکننده شناختهشده پیشبینی می کند.
کادرهای محصورکننده مجموعهای از کادرهای از پیش تعریفشده با ارتفاع و عرض خاص هستند که برای شناسایی کلاسهای شی با مقیاس و نسبت ابعاد مورد نظر استفاده میشوند. این کادرها بر اساس اندازه اشیاء در مجموعه داده آموزشی انتخاب میشوند و در طول تشخیص روی تصویر به صورت کادربندی قرار میگیرند.
شبکه احتمال و ویژگیهایی مانند پس زمینه، IoU و offsets را برای هر تصویر کادربندیشدهای خروجی میدهد که برای تنظیم کادر محصورکننده استفاده می شود. کادرهای محصورکننده چندگانه را میتوان برای اندازه های مختلف اشیاء تعریف کرد که به عنوان نقطه شروع ثابت برای حدس زدن کادر مرزی عمل میکنند.
مزیت تشخیص بدون محصورکننده این است که انعطاف پذیرتر و کارآمدتر است، زیرا نیازی به مشخصات دستی انکر باکس (کادر محصورکننده) ندارد؛ انتخاب انکر باکس میتواند دشوار باشد و منجر به نتایج غیربهینه در مدل های قبلی YOLO مانند ورژن 1 و ورژن 2 شود.
پیاده سازی یولو ورژن 8
در ادامه نحوه استفاده و پیاده سازی YOLOv8 در گردش کار خود را بررسی کنیم. این مدل با مدلهای از پیش آموزشدیده زیر همراه است که میتوان از آنها در پروژههای بینایی کامپیوتر برای دستیابی به عملکرد بهتر مدل استفاده کرد:
- مدلهای تقسیمبندی نمونه که روی مجموعه دادههای تقسیمبندی COCO با وضوح تصویر ۶۴۰ آموزش دیدهاند.
- مدلهای طبقهبندی تصویر که روی مجموعه داده ImageNet با وضوح تصویر 224 از پیش آموزش داده شدهاند.
- مدلهای تشخیص شی که بر روی مجموعه دادههای تشخیص COCO با وضوح تصویر ۶۴۰ آموزش دیدهاند.
در بخش بعدی نحوه دسترسی به یولو از طریق CLI، پایتون، محیط و در نهایت در پلتفرم Encord را پوشش خواهیم داد.
چگونه از YOLOv8 CLI استفاده کنم؟
ورژن 8 یولو به راحتی از طریق CLI قابل دسترسی است و در هر نوع مجموعه داده استفاده می شود.
!yolo task=detect \ mode=predict \ model=yolov8n.pt \ source="image.jpg"
برای استفاده از آن بهراحتی دستورات زیر را وارد کنید:
- task in [detect, classify, segment]
- mode in [train, predict, val, export]
- model as an uninitialized .yaml or as a previously trained .pt file
- Source as the path/to/data
آیا می توانم ورژن 8 یولو را با نصبکننده بسته پایتون انجام دهم؟
ورژن 8 یولو مکمل CLI است و به عنوان مدیر پکیجهای پایتون نیز شناخته میشود که برای تمام محیطهای پایتون مناسب است. این امر توسعه محلی را کمی سختتر میکند، اما همه احتمالات مربوط به یولو ورژن 8 را در کد پایتون شما باز میکند.
می توانید آن را از GitHub کلون کنید:
git clone https://github.com/ultralytics/ultralytics.git
یا از طریق پیپ نصب PIP انجام دهید:
pip install ultralytics
پس از نصب پیپ می توانید یک مدل را وارد و در محیط پایتون مورد علاقه خود استفاده کنید:
from ultralytics import YOLO
# Load a model
model = YOLO(“yolov8n.pt”) # load a pretrained model
# Use the model
results = model.train(data=”coco128.yaml”, epochs=5) # train the model
results = model.val() # evaluate model performance on the validation data set
results = model(“https://ultralytics.com/images/cat.jpg”) # predict on an image
success = YOLO(“yolov8n.pt”).export(format=”onnx”) # export a model to ONNX
فرمت حاشیهنویسی یولو ورژن 8 چیست؟
YOLOv8 دارای یک فرمت حاشیه نویسی ساده است که همان قالب حاشیهنویسی PyTorch TXT برای یولو ورژن 5 است که نسخه اصلاح شده فرمت حاشیه نویسی Darknet است.
هر نمونه تصویر یک فایل .txt با یک خط برای هر کادر محدود دارد. فرمت هر ردیف به صورت زیر ارائه می شود:
class_id center_x center_y width height
توجه داشته باشید که هر فیلد با فاصله محدود شده است و مختصات از صفر به یک نرمال میشوند.
نمونه فرمت حاشیه نویسی YOLOv8
1: 1 0.317 0.30354206008 0.114 0.173819742489
2: 1 0.694 0.33726094420 0.156 0.23605150214
3: 1 0.395 0.32257467811 0.13 0.195278969957
پوشه data.yaml حاوی اطلاعاتی است که مدل برای مکانیابی تصاویر و نگاشت نام کلاسها به شناسههای کلاس استفاده میکند.
train: ../train/images
test: ../test/images
val: ../valid/images
nc: 5
names: ['fish’, 'cat', 'person', ‘dog’, ‘shark’]
استفاده از ورژن 8 یولو برای برچسب زدن به کمک مدل
یکی دیگر از کاربردهای جالب یولو ورژن 8 به عنوان یک آشکارساز شی برای سرعت بخشیدن به لیبلینگ است. همان اندازه که ChatGPT زمان لازم برای نوشتن ایمیل یا کد را افزایش داده است، یولو ورژن 8 میز برای پیادهسازی به عنوان ستون مهم برچسبگذاری به کمک هوش مصنوعی عالی و کاربردی است.
Encord Annotate از یک رویکرد جدید مبتنی بر Micro-models پشتیبانی میکند، مدلهایی که بهطور هدفمند بیش از حد برازش شدهاند و فقط روی چند برچسب برای موارد استفاده هدفمند آموزش داده شدهاند.
ما می توانیم این کار را در چند مرحله کوتاه زیر انجام دهیم:
مرحله 1:
تصاویر ورودی خود را که میخواهید از طریق SDK از فضای ذخیرهسازی ابری خود (مانند S3، Azure، GCP) یا از طریق رابط کاربری گرافیکی در پلتفرم Encord، آپلود کنید.
مرحله 2:
20 نمونه از هر شی سفارشی را – که در انتولوژی (هستیشناسی) خود تعریف کردهاید – برچسب بزنید (در این مثال از هواپیماهای مجموعه داده تشخیص هواپیما ایرباس استفاده خواهیم کرد).
مرحله 3:
به سمت آموزش مدل حرکت کنید. در پلتفرم، به برگه مدل رفته و آموزش یک Micro-model را با ستون YOLOv8 آغاز میکنید (یک مدل تشخیص شی برای بیشبرازش).
نکته: همچنین می توانید مدل های Micro را برای تقسیمبندی و طبقهبندی تصویر آموزش دهید.
مرحله 4:
چند دقیقه صبر کنید تا مدل در حال آموزش نمونههای اولیه شما قرار بگیرد.
مرحله 5:
استنتاج را روی نمونههای داده های آموزشی بعدی خود اجرا کنید. ما آستانه اطمینان 60 درصد را انتخاب میکنیم. زمانی که مدل پیشبینیهایی را اجرا کرد، بهطور خودکار به برچسبها تبدیل میشود.
پس از چند ثانیه می توانید برچسبهای جدید را در ویرایشگر مشاهده کنید:
مرحله 6:
الگوریتم یولو ورژن 8 را به طور مکرر آموزش دهید تا Micro-model را یک بار تکرار کنید. با استفاده از این استراتژی، شما در کمترین زمان، مجموعه دادههای با کیفیتی را برای مدلهای بینایی کامپیوتر خود خواهید ساخت.
مدلهای ریز برای موارد استفاده خاص بهترین هستند؛ مواردی که در آن اشیایی که حاشیهنویسی میکنید، از نظر معنایی مشابه هستند.
اگر میخواهید ببینید که آیا این مدلها برای موارد استفاده شما مفید هستند یا خیر، همین حالا با شرکت هوش مصنوعی آویر تماس بگیرید.
و در پایان این که…
در این مقاله، مروری بر سیر تکاملی الگوریتم یولو، از YOLOv1 به YOLOv8 ارائه کردهایم و به معماری شبکه، ویژگیهای جدید و کاربردهای آن پرداختهایم. علاوه بر این، ما یک راهنمای گام به گام در مورد نحوه استفاده از ورژن 8 یولو برای تشخیص اشیا و نحوه ایجاد حاشیهنویسی به کمک مدل با Encord Annotate ارائه کردیم.
ما در آویر به شرکتهای بینایی کامپیوتر کمک میکنیم تا مدلهای بهتری بسازند و مجموعه دادههای آموزشی بهتری داشته باشد.
سوالات متداول در مورد یولو ورژن 8
YOLOv8 آخرین ورژن از مدل تشخیص شیء YOLO است که با هدف ارائه دقت و کارایی بهبود یافته نسبت به نسخههای قبلی انجام شده است. بهروزرسانیهای کلیدی شامل معماری شبکه بهینهتر، طراحی بازبینی شده انکر باکس، و عملکرد اصلاحشده برای افزایش دقت است.
YOLOv8 دقت بهبود یافتهای را در مقایسه با نسخه های قبلی YOLO نشان داده است و با مدلهای پیشرفته تشخیص اشیا قابل رقابت است.
YOLOv8 برای اجرای کارآمد بر روی سختافزار استاندارد طراحی شده است و آن را به یک راه حل مناسب برای کارهای تشخیص اشیاء در زمان واقعی تبدیل میکند.
کادرهای محدودکننده یا انکرباکسها در یولو ورژن 8 برای تطبیق باندینگ باکسهای پیشبینیشده با باندینگ باکسهایGround truth، استفاده میشوند و دقت کلی فرآیند تشخیص شی را بهبود میبخشند.
بله، YOLOv8 را میتوان روی مجموعه دادههای سفارشی تنظیم کرد تا دقت آن برای وظایف تشخیص اشیاء خاص افزایش یابد.
بله، پایگاه کد YOLOv8 منبع باز است و برای اهداف تحقیق و توسعه در گیت هاب در اینجا در دسترس است.
برای استفاده از YOLOv8، به یک کامپیوتر با GPU، پشتیبانی از چارچوب یادگیری عمیق (مانند PyTorch یا TensorFlow) و دسترسی به YOLOv8 GitHub نیاز دارید.
منابع زیادی برای یادگیری در مورد ورژن 8 یولو وجود دارد، از جمله مقالات تحقیقاتی، آموزشهای آنلاین و دورههای آموزشی. توصیه میکنم یوتیوب را بررسی کنید!