<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>بایگانی‌های پایتون | نوین هاب</title>
	<atom:link href="https://tarahanenovin.ir/blog/tag/%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86/feed/" rel="self" type="application/rss+xml" />
	<link>https://tarahanenovin.ir/blog/tag/پایتون/</link>
	<description>بلاگ طراحان نوین</description>
	<lastBuildDate>Thu, 16 Jul 2026 20:27:44 +0000</lastBuildDate>
	<language>fa-IR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0.2</generator>
	<item>
		<title>آموزش ساخت برنامه تشخیص شی با YOLOv8 از صفر تا صد و Train مدل اختصاصی</title>
		<link>https://tarahanenovin.ir/blog/%d8%a2%d9%85%d9%88%d8%b2%d8%b4-%d8%b3%d8%a7%d8%ae%d8%aa-%d8%a8%d8%b1%d9%86%d8%a7%d9%85%d9%87-%d8%aa%d8%b4%d8%ae%db%8c%d8%b5-%d8%b4%db%8c-%d8%a8%d8%a7-yolov8-%d8%a7%d8%b2-%d8%b5%d9%81%d8%b1-%d8%aa/</link>
					<comments>https://tarahanenovin.ir/blog/%d8%a2%d9%85%d9%88%d8%b2%d8%b4-%d8%b3%d8%a7%d8%ae%d8%aa-%d8%a8%d8%b1%d9%86%d8%a7%d9%85%d9%87-%d8%aa%d8%b4%d8%ae%db%8c%d8%b5-%d8%b4%db%8c-%d8%a8%d8%a7-yolov8-%d8%a7%d8%b2-%d8%b5%d9%81%d8%b1-%d8%aa/#respond</comments>
		
		<dc:creator><![CDATA[TNVN]]></dc:creator>
		<pubDate></pubDate>
				<category><![CDATA[آموزش AI]]></category>
		<category><![CDATA[ابزارهای AI]]></category>
		<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[موبایل]]></category>
		<category><![CDATA[هوش مصنوعی]]></category>
		<category><![CDATA[ویندوز]]></category>
		<category><![CDATA[yolo]]></category>
		<category><![CDATA[yoloV8]]></category>
		<category><![CDATA[آموزش yolo]]></category>
		<category><![CDATA[پایتون]]></category>
		<category><![CDATA[تشخیص شی]]></category>
		<guid isPermaLink="false">https://tarahanenovin.ir/blog/?p=102</guid>

					<description><![CDATA[<p>تشخیص اشیا یکی از مهم ترین کاربردهای بینایی ماشین است که در حوزه هایی مانند نظارت تصویری، کنترل کیفیت محصولات، شمارش کالا، مدیریت ترافیک، کشاورزی هوشمند و اپلیکیشن های موبایل استفاده می شود. مدل YOLOv8 به دلیل سرعت مناسب، دقت قابل قبول و رابط برنامه نویسی ساده، یکی از گزینه های کاربردی برای پیاده سازی این پروژه ها محسوب می شود. در این آموزش، ساخت یک برنامه تشخیص شی با YOLOv8 را از نصب ابزارهای لازم تا آماده سازی داده، برچسب گذاری تصاویر، Train مدل اختصاصی و اجرای تشخیص روی تصویر، ویدیو و وب کم بررسی می کنیم. در پایان نیز روش ارزیابی و خروجی گرفتن از مدل آموزش دیده را توضیح می دهیم. تشخیص شی چیست و چه تفاوتی با دسته بندی تصویر دارد؟ در دسته بندی تصویر، مدل مشخص می کند که تصویر به کدام کلاس تعلق دارد. برای مثال، مدل تشخیص می دهد که تصویر شامل یک خودرو است. اما در تشخیص شی، مدل علاوه بر شناسایی نوع شی، محل قرارگیری آن را نیز با یک کادر محدود کننده مشخص می کند. خروجی یک مدل تشخیص شی معمولا شامل اطلاعات زیر است: نام یا شناسه کلاس مختصات کادر محدود کننده میزان اطمینان مدل تعداد اشیای شناسایی شده موقعیت هر شی در تصویر برای مثال، اگر یک تصویر شامل دو خودرو، یک موتورسیکلت و سه نفر باشد، مدل تشخیص شی باید هر کدام را به صورت جداگانه پیدا کند و برای آن ها کادر و برچسب نمایش دهد. YOLOv8 چیست؟ YOLO مخفف عبارت You Only Look Once است. این خانواده از مدل ها تصویر را در یک مرحله پردازش می کنند و به همین دلیل برای تشخیص اشیا با سرعت بالا مناسب هستند. YOLOv8 توسط Ultralytics ارائه شده و از وظایف مختلف بینایی ماشین پشتیبانی می کند: تشخیص اشیا یا Object Detection دسته بندی تصویر یا Classification قطعه بندی تصویر یا Segmentation تخمین وضعیت بدن یا Pose Estimation تشخیص اشیای چرخیده یا Oriented Bounding Box ردیابی اشیا در ویدیو رابط پایتون Ultralytics، فرایند Train، اعتبارسنجی، پیش بینی و خروجی گرفتن از مدل را ساده می کند. برای مشاهده ساختار کلی این ابزار می توانید به مستندات رسمی Ultralytics مراجعه کنید. نکته: اگرچه نسخه های جدیدتری از خانواده YOLO منتشر شده اند، YOLOv8 همچنان در بسیاری از پروژه های آموزشی و عملی استفاده می شود. بهتر است پیش از شروع یک پروژه تجاری، مدل های موجود را از نظر سرعت، دقت، مجوز و سازگاری با سخت افزار ارزیابی کنید. چرا از YOLOv8 برای تشخیص اشیا استفاده کنیم؟ مهم ترین مزایای YOLOv8 عبارت اند از: نصب و راه اندازی ساده امکان استفاده با زبان پایتون پشتیبانی از پردازنده مرکزی و کارت گرافیک وجود مدل های از پیش آموزش دیده امکان Train مدل روی داده اختصاصی قابلیت پردازش تصویر، ویدیو و وب کم امکان خروجی گرفتن با فرمت هایی مانند ONNX مناسب برای ساخت نمونه اولیه و پروژه های واقعی البته کیفیت نهایی مدل فقط به معماری YOLO وابسته نیست. کیفیت تصاویر، دقت برچسب گذاری، تنوع داده ها، انتخاب پارامترهای Train و سخت افزار نیز تاثیر مستقیمی بر نتیجه دارند. پیش نیازهای ساخت برنامه تشخیص شی با YOLOv8 برای اجرای این آموزش به ابزارهای زیر نیاز داریم: Python نسخه 3.8 یا بالاتر pip برای نصب کتابخانه ها یک ویرایشگر مانند VS Code یا PyCharm کتابخانه Ultralytics کتابخانه OpenCV مجموعه تصاویر برچسب گذاری شده برای Train مدل اختصاصی کارت گرافیک NVIDIA به صورت اختیاری استفاده از کارت گرافیک برای اجرای مدل الزامی نیست، اما سرعت آموزش را به شکل محسوسی افزایش می دهد. اگر سیستم مناسبی در اختیار ندارید، می توانید از Google Colab یا سرور دارای GPU استفاده کنید. ساخت محیط پروژه YOLOv8 ابتدا یک پوشه برای پروژه ایجاد کنید: mkdir yolo-object-detection cd yolo-object-detection سپس محیط مجازی پایتون را بسازید: python -m venv venv فعال سازی محیط مجازی در ویندوز: venv\Scripts\activate فعال سازی در لینوکس و macOS: source venv/bin/activate اکنون کتابخانه های مورد نیاز را نصب کنید: pip install ultralytics opencv-python برای بررسی نصب صحیح Ultralytics می توانید دستور زیر را اجرا کنید: yolo checks همچنین نسخه نصب شده را از طریق پایتون بررسی کنید: import ultralytics print(ultralytics.__version__) انتخاب مدل مناسب YOLOv8 مدل های تشخیص شی YOLOv8 در اندازه های مختلف ارائه شده اند: مدل سرعت دقت نسبی مصرف منابع کاربرد پیشنهادی YOLOv8n بسیار بالا پایه بسیار کم موبایل، وب کم و سیستم ضعیف YOLOv8s بالا مناسب کم پروژه های سبک و نمونه اولیه YOLOv8m متوسط بهتر متوسط پروژه های عمومی YOLOv8l کمتر بالا زیاد سرور و پردازش دقیق تر YOLOv8x کمترین بالاتر بسیار زیاد سیستم قدرتمند و پردازش آفلاین حرف n در نام مدل به Nano، حرف s به Small، حرف m به Medium، حرف l به Large و حرف x به Extra Large اشاره دارد. برای شروع، مدل yolov8n.pt انتخاب مناسبی است؛ زیرا حجم کمی دارد و سریع اجرا می شود. پس از تکمیل نمونه اولیه می توانید مدل های بزرگ تر را آزمایش کنید. اجرای اولین تشخیص شی با مدل آماده مدل های آماده YOLOv8 روی مجموعه داده COCO آموزش دیده اند و توانایی تشخیص کلاس های عمومی مانند انسان، خودرو، اتوبوس، گربه، سگ، دوچرخه و صندلی را دارند. فایل زیر را با نام predict_image.py ایجاد کنید: from ultralytics import YOLO model = YOLO("yolov8n.pt") results = model.predict( source="test.jpg", conf=0.4, save=True ) print(results) در اولین اجرا، فایل وزن مدل به صورت خودکار دانلود می شود. تصویر پردازش شده نیز در مسیر runs/detect/predict ذخیره خواهد شد. پارامتر conf حداقل میزان اطمینان را تعیین می کند. اگر مقدار آن برابر 0.4 باشد، تشخیص هایی که اطمینان کمتر از 40 درصد دارند کنار گذاشته می شوند. نمایش نتیجه تشخیص با OpenCV اگر بخواهیم نتیجه را در یک پنجره نمایش دهیم، می توانیم از OpenCV استفاده کنیم: import cv2 from ultralytics import YOLO model = YOLO("yolov8n.pt") results = model.predict(source="test.jpg", conf=0.4) annotated_frame = results[0].plot() cv2.imshow("YOLOv8 Detection", annotated_frame) cv2.waitKey(0) cv2.destroyAllWindows() متد plot() کادرها، نام کلاس ها و میزان اطمینان مدل را روی تصویر ترسیم می کند. استخراج اطلاعات اشیای شناسایی شده در بسیاری از پروژه ها فقط نمایش تصویر کافی نیست. ممکن است بخواهیم مختصات، نام کلاس و میزان اطمینان هر شی را در پایگاه داده ذخیره کنیم یا برای بخش دیگری از نرم افزار ارسال کنیم. from ultralytics import YOLO model = YOLO("yolov8n.pt") result = model("test.jpg")[0] for box in result.boxes: class_id = int(box.cls[0]) confidence = float(box.conf[0]) x1, y1, x2, y2 = box.xyxy[0].tolist() class_name = model.names[class_id] print({ "class_id": class_id, "class_name": class_name, "confidence": round(confidence, 3), "box": [x1, y1, x2, y2] }) مختصات x1 و y1 گوشه بالا و سمت چپ کادر هستند. مقادیر x2 و y2 نیز گوشه پایین و سمت راست را نشان می دهند. ساخت برنامه تشخیص شی با YOLOv8 و وب کم برای تشخیص اشیا به صورت زنده، شماره دوربین را به عنوان ورودی مشخص می کنیم. دوربین اصلی سیستم معمولا با شماره صفر در دسترس است. import cv2 from ultralytics import YOLO model = YOLO("yolov8n.pt") camera = cv2.VideoCapture(0) if not camera.isOpened(): raise RuntimeError("Camera could not be opened.") while True: success, frame = camera.read() if not success: break results = model.predict( source=frame, conf=0.4, verbose=False ) annotated_frame = results[0].plot() cv2.imshow("Real-time Object Detection", annotated_frame) if cv2.waitKey(1) &#38; 0xFF == ord("q"): break camera.release() cv2.destroyAllWindows() با فشردن کلید q برنامه متوقف می شود. اگر چند دوربین به سیستم متصل است، می توانید مقدار 0 را به 1 یا 2 تغییر دهید. برای افزایش سرعت پردازش می توان اندازه تصویر ورودی را کاهش داد، مدل کوچک تری انتخاب کرد یا بعضی فریم ها را نادیده گرفت. Train مدل اختصاصی YOLOv8 چه زمانی لازم است؟ مدل آماده برای تشخیص اشیای عمومی مناسب است. اما اگر هدف شما تشخیص محصول خاص، قطعه صنعتی، نقص سطح، ابزار پزشکی، نوع گیاه یا شی محلی باشد، باید مدل اختصاصی آموزش دهید. برای مثال، مدل آماده ممکن است یک بطری را تشخیص دهد؛ اما نمی تواند بدون آموزش اختصاصی مدل، برند یا نوع بسته بندی مورد نظر شما را با دقت کافی شناسایی کند. مراحل کلی Train مدل اختصاصی عبارت اند از: تعریف کلاس ها جمع آوری تصاویر پاک سازی داده ها برچسب گذاری اشیا تقسیم داده ها ساخت فایل YAML اجرای Train ارزیابی مدل آزمایش روی داده واقعی خروجی گرفتن و استقرار مدل جمع آوری دیتاست برای تشخیص شی کیفیت دیتاست، مهم ترین عامل موفقیت در آموزش مدل است. تصاویر باید شرایط واقعی استفاده از برنامه را پوشش دهند. در زمان جمع آوری داده به موارد زیر توجه کنید: تصاویر را از زاویه های مختلف تهیه کنید. فاصله های متفاوت از شی را در نظر بگیرید. نور روز، نور کم و سایه را پوشش دهید. پس زمینه های متنوع داشته باشید. نمونه های کوچک، بزرگ، ناقص و پوشیده شده را اضافه کنید. تصاویر بسیار مشابه و تکراری را محدود کنید. برای تمام کلاس ها تعداد مناسبی نمونه تهیه کنید. تصاویر بدون شی هدف را نیز در صورت نیاز اضافه کنید. تعداد دقیق تصاویر به پیچیدگی مسئله بستگی دارد. برای یک نمونه اولیه ساده ممکن است چند صد تصویر نتیجه اولیه ایجاد کند، اما پروژه های حساس و محیط های متنوع معمولا به داده بسیار بیشتری نیاز دارند. برچسب گذاری تصاویر در فرمت YOLO در تشخیص شی، باید دور هر شی یک کادر رسم شود و نام کلاس آن مشخص گردد. ابزارهای مختلفی برای برچسب گذاری وجود دارند، از جمله: CVAT Label Studio LabelImg Roboflow هر تصویر در فرمت YOLO یک فایل متنی هم نام دارد. برای مثال: images/train/product_001.jpg labels/train/product_001.txt هر خط فایل برچسب از ساختار زیر پیروی می کند: class_id x_center y_center width height نمونه: 0 0.512 0.430 0.280 0.360 1 0.225 0.610 0.170 0.240 مختصات و ابعاد در این فرمت نرمال شده اند و مقدار آن ها معمولا بین صفر و یک قرار دارد. شماره کلاس ها نیز از صفر شروع می شود. اگر دو شی در یک تصویر وجود داشته باشد، فایل برچسب باید دو خط داشته باشد. اگر تصویر هیچ شی هدفی ندارد، فایل برچسب آن می تواند خالی باشد. ساختار استاندارد دیتاست YOLOv8 ساختار پیشنهادی پروژه به صورت زیر است: yolo-object-detection/ ├── dataset/ │ ├── images/ │ │ ├── train/ │ │ ├── val/ │ │ └── test/ │ ├── labels/ │ │ ├── train/ │ │ ├── val/ │ │ └── test/ │ └── data.yaml ├── train.py ├── predict.py └── requirements.txt داده ها معمولا به سه بخش تقسیم می شوند: train: داده های مورد استفاده برای یادگیری مدل val: داده های مورد استفاده برای ارزیابی حین Train test: داده های نهایی برای بررسی عملکرد واقعی یک تقسیم بندی متداول می تواند 70 درصد برای Train، حدود 20 درصد برای Validation و 10 درصد برای Test باشد. این نسبت ثابت نیست و با توجه به اندازه دیتاست تغییر می کند. تصاویر یک ویدیو یا تصاویر بسیار مشابه را به صورت تصادفی بین این بخش ها پخش نکنید. در غیر این صورت، مدل در بخش ارزیابی با نمونه هایی تقریبا مشابه داده های Train روبرو می شود و نتیجه غیرواقعی به دست می آید. ساخت فایل data.yaml فایل data.yaml مسیر دیتاست و نام کلاس ها را مشخص می کند: path: dataset train: images/train val: images/val test: images/test names: 0: helmet 1: person 2: vest در این مثال سه کلاس کلاه ایمنی، انسان و جلیقه تعریف شده اند. ترتیب نام کلاس ها باید دقیقا با شناسه های موجود در فایل های برچسب مطابقت داشته باشد. اگر مسیر نسبی برای سیستم شما درست کار نکرد، می توانید مسیر کامل دیتاست را در مقدار path قرار دهید. Train مدل YOLOv8 با پایتون فایل train.py را ایجاد کنید: from ultralytics import YOLO model = YOLO("yolov8n.pt") results = model.train( data="dataset/data.yaml", epochs=100, imgsz=640, batch=16, project="runs/custom", name="helmet_detector", patience=20, workers=4, device=0 ) print(results) در این روش آموزش از وزن های از پیش آموزش دیده شروع می شود. این رویکرد که انتقال یادگیری نام دارد، معمولا با داده و زمان کمتر به نتیجه بهتری نسبت به شروع کاملا تصادفی می رسد. راهنمای کامل گزینه های آموزش در صفحه Train مدل در مستندات Ultralytics در دسترس است. مفهوم پارامترهای Train پارامترهای مهم کد بالا عبارت اند از: data: مسیر فایل تنظیمات دیتاست epochs: تعداد دوره های آموزش imgsz: اندازه ورودی تصویر batch: تعداد تصاویر پردازش شده در هر مرحله project: پوشه اصلی ذخیره نتایج name: نام اجرای فعلی patience: توقف آموزش در صورت بهبود نیافتن نتیجه workers: تعداد پردازش های بارگذاری داده device: سخت افزار مورد استفاده برای استفاده از اولین کارت گرافیک NVIDIA مقدار device=0 را قرار دهید. برای اجرای Train روی پردازنده مرکزی می توانید از مقدار زیر استفاده کنید: device="cpu" اگر با خطای کمبود حافظه GPU مواجه شدید، مقدار batch یا imgsz را کاهش دهید. آموزش YOLOv8 با خط فرمان همان فرایند را می توان بدون ساخت فایل پایتون اجرا کرد: yolo detect train data=dataset/data.yaml model=yolov8n.pt epochs=100 imgsz=640 batch=16 استفاده از خط فرمان برای آزمایش سریع پارامترها مناسب است. در پروژه های قابل نگهداری، ذخیره تنظیمات داخل فایل پایتون یا فایل پیکربندی، تکرار آزمایش ها را ساده تر می کند. آیا می توان YOLOv8 را از وزن تصادفی Train کرد؟ بله. اگر منظور از آموزش از صفر، استفاده نکردن از وزن های آماده باشد، باید فایل معماری مدل را بارگذاری کنید: from ultralytics import YOLO model = YOLO("yolov8n.yaml") model.train( data="dataset/data.yaml", epochs=300, imgsz=640, batch=16, device=0 ) تفاوت اصلی این دو روش در فایل ورودی است: YOLO("yolov8n.pt") # انتقال یادگیری با وزن آماده YOLO("yolov8n.yaml") # آموزش از وزن تصادفی برای بیشتر دیتاست های اختصاصی، انتقال یادگیری انتخاب منطقی تری است. آموزش از وزن تصادفی معمولا به دیتاست بزرگ تر، دوره های بیشتر و منابع پردازشی قابل توجه نیاز دارد. فایل های خروجی Train مدل پس از پایان آموزش، نتایج در پوشه اجرای مدل ذخیره می شوند. دو فایل مهم عبارت اند از: weights/best.pt weights/last.pt فایل best.pt بهترین وزن ثبت شده براساس معیارهای اعتبارسنجی است. فایل last.pt وزن مدل در آخرین دوره آموزش را نگهداری می کند. برای پیش بینی نهایی معمولا از best.pt استفاده می شود: from ultralytics import YOLO model = YOLO("runs/custom/helmet_detector/weights/best.pt") model.predict(source="sample.jpg", conf=0.4, save=True) ادامه Train متوقف شده اگر آموزش به دلیل قطع برق، بسته شدن برنامه یا محدودیت زمانی متوقف شد، می توان آن را از آخرین وضعیت ادامه داد: from ultralytics import YOLO model = YOLO("runs/custom/helmet_detector/weights/last.pt") model.train(resume=True) برای امکان ادامه صحیح، فایل ها و تنظیمات اجرای قبلی را حذف یا جابه جا نکنید. ارزیابی مدل آموزش دیده صرف مشاهده چند تصویر برای تایید کیفیت مدل کافی نیست. مدل باید با داده هایی ارزیابی شود که در آموزش ندیده است. from ultralytics import YOLO model = YOLO("runs/custom/helmet_detector/weights/best.pt") metrics = model.val(data="dataset/data.yaml") print(metrics) معیارهای مهم ارزیابی عبارت اند از: Precision Precision نشان می دهد چه مقدار از تشخیص های مدل واقعا صحیح بوده اند. پایین بودن Precision معمولا به معنی زیاد بودن تشخیص های اشتباه است. Recall Recall مشخص می کند مدل چه مقدار از اشیای واقعی را پیدا کرده است. پایین بودن Recall نشان می دهد مدل تعداد زیادی از اشیا را از دست می دهد. mAP معیار mAP عملکرد کلی مدل را در کلاس ها و آستانه های مختلف بررسی می کند. دو معیار mAP50 و mAP50-95 معمولا در گزارش نتایج نمایش داده می شوند. نباید تنها براساس یک عدد درباره کیفیت مدل تصمیم گرفت. عملکرد هر کلاس، ماتریس سردرگمی، شرایط محیط واقعی و هزینه خطا نیز باید بررسی شوند. آزمایش مدل اختصاصی روی ویدیو برای اجرای مدل روی یک فایل ویدیویی می توانید از کد زیر استفاده کنید: from ultralytics import YOLO model = YOLO("runs/custom/helmet_detector/weights/best.pt") model.predict( source="input.mp4", conf=0.4, iou=0.5, save=True, show=False ) پارامتر iou در کنترل هم پوشانی کادرهای تشخیص داده شده موثر است. انتخاب مقدار مناسب برای conf و iou باید براساس داده Validation و نیاز پروژه انجام شود. تشخیص فقط کلاس های مشخص اگر مدل چند کلاس دارد، اما فقط به بعضی از آن ها نیاز دارید، شناسه کلاس ها را مشخص کنید: results = model.predict( source="input.mp4", classes=[0, 2], conf=0.4, save=True ) در این مثال فقط کلاس های صفر و دو پردازش می شوند. شناسه کلاس ها باید با فایل data.yaml مطابقت داشته باشد. شمارش اشیای شناسایی شده کد زیر تعداد اشیای هر کلاس را در یک تصویر محاسبه می کند: from collections import Counter from ultralytics import YOLO model = YOLO("runs/custom/helmet_detector/weights/best.pt") result = model("sample.jpg", conf=0.4)[0] class_names = [ model.names[int(class_id)] for class_id in result.boxes.cls.tolist() ] counts = Counter(class_names) for class_name, count in counts.items(): print(f"{class_name}: {count}") برای شمارش اشیا در ویدیو باید به مفهوم ردیابی نیز توجه کرد. شمارش ساده در هر فریم باعث می شود یک شی چندین بار شمرده شود. در چنین شرایطی باید برای هر شی یک شناسه ردیابی ایجاد شود و عبور آن از خط یا ناحیه مشخص بررسی گردد. خروجی گرفتن از مدل برای استفاده در برنامه های دیگر برای استفاده از مدل در محیط های مختلف می توان آن را به فرمت مناسب تبدیل کرد. برای نمونه، خروجی ONNX به صورت زیر ساخته می شود: from ultralytics import YOLO model = YOLO("runs/custom/helmet_detector/weights/best.pt") model.export( format="onnx", imgsz=640, dynamic=True ) فرمت های قابل استفاده با توجه به نسخه کتابخانه و محیط اجرا متفاوت هستند. برخی گزینه های رایج عبارت اند از: ONNX برای اجرای بین پلتفرمی TensorRT برای بهینه سازی روی کارت های NVIDIA CoreML برای محصولات اپل TFLite برای بعضی سناریوهای موبایل و لبه OpenVINO برای سخت افزارهای سازگار اینتل پیش از انتخاب فرمت، مقصد نهایی، سیستم عامل، نوع پردازنده، محدودیت حافظه، سرعت مورد نیاز و مجوز استفاده از مدل را بررسی کنید. ساخت فایل requirements.txt برای اینکه نصب وابستگی های پروژه روی سیستم دیگر ساده باشد، فایل requirements.txt را ایجاد کنید: ultralytics opencv-python سپس وابستگی ها با دستور زیر نصب می شوند: pip install -r requirements.txt در پروژه عملی بهتر است نسخه کتابخانه ها پس از تست مشخص شود تا به روز رسانی ناگهانی، رفتار برنامه را تغییر ندهد: pip freeze &#62; requirements.txt خطاهای رایج هنگام Train مدل YOLOv8 پیدا نشدن تصاویر یا برچسب ها این مشکل معمولا به دلیل مسیر اشتباه در data.yaml یا ساختار نادرست پوشه ها رخ می دهد. مسیرها و نام پوشه های images و labels را بررسی کنید. اشتباه بودن شناسه کلاس اگر سه کلاس دارید، شناسه ها باید صفر، یک و دو باشند. استفاده از شناسه خارج از محدوده می تواند باعث خطا یا آموزش نادرست شود. خطای CUDA out of memory این خطا یعنی حافظه کارت گرافیک کافی نیست. راهکارهای پیشنهادی: کاهش مقدار batch کاهش مقدار imgsz استفاده از مدل کوچک تر بستن برنامه های مصرف کننده GPU اجرای Train روی سخت افزار قوی تر تشخیص همه اشیا به عنوان یک کلاس این مشکل ممکن است به دلیل داده نامتوازن، شباهت زیاد کلاس ها، برچسب گذاری نادرست یا کمبود نمونه رخ دهد. ابتدا ماتریس سردرگمی و نمونه های هر کلاس را بررسی...</p>
<p>نوشته <a href="https://tarahanenovin.ir/blog/%d8%a2%d9%85%d9%88%d8%b2%d8%b4-%d8%b3%d8%a7%d8%ae%d8%aa-%d8%a8%d8%b1%d9%86%d8%a7%d9%85%d9%87-%d8%aa%d8%b4%d8%ae%db%8c%d8%b5-%d8%b4%db%8c-%d8%a8%d8%a7-yolov8-%d8%a7%d8%b2-%d8%b5%d9%81%d8%b1-%d8%aa/">آموزش ساخت برنامه تشخیص شی با YOLOv8 از صفر تا صد و Train مدل اختصاصی</a> اولین بار در <a href="https://tarahanenovin.ir/blog">نوین هاب</a>. پدیدار شد.</p>
]]></description>
										<content:encoded><![CDATA[<p dir="rtl" lang="fa">تشخیص اشیا یکی از مهم ترین کاربردهای بینایی ماشین است که در حوزه هایی مانند نظارت تصویری، کنترل کیفیت محصولات، شمارش کالا، مدیریت ترافیک، کشاورزی هوشمند و اپلیکیشن های موبایل استفاده می شود. مدل YOLOv8 به دلیل سرعت مناسب، دقت قابل قبول و رابط برنامه نویسی ساده، یکی از گزینه های کاربردی برای پیاده سازی این پروژه ها محسوب می شود.</p>
<p dir="rtl" lang="fa">در این آموزش، ساخت یک برنامه تشخیص شی با YOLOv8 را از نصب ابزارهای لازم تا آماده سازی داده، برچسب گذاری تصاویر، Train مدل اختصاصی و اجرای تشخیص روی تصویر، ویدیو و وب کم بررسی می کنیم. در پایان نیز روش ارزیابی و خروجی گرفتن از مدل آموزش دیده را توضیح می دهیم.</p>
<h2 dir="rtl" lang="fa">تشخیص شی چیست و چه تفاوتی با دسته بندی تصویر دارد؟</h2>
<p dir="rtl" lang="fa">در دسته بندی تصویر، مدل مشخص می کند که تصویر به کدام کلاس تعلق دارد. برای مثال، مدل تشخیص می دهد که تصویر شامل یک خودرو است. اما در تشخیص شی، مدل علاوه بر شناسایی نوع شی، محل قرارگیری آن را نیز با یک کادر محدود کننده مشخص می کند.</p>
<p dir="rtl" lang="fa">خروجی یک مدل تشخیص شی معمولا شامل اطلاعات زیر است:</p>
<ul dir="rtl" lang="fa">
<li>نام یا شناسه کلاس</li>
<li>مختصات کادر محدود کننده</li>
<li>میزان اطمینان مدل</li>
<li>تعداد اشیای شناسایی شده</li>
<li>موقعیت هر شی در تصویر</li>
</ul>
<p dir="rtl" lang="fa">برای مثال، اگر یک تصویر شامل دو خودرو، یک موتورسیکلت و سه نفر باشد، مدل تشخیص شی باید هر کدام را به صورت جداگانه پیدا کند و برای آن ها کادر و برچسب نمایش دهد.</p>
<h2 dir="rtl" lang="fa">YOLOv8 چیست؟</h2>
<p dir="rtl" lang="fa">YOLO مخفف عبارت You Only Look Once است. این خانواده از مدل ها تصویر را در یک مرحله پردازش می کنند و به همین دلیل برای تشخیص اشیا با سرعت بالا مناسب هستند.</p>
<p dir="rtl" lang="fa">YOLOv8 توسط Ultralytics ارائه شده و از وظایف مختلف بینایی ماشین پشتیبانی می کند:</p>
<ul dir="rtl" lang="fa">
<li>تشخیص اشیا یا Object Detection</li>
<li>دسته بندی تصویر یا Classification</li>
<li>قطعه بندی تصویر یا Segmentation</li>
<li>تخمین وضعیت بدن یا Pose Estimation</li>
<li>تشخیص اشیای چرخیده یا Oriented Bounding Box</li>
<li>ردیابی اشیا در ویدیو</li>
</ul>
<p dir="rtl" lang="fa">رابط پایتون Ultralytics، فرایند Train، اعتبارسنجی، پیش بینی و خروجی گرفتن از مدل را ساده می کند. برای مشاهده ساختار کلی این ابزار می توانید به <a href="https://docs.ultralytics.com/" target="_blank" rel="nofollow noopener noreferrer">مستندات رسمی Ultralytics</a> مراجعه کنید.</p>
<blockquote>
<p dir="rtl" lang="fa">نکته: اگرچه نسخه های جدیدتری از خانواده YOLO منتشر شده اند، YOLOv8 همچنان در بسیاری از پروژه های آموزشی و عملی استفاده می شود. بهتر است پیش از شروع یک پروژه تجاری، مدل های موجود را از نظر سرعت، دقت، مجوز و سازگاری با سخت افزار ارزیابی کنید.</p>
</blockquote>
<h2 dir="rtl" lang="fa">چرا از YOLOv8 برای تشخیص اشیا استفاده کنیم؟</h2>
<p dir="rtl" lang="fa">مهم ترین مزایای YOLOv8 عبارت اند از:</p>
<ul dir="rtl" lang="fa">
<li>نصب و راه اندازی ساده</li>
<li>امکان استفاده با زبان پایتون</li>
<li>پشتیبانی از پردازنده مرکزی و کارت گرافیک</li>
<li>وجود مدل های از پیش آموزش دیده</li>
<li>امکان Train مدل روی داده اختصاصی</li>
<li>قابلیت پردازش تصویر، ویدیو و وب کم</li>
<li>امکان خروجی گرفتن با فرمت هایی مانند ONNX</li>
<li>مناسب برای ساخت نمونه اولیه و پروژه های واقعی</li>
</ul>
<p dir="rtl" lang="fa">البته کیفیت نهایی مدل فقط به معماری YOLO وابسته نیست. کیفیت تصاویر، دقت برچسب گذاری، تنوع داده ها، انتخاب پارامترهای Train و سخت افزار نیز تاثیر مستقیمی بر نتیجه دارند.</p>
<h2 dir="rtl" lang="fa">پیش نیازهای ساخت برنامه تشخیص شی با YOLOv8</h2>
<p dir="rtl" lang="fa">برای اجرای این آموزش به ابزارهای زیر نیاز داریم:</p>
<ul dir="rtl" lang="fa">
<li>Python نسخه 3.8 یا بالاتر</li>
<li>pip برای نصب کتابخانه ها</li>
<li>یک ویرایشگر مانند VS Code یا PyCharm</li>
<li>کتابخانه Ultralytics</li>
<li>کتابخانه OpenCV</li>
<li>مجموعه تصاویر برچسب گذاری شده برای Train مدل اختصاصی</li>
<li>کارت گرافیک NVIDIA به صورت اختیاری</li>
</ul>
<p dir="rtl" lang="fa">استفاده از کارت گرافیک برای اجرای مدل الزامی نیست، اما سرعت آموزش را به شکل محسوسی افزایش می دهد. اگر سیستم مناسبی در اختیار ندارید، می توانید از Google Colab یا سرور دارای GPU استفاده کنید.</p>
<h2 dir="rtl" lang="fa">ساخت محیط پروژه YOLOv8</h2>
<p dir="rtl" lang="fa">ابتدا یک پوشه برای پروژه ایجاد کنید:</p>
<div class="code-header"></div>
<pre><code class="hljs"><span class="hljs-built_in">mkdir</span> yolo-object-detection
<span class="hljs-built_in">cd</span> yolo-object-detection
</code></pre>
<p dir="rtl" lang="fa">سپس محیط مجازی پایتون را بسازید:</p>
<div class="code-header"></div>
<pre><code class="hljs">python -m venv venv
</code></pre>
<p dir="rtl" lang="fa">فعال سازی محیط مجازی در ویندوز:</p>
<div class="code-header"></div>
<pre><code class="hljs">venv\Scripts\activate
</code></pre>
<p dir="rtl" lang="fa">فعال سازی در لینوکس و macOS:</p>
<div class="code-header"></div>
<pre><code class="hljs"><span class="hljs-built_in">source</span> venv/bin/activate
</code></pre>
<p dir="rtl" lang="fa">اکنون کتابخانه های مورد نیاز را نصب کنید:</p>
<div class="code-header"></div>
<pre><code class="hljs">pip install ultralytics opencv-python
</code></pre>
<p dir="rtl" lang="fa">برای بررسی نصب صحیح Ultralytics می توانید دستور زیر را اجرا کنید:</p>
<div class="code-header"></div>
<pre><code class="hljs">yolo checks
</code></pre>
<p dir="rtl" lang="fa">همچنین نسخه نصب شده را از طریق پایتون بررسی کنید:</p>
<div class="code-header"></div>
<pre><code class="hljs"><span class="hljs-keyword">import</span> ultralytics

<span class="hljs-built_in">print</span>(ultralytics.__version__)
</code></pre>
<h2 dir="rtl" lang="fa">انتخاب مدل مناسب YOLOv8</h2>
<p dir="rtl" lang="fa">مدل های تشخیص شی YOLOv8 در اندازه های مختلف ارائه شده اند:</p>
<div class="table-container">
<table>
<thead>
<tr>
<th>مدل</th>
<th>سرعت</th>
<th>دقت نسبی</th>
<th>مصرف منابع</th>
<th>کاربرد پیشنهادی</th>
</tr>
</thead>
<tbody>
<tr>
<td lang="en">YOLOv8n</td>
<td dir="rtl" lang="fa">بسیار بالا</td>
<td dir="rtl" lang="fa">پایه</td>
<td dir="rtl" lang="fa">بسیار کم</td>
<td dir="rtl" lang="fa">موبایل، وب کم و سیستم ضعیف</td>
</tr>
<tr>
<td lang="en">YOLOv8s</td>
<td dir="rtl" lang="fa">بالا</td>
<td dir="rtl" lang="fa">مناسب</td>
<td dir="rtl" lang="fa">کم</td>
<td dir="rtl" lang="fa">پروژه های سبک و نمونه اولیه</td>
</tr>
<tr>
<td lang="en">YOLOv8m</td>
<td dir="rtl" lang="fa">متوسط</td>
<td dir="rtl" lang="fa">بهتر</td>
<td dir="rtl" lang="fa">متوسط</td>
<td dir="rtl" lang="fa">پروژه های عمومی</td>
</tr>
<tr>
<td lang="en">YOLOv8l</td>
<td dir="rtl" lang="fa">کمتر</td>
<td dir="rtl" lang="fa">بالا</td>
<td dir="rtl" lang="fa">زیاد</td>
<td dir="rtl" lang="fa">سرور و پردازش دقیق تر</td>
</tr>
<tr>
<td lang="en">YOLOv8x</td>
<td dir="rtl" lang="fa">کمترین</td>
<td dir="rtl" lang="fa">بالاتر</td>
<td dir="rtl" lang="fa">بسیار زیاد</td>
<td dir="rtl" lang="fa">سیستم قدرتمند و پردازش آفلاین</td>
</tr>
</tbody>
</table>
</div>
<p dir="rtl" lang="fa">حرف <code>n</code> در نام مدل به Nano، حرف <code>s</code> به Small، حرف <code>m</code> به Medium، حرف <code>l</code> به Large و حرف <code>x</code> به Extra Large اشاره دارد.</p>
<p dir="rtl" lang="fa">برای شروع، مدل <code>yolov8n.pt</code> انتخاب مناسبی است؛ زیرا حجم کمی دارد و سریع اجرا می شود. پس از تکمیل نمونه اولیه می توانید مدل های بزرگ تر را آزمایش کنید.</p>
<h2 dir="rtl" lang="fa">اجرای اولین تشخیص شی با مدل آماده</h2>
<p dir="rtl" lang="fa">مدل های آماده YOLOv8 روی مجموعه داده COCO آموزش دیده اند و توانایی تشخیص کلاس های عمومی مانند انسان، خودرو، اتوبوس، گربه، سگ، دوچرخه و صندلی را دارند.</p>
<p dir="rtl" lang="fa">فایل زیر را با نام <code>predict_image.py</code> ایجاد کنید:</p>
<div class="code-header"></div>
<pre><code class="hljs"><span class="hljs-keyword">from</span> ultralytics <span class="hljs-keyword">import</span> YOLO

model = YOLO(<span class="hljs-string">"yolov8n.pt"</span>)

results = model.predict(
    source=<span class="hljs-string">"test.jpg"</span>,
    conf=<span class="hljs-number">0.4</span>,
    save=<span class="hljs-literal">True</span>
)

<span class="hljs-built_in">print</span>(results)
</code></pre>
<p dir="rtl" lang="fa">در اولین اجرا، فایل وزن مدل به صورت خودکار دانلود می شود. تصویر پردازش شده نیز در مسیر <code>runs/detect/predict</code> ذخیره خواهد شد.</p>
<p dir="rtl" lang="fa">پارامتر <code>conf</code> حداقل میزان اطمینان را تعیین می کند. اگر مقدار آن برابر <code>0.4</code> باشد، تشخیص هایی که اطمینان کمتر از 40 درصد دارند کنار گذاشته می شوند.</p>
<h2 dir="rtl" lang="fa">نمایش نتیجه تشخیص با OpenCV</h2>
<p dir="rtl" lang="fa">اگر بخواهیم نتیجه را در یک پنجره نمایش دهیم، می توانیم از OpenCV استفاده کنیم:</p>
<div class="code-header"></div>
<pre><code class="hljs"><span class="hljs-keyword">import</span> cv2
<span class="hljs-keyword">from</span> ultralytics <span class="hljs-keyword">import</span> YOLO

model = YOLO(<span class="hljs-string">"yolov8n.pt"</span>)
results = model.predict(source=<span class="hljs-string">"test.jpg"</span>, conf=<span class="hljs-number">0.4</span>)

annotated_frame = results[<span class="hljs-number">0</span>].plot()

cv2.imshow(<span class="hljs-string">"YOLOv8 Detection"</span>, annotated_frame)
cv2.waitKey(<span class="hljs-number">0</span>)
cv2.destroyAllWindows()
</code></pre>
<p dir="rtl" lang="fa">متد <code>plot()</code> کادرها، نام کلاس ها و میزان اطمینان مدل را روی تصویر ترسیم می کند.</p>
<h2 dir="rtl" lang="fa">استخراج اطلاعات اشیای شناسایی شده</h2>
<p dir="rtl" lang="fa">در بسیاری از پروژه ها فقط نمایش تصویر کافی نیست. ممکن است بخواهیم مختصات، نام کلاس و میزان اطمینان هر شی را در پایگاه داده ذخیره کنیم یا برای بخش دیگری از نرم افزار ارسال کنیم.</p>
<div class="code-header"></div>
<pre><code class="hljs"><span class="hljs-keyword">from</span> ultralytics <span class="hljs-keyword">import</span> YOLO

model = YOLO(<span class="hljs-string">"yolov8n.pt"</span>)
result = model(<span class="hljs-string">"test.jpg"</span>)[<span class="hljs-number">0</span>]

<span class="hljs-keyword">for</span> box <span class="hljs-keyword">in</span> result.boxes:
    class_id = <span class="hljs-built_in">int</span>(box.cls[<span class="hljs-number">0</span>])
    confidence = <span class="hljs-built_in">float</span>(box.conf[<span class="hljs-number">0</span>])
    x1, y1, x2, y2 = box.xyxy[<span class="hljs-number">0</span>].tolist()
    class_name = model.names[class_id]

    <span class="hljs-built_in">print</span>({
        <span class="hljs-string">"class_id"</span>: class_id,
        <span class="hljs-string">"class_name"</span>: class_name,
        <span class="hljs-string">"confidence"</span>: <span class="hljs-built_in">round</span>(confidence, <span class="hljs-number">3</span>),
        <span class="hljs-string">"box"</span>: [x1, y1, x2, y2]
    })
</code></pre>
<p dir="rtl" lang="fa">مختصات <code>x1</code> و <code>y1</code> گوشه بالا و سمت چپ کادر هستند. مقادیر <code>x2</code> و <code>y2</code> نیز گوشه پایین و سمت راست را نشان می دهند.</p>
<h2 dir="rtl" lang="fa">ساخت برنامه تشخیص شی با YOLOv8 و وب کم</h2>
<p dir="rtl" lang="fa">برای تشخیص اشیا به صورت زنده، شماره دوربین را به عنوان ورودی مشخص می کنیم. دوربین اصلی سیستم معمولا با شماره صفر در دسترس است.</p>
<div class="code-header"></div>
<pre><code class="hljs"><span class="hljs-keyword">import</span> cv2
<span class="hljs-keyword">from</span> ultralytics <span class="hljs-keyword">import</span> YOLO

model = YOLO(<span class="hljs-string">"yolov8n.pt"</span>)
camera = cv2.VideoCapture(<span class="hljs-number">0</span>)

<span class="hljs-keyword">if</span> <span class="hljs-keyword">not</span> camera.isOpened():
    <span class="hljs-keyword">raise</span> RuntimeError(<span class="hljs-string">"Camera could not be opened."</span>)

<span class="hljs-keyword">while</span> <span class="hljs-literal">True</span>:
    success, frame = camera.read()

    <span class="hljs-keyword">if</span> <span class="hljs-keyword">not</span> success:
        <span class="hljs-keyword">break</span>

    results = model.predict(
        source=frame,
        conf=<span class="hljs-number">0.4</span>,
        verbose=<span class="hljs-literal">False</span>
    )

    annotated_frame = results[<span class="hljs-number">0</span>].plot()
    cv2.imshow(<span class="hljs-string">"Real-time Object Detection"</span>, annotated_frame)

    <span class="hljs-keyword">if</span> cv2.waitKey(<span class="hljs-number">1</span>) &amp; <span class="hljs-number">0xFF</span> == <span class="hljs-built_in">ord</span>(<span class="hljs-string">"q"</span>):
        <span class="hljs-keyword">break</span>

camera.release()
cv2.destroyAllWindows()
</code></pre>
<p dir="rtl" lang="fa">با فشردن کلید <code>q</code> برنامه متوقف می شود. اگر چند دوربین به سیستم متصل است، می توانید مقدار <code>0</code> را به <code>1</code> یا <code>2</code> تغییر دهید.</p>
<p dir="rtl" lang="fa">برای افزایش سرعت پردازش می توان اندازه تصویر ورودی را کاهش داد، مدل کوچک تری انتخاب کرد یا بعضی فریم ها را نادیده گرفت.</p>
<h2 dir="rtl" lang="fa">Train مدل اختصاصی YOLOv8 چه زمانی لازم است؟</h2>
<p dir="rtl" lang="fa">مدل آماده برای تشخیص اشیای عمومی مناسب است. اما اگر هدف شما تشخیص محصول خاص، قطعه صنعتی، نقص سطح، ابزار پزشکی، نوع گیاه یا شی محلی باشد، باید مدل اختصاصی آموزش دهید.</p>
<p dir="rtl" lang="fa">برای مثال، مدل آماده ممکن است یک بطری را تشخیص دهد؛ اما نمی تواند بدون آموزش اختصاصی مدل، برند یا نوع بسته بندی مورد نظر شما را با دقت کافی شناسایی کند.</p>
<p dir="rtl" lang="fa">مراحل کلی Train مدل اختصاصی عبارت اند از:</p>
<ol dir="rtl" lang="fa">
<li>تعریف کلاس ها</li>
<li>جمع آوری تصاویر</li>
<li>پاک سازی داده ها</li>
<li>برچسب گذاری اشیا</li>
<li>تقسیم داده ها</li>
<li>ساخت فایل YAML</li>
<li>اجرای Train</li>
<li>ارزیابی مدل</li>
<li>آزمایش روی داده واقعی</li>
<li>خروجی گرفتن و استقرار مدل</li>
</ol>
<h2 dir="rtl" lang="fa">جمع آوری دیتاست برای تشخیص شی</h2>
<p dir="rtl" lang="fa">کیفیت دیتاست، مهم ترین عامل موفقیت در آموزش مدل است. تصاویر باید شرایط واقعی استفاده از برنامه را پوشش دهند.</p>
<p dir="rtl" lang="fa">در زمان جمع آوری داده به موارد زیر توجه کنید:</p>
<ul dir="rtl" lang="fa">
<li>تصاویر را از زاویه های مختلف تهیه کنید.</li>
<li>فاصله های متفاوت از شی را در نظر بگیرید.</li>
<li>نور روز، نور کم و سایه را پوشش دهید.</li>
<li>پس زمینه های متنوع داشته باشید.</li>
<li>نمونه های کوچک، بزرگ، ناقص و پوشیده شده را اضافه کنید.</li>
<li>تصاویر بسیار مشابه و تکراری را محدود کنید.</li>
<li>برای تمام کلاس ها تعداد مناسبی نمونه تهیه کنید.</li>
<li>تصاویر بدون شی هدف را نیز در صورت نیاز اضافه کنید.</li>
</ul>
<p dir="rtl" lang="fa">تعداد دقیق تصاویر به پیچیدگی مسئله بستگی دارد. برای یک نمونه اولیه ساده ممکن است چند صد تصویر نتیجه اولیه ایجاد کند، اما پروژه های حساس و محیط های متنوع معمولا به داده بسیار بیشتری نیاز دارند.</p>
<h2 dir="rtl" lang="fa">برچسب گذاری تصاویر در فرمت YOLO</h2>
<p dir="rtl" lang="fa">در تشخیص شی، باید دور هر شی یک کادر رسم شود و نام کلاس آن مشخص گردد. ابزارهای مختلفی برای برچسب گذاری وجود دارند، از جمله:</p>
<ul lang="en">
<li>CVAT</li>
<li>Label Studio</li>
<li>LabelImg</li>
<li>Roboflow</li>
</ul>
<p dir="rtl" lang="fa">هر تصویر در فرمت YOLO یک فایل متنی هم نام دارد. برای مثال:</p>
<div class="code-header"></div>
<pre><code class="hljs">images/train/product_001.jpg
labels/train/product_001.txt
</code></pre>
<p dir="rtl" lang="fa">هر خط فایل برچسب از ساختار زیر پیروی می کند:</p>
<div class="code-header"></div>
<pre><code class="hljs">class_id x_center y_center width height
</code></pre>
<p dir="rtl" lang="fa">نمونه:</p>
<div class="code-header"></div>
<pre><code class="hljs">0 0.512 0.430 0.280 0.360
1 0.225 0.610 0.170 0.240
</code></pre>
<p dir="rtl" lang="fa">مختصات و ابعاد در این فرمت نرمال شده اند و مقدار آن ها معمولا بین صفر و یک قرار دارد. شماره کلاس ها نیز از صفر شروع می شود.</p>
<p dir="rtl" lang="fa">اگر دو شی در یک تصویر وجود داشته باشد، فایل برچسب باید دو خط داشته باشد. اگر تصویر هیچ شی هدفی ندارد، فایل برچسب آن می تواند خالی باشد.</p>
<h2 dir="rtl" lang="fa">ساختار استاندارد دیتاست YOLOv8</h2>
<p dir="rtl" lang="fa">ساختار پیشنهادی پروژه به صورت زیر است:</p>
<div class="code-header"></div>
<pre><code class="hljs">yolo-object-detection/
├── dataset/
│   ├── images/
│   │   ├── train/
│   │   ├── val/
│   │   └── test/
│   ├── labels/
│   │   ├── train/
│   │   ├── val/
│   │   └── test/
│   └── data.yaml
├── train.py
├── predict.py
└── requirements.txt
</code></pre>
<p dir="rtl" lang="fa">داده ها معمولا به سه بخش تقسیم می شوند:</p>
<ul dir="rtl" lang="fa">
<li><code>train</code>: داده های مورد استفاده برای یادگیری مدل</li>
<li><code>val</code>: داده های مورد استفاده برای ارزیابی حین Train</li>
<li><code>test</code>: داده های نهایی برای بررسی عملکرد واقعی</li>
</ul>
<p dir="rtl" lang="fa">یک تقسیم بندی متداول می تواند 70 درصد برای Train، حدود 20 درصد برای Validation و 10 درصد برای Test باشد. این نسبت ثابت نیست و با توجه به اندازه دیتاست تغییر می کند.</p>
<p dir="rtl" lang="fa">تصاویر یک ویدیو یا تصاویر بسیار مشابه را به صورت تصادفی بین این بخش ها پخش نکنید. در غیر این صورت، مدل در بخش ارزیابی با نمونه هایی تقریبا مشابه داده های Train روبرو می شود و نتیجه غیرواقعی به دست می آید.</p>
<h2 dir="rtl" lang="fa">ساخت فایل data.yaml</h2>
<p dir="rtl" lang="fa">فایل <code>data.yaml</code> مسیر دیتاست و نام کلاس ها را مشخص می کند:</p>
<div class="code-header"></div>
<pre><code class="hljs"><span class="hljs-attr">path:</span> <span class="hljs-string">dataset</span>
<span class="hljs-attr">train:</span> <span class="hljs-string">images/train</span>
<span class="hljs-attr">val:</span> <span class="hljs-string">images/val</span>
<span class="hljs-attr">test:</span> <span class="hljs-string">images/test</span>

<span class="hljs-attr">names:</span>
  <span class="hljs-attr">0:</span> <span class="hljs-string">helmet</span>
  <span class="hljs-attr">1:</span> <span class="hljs-string">person</span>
  <span class="hljs-attr">2:</span> <span class="hljs-string">vest</span>
</code></pre>
<p dir="rtl" lang="fa">در این مثال سه کلاس کلاه ایمنی، انسان و جلیقه تعریف شده اند. ترتیب نام کلاس ها باید دقیقا با شناسه های موجود در فایل های برچسب مطابقت داشته باشد.</p>
<p dir="rtl" lang="fa">اگر مسیر نسبی برای سیستم شما درست کار نکرد، می توانید مسیر کامل دیتاست را در مقدار <code>path</code> قرار دهید.</p>
<h2 dir="rtl" lang="fa">Train مدل YOLOv8 با پایتون</h2>
<p dir="rtl" lang="fa">فایل <code>train.py</code> را ایجاد کنید:</p>
<div class="code-header"></div>
<pre><code class="hljs"><span class="hljs-keyword">from</span> ultralytics <span class="hljs-keyword">import</span> YOLO

model = YOLO(<span class="hljs-string">"yolov8n.pt"</span>)

results = model.train(
    data=<span class="hljs-string">"dataset/data.yaml"</span>,
    epochs=<span class="hljs-number">100</span>,
    imgsz=<span class="hljs-number">640</span>,
    batch=<span class="hljs-number">16</span>,
    project=<span class="hljs-string">"runs/custom"</span>,
    name=<span class="hljs-string">"helmet_detector"</span>,
    patience=<span class="hljs-number">20</span>,
    workers=<span class="hljs-number">4</span>,
    device=<span class="hljs-number">0</span>
)

<span class="hljs-built_in">print</span>(results)
</code></pre>
<p dir="rtl" lang="fa">در این روش آموزش از وزن های از پیش آموزش دیده شروع می شود. این رویکرد که انتقال یادگیری نام دارد، معمولا با داده و زمان کمتر به نتیجه بهتری نسبت به شروع کاملا تصادفی می رسد.</p>
<p dir="rtl" lang="fa">راهنمای کامل گزینه های آموزش در صفحه <a href="https://docs.ultralytics.com/modes/train/" target="_blank" rel="nofollow noopener noreferrer">Train مدل در مستندات Ultralytics</a> در دسترس است.</p>
<h3 dir="rtl" lang="fa">مفهوم پارامترهای Train</h3>
<p dir="rtl" lang="fa">پارامترهای مهم کد بالا عبارت اند از:</p>
<ul dir="rtl" lang="fa">
<li><code>data</code>: مسیر فایل تنظیمات دیتاست</li>
<li><code>epochs</code>: تعداد دوره های آموزش</li>
<li><code>imgsz</code>: اندازه ورودی تصویر</li>
<li><code>batch</code>: تعداد تصاویر پردازش شده در هر مرحله</li>
<li><code>project</code>: پوشه اصلی ذخیره نتایج</li>
<li><code>name</code>: نام اجرای فعلی</li>
<li><code>patience</code>: توقف آموزش در صورت بهبود نیافتن نتیجه</li>
<li><code>workers</code>: تعداد پردازش های بارگذاری داده</li>
<li><code>device</code>: سخت افزار مورد استفاده</li>
</ul>
<p dir="rtl" lang="fa">برای استفاده از اولین کارت گرافیک NVIDIA مقدار <code>device=0</code> را قرار دهید. برای اجرای Train روی پردازنده مرکزی می توانید از مقدار زیر استفاده کنید:</p>
<div class="code-header"></div>
<pre><code class="hljs">device=<span class="hljs-string">"cpu"</span>
</code></pre>
<p dir="rtl" lang="fa">اگر با خطای کمبود حافظه GPU مواجه شدید، مقدار <code>batch</code> یا <code>imgsz</code> را کاهش دهید.</p>
<h2 dir="rtl" lang="fa">آموزش YOLOv8 با خط فرمان</h2>
<p dir="rtl" lang="fa">همان فرایند را می توان بدون ساخت فایل پایتون اجرا کرد:</p>
<div class="code-header"></div>
<pre><code class="hljs">yolo detect train data=dataset/data.yaml model=yolov8n.pt epochs=100 imgsz=640 batch=16
</code></pre>
<p dir="rtl" lang="fa">استفاده از خط فرمان برای آزمایش سریع پارامترها مناسب است. در پروژه های قابل نگهداری، ذخیره تنظیمات داخل فایل پایتون یا فایل پیکربندی، تکرار آزمایش ها را ساده تر می کند.</p>
<h2 dir="rtl" lang="fa">آیا می توان YOLOv8 را از وزن تصادفی Train کرد؟</h2>
<p dir="rtl" lang="fa">بله. اگر منظور از آموزش از صفر، استفاده نکردن از وزن های آماده باشد، باید فایل معماری مدل را بارگذاری کنید:</p>
<div class="code-header"></div>
<pre><code class="hljs"><span class="hljs-keyword">from</span> ultralytics <span class="hljs-keyword">import</span> YOLO

model = YOLO(<span class="hljs-string">"yolov8n.yaml"</span>)

model.train(
    data=<span class="hljs-string">"dataset/data.yaml"</span>,
    epochs=<span class="hljs-number">300</span>,
    imgsz=<span class="hljs-number">640</span>,
    batch=<span class="hljs-number">16</span>,
    device=<span class="hljs-number">0</span>
)
</code></pre>
<p dir="rtl" lang="fa">تفاوت اصلی این دو روش در فایل ورودی است:</p>
<div class="code-header"></div>
<pre><code class="hljs">YOLO(<span class="hljs-string">"yolov8n.pt"</span>)    <span class="hljs-comment"># انتقال یادگیری با وزن آماده</span>
YOLO(<span class="hljs-string">"yolov8n.yaml"</span>)  <span class="hljs-comment"># آموزش از وزن تصادفی</span>
</code></pre>
<p dir="rtl" lang="fa">برای بیشتر دیتاست های اختصاصی، انتقال یادگیری انتخاب منطقی تری است. آموزش از وزن تصادفی معمولا به دیتاست بزرگ تر، دوره های بیشتر و منابع پردازشی قابل توجه نیاز دارد.</p>
<h2 dir="rtl" lang="fa">فایل های خروجی Train مدل</h2>
<p dir="rtl" lang="fa">پس از پایان آموزش، نتایج در پوشه اجرای مدل ذخیره می شوند. دو فایل مهم عبارت اند از:</p>
<div class="code-header"></div>
<pre><code class="hljs">weights/best.pt
weights/last.pt
</code></pre>
<p dir="rtl" lang="fa">فایل <code>best.pt</code> بهترین وزن ثبت شده براساس معیارهای اعتبارسنجی است. فایل <code>last.pt</code> وزن مدل در آخرین دوره آموزش را نگهداری می کند.</p>
<p dir="rtl" lang="fa">برای پیش بینی نهایی معمولا از <code>best.pt</code> استفاده می شود:</p>
<div class="code-header"></div>
<pre><code class="hljs"><span class="hljs-keyword">from</span> ultralytics <span class="hljs-keyword">import</span> YOLO

model = YOLO(<span class="hljs-string">"runs/custom/helmet_detector/weights/best.pt"</span>)
model.predict(source=<span class="hljs-string">"sample.jpg"</span>, conf=<span class="hljs-number">0.4</span>, save=<span class="hljs-literal">True</span>)
</code></pre>
<h2 dir="rtl" lang="fa">ادامه Train متوقف شده</h2>
<p dir="rtl" lang="fa">اگر آموزش به دلیل قطع برق، بسته شدن برنامه یا محدودیت زمانی متوقف شد، می توان آن را از آخرین وضعیت ادامه داد:</p>
<div class="code-header"></div>
<pre><code class="hljs"><span class="hljs-keyword">from</span> ultralytics <span class="hljs-keyword">import</span> YOLO

model = YOLO(<span class="hljs-string">"runs/custom/helmet_detector/weights/last.pt"</span>)
model.train(resume=<span class="hljs-literal">True</span>)
</code></pre>
<p dir="rtl" lang="fa">برای امکان ادامه صحیح، فایل ها و تنظیمات اجرای قبلی را حذف یا جابه جا نکنید.</p>
<h2 dir="rtl" lang="fa">ارزیابی مدل آموزش دیده</h2>
<p dir="rtl" lang="fa">صرف مشاهده چند تصویر برای تایید کیفیت مدل کافی نیست. مدل باید با داده هایی ارزیابی شود که در آموزش ندیده است.</p>
<div class="code-header"></div>
<pre><code class="hljs"><span class="hljs-keyword">from</span> ultralytics <span class="hljs-keyword">import</span> YOLO

model = YOLO(<span class="hljs-string">"runs/custom/helmet_detector/weights/best.pt"</span>)
metrics = model.val(data=<span class="hljs-string">"dataset/data.yaml"</span>)

<span class="hljs-built_in">print</span>(metrics)
</code></pre>
<p dir="rtl" lang="fa">معیارهای مهم ارزیابی عبارت اند از:</p>
<h3 lang="en">Precision</h3>
<p dir="rtl" lang="fa">Precision نشان می دهد چه مقدار از تشخیص های مدل واقعا صحیح بوده اند. پایین بودن Precision معمولا به معنی زیاد بودن تشخیص های اشتباه است.</p>
<h3 lang="en">Recall</h3>
<p dir="rtl" lang="fa">Recall مشخص می کند مدل چه مقدار از اشیای واقعی را پیدا کرده است. پایین بودن Recall نشان می دهد مدل تعداد زیادی از اشیا را از دست می دهد.</p>
<h3 lang="en">mAP</h3>
<p dir="rtl" lang="fa">معیار mAP عملکرد کلی مدل را در کلاس ها و آستانه های مختلف بررسی می کند. دو معیار <code>mAP50</code> و <code>mAP50-95</code> معمولا در گزارش نتایج نمایش داده می شوند.</p>
<p dir="rtl" lang="fa">نباید تنها براساس یک عدد درباره کیفیت مدل تصمیم گرفت. عملکرد هر کلاس، ماتریس سردرگمی، شرایط محیط واقعی و هزینه خطا نیز باید بررسی شوند.</p>
<h2 dir="rtl" lang="fa">آزمایش مدل اختصاصی روی ویدیو</h2>
<p dir="rtl" lang="fa">برای اجرای مدل روی یک فایل ویدیویی می توانید از کد زیر استفاده کنید:</p>
<div class="code-header"></div>
<pre><code class="hljs"><span class="hljs-keyword">from</span> ultralytics <span class="hljs-keyword">import</span> YOLO

model = YOLO(<span class="hljs-string">"runs/custom/helmet_detector/weights/best.pt"</span>)

model.predict(
    source=<span class="hljs-string">"input.mp4"</span>,
    conf=<span class="hljs-number">0.4</span>,
    iou=<span class="hljs-number">0.5</span>,
    save=<span class="hljs-literal">True</span>,
    show=<span class="hljs-literal">False</span>
)
</code></pre>
<p dir="rtl" lang="fa">پارامتر <code>iou</code> در کنترل هم پوشانی کادرهای تشخیص داده شده موثر است. انتخاب مقدار مناسب برای <code>conf</code> و <code>iou</code> باید براساس داده Validation و نیاز پروژه انجام شود.</p>
<h2 dir="rtl" lang="fa">تشخیص فقط کلاس های مشخص</h2>
<p dir="rtl" lang="fa">اگر مدل چند کلاس دارد، اما فقط به بعضی از آن ها نیاز دارید، شناسه کلاس ها را مشخص کنید:</p>
<div class="code-header"></div>
<pre><code class="hljs">results = model.predict(
    source=<span class="hljs-string">"input.mp4"</span>,
    classes=[<span class="hljs-number">0</span>, <span class="hljs-number">2</span>],
    conf=<span class="hljs-number">0.4</span>,
    save=<span class="hljs-literal">True</span>
)
</code></pre>
<p dir="rtl" lang="fa">در این مثال فقط کلاس های صفر و دو پردازش می شوند. شناسه کلاس ها باید با فایل <code>data.yaml</code> مطابقت داشته باشد.</p>
<h2 dir="rtl" lang="fa">شمارش اشیای شناسایی شده</h2>
<p dir="rtl" lang="fa">کد زیر تعداد اشیای هر کلاس را در یک تصویر محاسبه می کند:</p>
<div class="code-header"></div>
<pre><code class="hljs"><span class="hljs-keyword">from</span> collections <span class="hljs-keyword">import</span> Counter
<span class="hljs-keyword">from</span> ultralytics <span class="hljs-keyword">import</span> YOLO

model = YOLO(<span class="hljs-string">"runs/custom/helmet_detector/weights/best.pt"</span>)
result = model(<span class="hljs-string">"sample.jpg"</span>, conf=<span class="hljs-number">0.4</span>)[<span class="hljs-number">0</span>]

class_names = [
    model.names[<span class="hljs-built_in">int</span>(class_id)]
    <span class="hljs-keyword">for</span> class_id <span class="hljs-keyword">in</span> result.boxes.cls.tolist()
]

counts = Counter(class_names)

<span class="hljs-keyword">for</span> class_name, count <span class="hljs-keyword">in</span> counts.items():
    <span class="hljs-built_in">print</span>(<span class="hljs-string">f"<span class="hljs-subst">{class_name}</span>: <span class="hljs-subst">{count}</span>"</span>)
</code></pre>
<p dir="rtl" lang="fa">برای شمارش اشیا در ویدیو باید به مفهوم ردیابی نیز توجه کرد. شمارش ساده در هر فریم باعث می شود یک شی چندین بار شمرده شود. در چنین شرایطی باید برای هر شی یک شناسه ردیابی ایجاد شود و عبور آن از خط یا ناحیه مشخص بررسی گردد.</p>
<h2 dir="rtl" lang="fa">خروجی گرفتن از مدل برای استفاده در برنامه های دیگر</h2>
<p dir="rtl" lang="fa">برای استفاده از مدل در محیط های مختلف می توان آن را به فرمت مناسب تبدیل کرد. برای نمونه، خروجی ONNX به صورت زیر ساخته می شود:</p>
<div class="code-header"></div>
<pre><code class="hljs"><span class="hljs-keyword">from</span> ultralytics <span class="hljs-keyword">import</span> YOLO

model = YOLO(<span class="hljs-string">"runs/custom/helmet_detector/weights/best.pt"</span>)

model.export(
    <span class="hljs-built_in">format</span>=<span class="hljs-string">"onnx"</span>,
    imgsz=<span class="hljs-number">640</span>,
    dynamic=<span class="hljs-literal">True</span>
)
</code></pre>
<p dir="rtl" lang="fa">فرمت های قابل استفاده با توجه به نسخه کتابخانه و محیط اجرا متفاوت هستند. برخی گزینه های رایج عبارت اند از:</p>
<ul dir="rtl" lang="fa">
<li>ONNX برای اجرای بین پلتفرمی</li>
<li>TensorRT برای بهینه سازی روی کارت های NVIDIA</li>
<li>CoreML برای محصولات اپل</li>
<li>TFLite برای بعضی سناریوهای موبایل و لبه</li>
<li>OpenVINO برای سخت افزارهای سازگار اینتل</li>
</ul>
<p dir="rtl" lang="fa">پیش از انتخاب فرمت، مقصد نهایی، سیستم عامل، نوع پردازنده، محدودیت حافظه، سرعت مورد نیاز و مجوز استفاده از مدل را بررسی کنید.</p>
<h2 dir="rtl" lang="fa">ساخت فایل requirements.txt</h2>
<p dir="rtl" lang="fa">برای اینکه نصب وابستگی های پروژه روی سیستم دیگر ساده باشد، فایل <code>requirements.txt</code> را ایجاد کنید:</p>
<div class="code-header"></div>
<pre><code class="hljs">ultralytics
opencv-python
</code></pre>
<p dir="rtl" lang="fa">سپس وابستگی ها با دستور زیر نصب می شوند:</p>
<div class="code-header"></div>
<pre><code class="hljs">pip install -r requirements.txt
</code></pre>
<p dir="rtl" lang="fa">در پروژه عملی بهتر است نسخه کتابخانه ها پس از تست مشخص شود تا به روز رسانی ناگهانی، رفتار برنامه را تغییر ندهد:</p>
<div class="code-header"></div>
<pre><code class="hljs">pip freeze &gt; requirements.txt
</code></pre>
<h2 dir="rtl" lang="fa">خطاهای رایج هنگام Train مدل YOLOv8</h2>
<h3 dir="rtl" lang="fa">پیدا نشدن تصاویر یا برچسب ها</h3>
<p dir="rtl" lang="fa">این مشکل معمولا به دلیل مسیر اشتباه در <code>data.yaml</code> یا ساختار نادرست پوشه ها رخ می دهد. مسیرها و نام پوشه های <code>images</code> و <code>labels</code> را بررسی کنید.</p>
<h3 dir="rtl" lang="fa">اشتباه بودن شناسه کلاس</h3>
<p dir="rtl" lang="fa">اگر سه کلاس دارید، شناسه ها باید صفر، یک و دو باشند. استفاده از شناسه خارج از محدوده می تواند باعث خطا یا آموزش نادرست شود.</p>
<h3 dir="rtl" lang="fa">خطای CUDA out of memory</h3>
<p dir="rtl" lang="fa">این خطا یعنی حافظه کارت گرافیک کافی نیست. راهکارهای پیشنهادی:</p>
<ul dir="rtl" lang="fa">
<li>کاهش مقدار <code>batch</code></li>
<li>کاهش مقدار <code>imgsz</code></li>
<li>استفاده از مدل کوچک تر</li>
<li>بستن برنامه های مصرف کننده GPU</li>
<li>اجرای Train روی سخت افزار قوی تر</li>
</ul>
<h3 dir="rtl" lang="fa">تشخیص همه اشیا به عنوان یک کلاس</h3>
<p dir="rtl" lang="fa">این مشکل ممکن است به دلیل داده نامتوازن، شباهت زیاد کلاس ها، برچسب گذاری نادرست یا کمبود نمونه رخ دهد. ابتدا ماتریس سردرگمی و نمونه های هر کلاس را بررسی کنید.</p>
<h3 dir="rtl" lang="fa">دقت بالا در Validation و عملکرد ضعیف در محیط واقعی</h3>
<p dir="rtl" lang="fa">این وضعیت معمولا نشانه تفاوت داده های Train با محیط واقعی یا نشت داده است. تصاویر Validation باید مستقل باشند و شرایط واقعی دوربین، نور، زاویه و پس زمینه را پوشش دهند.</p>
<h3 dir="rtl" lang="fa">اجرا نشدن پنجره OpenCV</h3>
<p dir="rtl" lang="fa">در محیط های بدون رابط گرافیکی مانند بعضی سرورها، <code>cv2.imshow()</code> کار نمی کند. در این شرایط نتیجه را ذخیره کنید یا از رابط وب برای نمایش خروجی استفاده کنید.</p>
<h2 dir="rtl" lang="fa">چگونه دقت مدل تشخیص شی را افزایش دهیم؟</h2>
<p dir="rtl" lang="fa">برای بهبود نتیجه، ابتدا مشکل را از طریق خروجی های Validation و نمونه های خطادار شناسایی کنید. سپس یکی از اقدامات زیر را انجام دهید:</p>
<ul dir="rtl" lang="fa">
<li>تصاویر واقعی و متنوع تری اضافه کنید.</li>
<li>برچسب های اشتباه را اصلاح کنید.</li>
<li>تعداد نمونه کلاس های کم تعداد را افزایش دهید.</li>
<li>تصاویر تار یا غیرقابل استفاده را حذف کنید.</li>
<li>اندازه ورودی را برای اشیای کوچک افزایش دهید.</li>
<li>مدل بزرگ تری را آزمایش کنید.</li>
<li>تعداد Epoch را با توجه به نمودارها تنظیم کنید.</li>
<li>آستانه اطمینان را براساس نیاز پروژه انتخاب کنید.</li>
<li>داده های سخت و مواردی که مدل اشتباه می کند به دیتاست اضافه کنید.</li>
<li>مدل را روی دستگاه و محیط نهایی آزمایش کنید.</li>
</ul>
<p dir="rtl" lang="fa">افزایش Epoch همیشه باعث بهتر شدن مدل نمی شود. ادامه بیش از حد آموزش ممکن است مدل را به داده های Train وابسته کند و توانایی تعمیم آن را کاهش دهد.</p>
<h2 dir="rtl" lang="fa">نکات امنیتی و عملی برای استفاده تجاری</h2>
<p dir="rtl" lang="fa">یک مدل تشخیص شی قبل از ورود به محیط عملی باید از نظر فنی و حقوقی بررسی شود. این موضوع در پروژه هایی که تصاویر افراد، محیط کار، اطلاعات مشتریان یا تجهیزات حساس را پردازش می کنند اهمیت بیشتری دارد.</p>
<p dir="rtl" lang="fa">موارد مهم عبارت اند از:</p>
<ul dir="rtl" lang="fa">
<li>بررسی مجوز Ultralytics و وابستگی های پروژه</li>
<li>دریافت رضایت لازم برای پردازش تصاویر افراد</li>
<li>تعیین سیاست نگهداری و حذف تصاویر</li>
<li>رمزنگاری ارتباط میان دوربین، سرور و API</li>
<li>ثبت خطاها بدون ذخیره اطلاعات حساس غیرضروری</li>
<li>کنترل دسترسی به مدل و داده ها</li>
<li>بررسی خطاهای مدل در گروه ها و شرایط مختلف</li>
<li>پیش بینی رفتار سیستم در زمان قطع دوربین یا سرور</li>
<li>نظارت انسانی در کاربردهای حساس</li>
</ul>
<p dir="rtl" lang="fa">Ultralytics مدل های مجوز متفاوتی ارائه می کند. پیش از عرضه محصول یا استفاده سازمانی، شرایط روز مجوز را در <a href="https://www.ultralytics.com/license" target="_blank" rel="nofollow noopener noreferrer">صفحه مجوز Ultralytics</a> بررسی کنید.</p>
<h2 dir="rtl" lang="fa">کاربردهای برنامه تشخیص شی با YOLOv8</h2>
<p dir="rtl" lang="fa">مدل اختصاصی تشخیص اشیا می تواند در پروژه های متنوعی استفاده شود:</p>
<ul dir="rtl" lang="fa">
<li>تشخیص استفاده از کلاه و تجهیزات ایمنی</li>
<li>شمارش محصولات روی خط تولید</li>
<li>شناسایی نقص ظاهری کالا</li>
<li>تشخیص و شمارش خودرو</li>
<li>مدیریت فضای پارکینگ</li>
<li>تحلیل تردد افراد</li>
<li>شناسایی آفات و بیماری های گیاهی</li>
<li>کنترل موجودی فروشگاه</li>
<li>پردازش تصاویر پزشکی با نظارت متخصص</li>
<li>ساخت اپلیکیشن موبایل مبتنی بر دوربین</li>
<li>نظارت تصویری هوشمند</li>
<li>دسته بندی و کنترل بسته بندی محصولات</li>
</ul>
<p dir="rtl" lang="fa">در پروژه های واقعی معمولا خود مدل تنها بخشی از سامانه است. بخش های دیگری مانند API، پنل مدیریت، پایگاه داده، اپلیکیشن موبایل، گزارش گیری و زیرساخت پردازش نیز باید طراحی شوند.</p>
<h2 dir="rtl" lang="fa">طراحی یک سامانه کامل تشخیص اشیا</h2>
<p dir="rtl" lang="fa">معماری یک سامانه عملی می تواند از اجزای زیر تشکیل شود:</p>
<ol dir="rtl" lang="fa">
<li>دوربین یا منبع دریافت تصویر</li>
<li>ماژول دریافت و کاهش نرخ فریم</li>
<li>مدل YOLOv8 برای استنتاج</li>
<li>ماژول ردیابی و شمارش</li>
<li>منطق تجاری و تعریف هشدار</li>
<li>API برای انتقال نتایج</li>
<li>پایگاه داده</li>
<li>پنل تحت وب یا اپلیکیشن موبایل</li>
<li>سیستم ثبت رویداد و پایش عملکرد</li>
</ol>
<p dir="rtl" lang="fa">برای مثال، در سامانه کنترل تجهیزات ایمنی، مدل حضور فرد، کلاه و جلیقه را تشخیص می دهد. سپس منطق برنامه ارتباط میان اشیا را بررسی می کند و در صورت نبود تجهیزات، رویداد ثبت می شود. بنابراین وجود هر کلاس در تصویر به تنهایی برای تصمیم گیری کافی نیست.</p>
<p dir="rtl" lang="fa">تیم طراحان نوین با توجه به حوزه فعالیت خود می تواند در طراحی بخش های مکمل چنین سامانه هایی، از جمله نرم افزار دسکتاپ، اپلیکیشن موبایل، پنل تحت وب، API و رابط کاربری پروژه نقش داشته باشد. تعریف دقیق نیاز، محدودیت سخت افزار و معیار موفقیت باید پیش از شروع توسعه انجام شود.</p>
<h2 dir="rtl" lang="fa"></h2>
<h3 dir="rtl" lang="fa">آیا YOLOv8 بدون کارت گرافیک اجرا می شود؟</h3>
<p dir="rtl" lang="fa">بله. امکان اجرای مدل و حتی Train روی پردازنده مرکزی وجود دارد، اما آموزش روی CPU معمولا بسیار کندتر است. برای آزمایش اولیه می توان از مدل YOLOv8n استفاده کرد.</p>
<h3 dir="rtl" lang="fa">برای Train مدل اختصاصی به چند تصویر نیاز داریم؟</h3>
<p dir="rtl" lang="fa">عدد ثابتی وجود ندارد. تنوع داده، تعداد کلاس ها، اندازه اشیا و پیچیدگی محیط تعیین کننده هستند. بهتر است با چند صد تصویر باکیفیت نمونه اولیه بسازید، خطاها را تحلیل کنید و سپس دیتاست را هدفمند گسترش دهید.</p>
<h3 dir="rtl" lang="fa">تفاوت YOLOv8n و YOLOv8x چیست؟</h3>
<p dir="rtl" lang="fa">YOLOv8n کوچک تر و سریع تر است و منابع کمتری مصرف می کند. YOLOv8x ظرفیت بیشتری دارد، اما به حافظه و توان پردازشی بالاتری نیاز خواهد داشت. انتخاب مدل باید براساس توازن سرعت و دقت انجام شود.</p>
<h3 dir="rtl" lang="fa">آیا برای هر پروژه باید مدل را دوباره Train کنیم؟</h3>
<p dir="rtl" lang="fa">اگر کلاس های مورد نیاز در مدل آماده وجود داشته باشند و دقت آن کافی باشد، نیازی به Train اختصاصی نیست. برای اشیای تخصصی یا شرایط متفاوت، آموزش یا تنظیم مدل روی دیتاست اختصاصی ضروری است.</p>
<h3 dir="rtl" lang="fa">چرا مدل روی تصاویر Train خوب و روی تصاویر جدید ضعیف عمل می کند؟</h3>
<p dir="rtl" lang="fa">مهم ترین دلایل شامل بیش برازش، نشت داده، کمبود تنوع تصاویر و تفاوت محیط واقعی با دیتاست هستند. باید داده های مستقل و شرایط واقعی بیشتری به مجموعه اضافه کنید.</p>
<h3 dir="rtl" lang="fa">آیا می توان مدل YOLOv8 را در اندروید یا iOS اجرا کرد؟</h3>
<p dir="rtl" lang="fa">بله، اما مدل باید به فرمت سازگار تبدیل و برای دستگاه مقصد بهینه شود. حجم مدل، حافظه دستگاه، سرعت پردازنده و مصرف باتری در این تصمیم اهمیت دارند.</p>
<h3 dir="rtl" lang="fa">آیا می توان خروجی YOLOv8 را به API متصل کرد؟</h3>
<p dir="rtl" lang="fa">بله. می توان مدل را در یک سرویس پایتون مانند FastAPI اجرا کرد و تصویر یا ویدیو را از طریق API دریافت نمود. برای محیط عملی باید مدیریت همزمانی درخواست ها، امنیت، محدودیت حجم فایل و پایش منابع نیز در نظر گرفته شود.</p>
<h3 dir="rtl" lang="fa">بهترین مقدار Epoch برای Train چیست؟</h3>
<p dir="rtl" lang="fa">مقدار یکسانی برای همه پروژه ها وجود ندارد. تعداد Epoch باید براساس اندازه دیتاست، روند کاهش خطا، معیارهای Validation و توقف زودهنگام انتخاب شود. بیشتر بودن تعداد Epoch لزوما به معنی مدل بهتر نیست.</p>
<h2 dir="rtl" lang="fa">جمع بندی</h2>
<p dir="rtl" lang="fa">ساخت برنامه تشخیص شی با YOLOv8 شامل چند مرحله اصلی است: انتخاب مدل، نصب کتابخانه ها، آماده سازی و برچسب گذاری دیتاست، ساخت فایل <code>data.yaml</code>، اجرای Train، ارزیابی مدل و استفاده از وزن <code>best.pt</code> در برنامه نهایی.</p>
<p dir="rtl" lang="fa">اگر هدف شما تشخیص اشیای عمومی باشد، مدل های آماده می توانند بدون Train اختصاصی استفاده شوند. برای تشخیص محصولات، قطعات یا اشیای تخصصی باید دیتاست متناسب با محیط واقعی تهیه و مدل روی آن آموزش داده شود.</p>
<p dir="rtl" lang="fa">موفقیت پروژه بیش از هر چیز به کیفیت داده، تعریف صحیح کلاس ها و ارزیابی دقیق وابسته است. پس از آماده شدن مدل نیز می توان آن را در نرم افزار دسکتاپ، اپلیکیشن موبایل، پنل تحت وب یا سامانه نظارت تصویری ادغام کرد. برای طراحی و توسعه بخش های نرم افزاری چنین پروژه هایی می توانید نیازهای فنی خود را با تیم طراحان نوین بررسی کنید.</p>
<p>نوشته <a href="https://tarahanenovin.ir/blog/%d8%a2%d9%85%d9%88%d8%b2%d8%b4-%d8%b3%d8%a7%d8%ae%d8%aa-%d8%a8%d8%b1%d9%86%d8%a7%d9%85%d9%87-%d8%aa%d8%b4%d8%ae%db%8c%d8%b5-%d8%b4%db%8c-%d8%a8%d8%a7-yolov8-%d8%a7%d8%b2-%d8%b5%d9%81%d8%b1-%d8%aa/">آموزش ساخت برنامه تشخیص شی با YOLOv8 از صفر تا صد و Train مدل اختصاصی</a> اولین بار در <a href="https://tarahanenovin.ir/blog">نوین هاب</a>. پدیدار شد.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://tarahanenovin.ir/blog/%d8%a2%d9%85%d9%88%d8%b2%d8%b4-%d8%b3%d8%a7%d8%ae%d8%aa-%d8%a8%d8%b1%d9%86%d8%a7%d9%85%d9%87-%d8%aa%d8%b4%d8%ae%db%8c%d8%b5-%d8%b4%db%8c-%d8%a8%d8%a7-yolov8-%d8%a7%d8%b2-%d8%b5%d9%81%d8%b1-%d8%aa/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>آموزش کامل YOLO از صفر تا صد &#124; هر آنچه باید درباره مدل YOLO بدانید</title>
		<link>https://tarahanenovin.ir/blog/%d8%a2%d9%85%d9%88%d8%b2%d8%b4-%da%a9%d8%a7%d9%85%d9%84-yolo-%d8%a7%d8%b2-%d8%b5%d9%81%d8%b1-%d8%aa%d8%a7-%d8%b5%d8%af-%d9%87%d8%b1-%d8%a2%d9%86%da%86%d9%87-%d8%a8%d8%a7%db%8c%d8%af-%d8%af%d8%b1/</link>
					<comments>https://tarahanenovin.ir/blog/%d8%a2%d9%85%d9%88%d8%b2%d8%b4-%da%a9%d8%a7%d9%85%d9%84-yolo-%d8%a7%d8%b2-%d8%b5%d9%81%d8%b1-%d8%aa%d8%a7-%d8%b5%d8%af-%d9%87%d8%b1-%d8%a2%d9%86%da%86%d9%87-%d8%a8%d8%a7%db%8c%d8%af-%d8%af%d8%b1/#respond</comments>
		
		<dc:creator><![CDATA[TNVN]]></dc:creator>
		<pubDate></pubDate>
				<category><![CDATA[آموزش AI]]></category>
		<category><![CDATA[ابزارهای AI]]></category>
		<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[معرفی ابزار]]></category>
		<category><![CDATA[هوش مصنوعی]]></category>
		<category><![CDATA[yolo]]></category>
		<category><![CDATA[yoloV8]]></category>
		<category><![CDATA[آموزش]]></category>
		<category><![CDATA[آموزش yolo]]></category>
		<category><![CDATA[پایتون]]></category>
		<guid isPermaLink="false">https://tarahanenovin.ir/blog/?p=99</guid>

					<description><![CDATA[<p>YOLO یکی از مهم ترین مدل های تشخیص اشیا در بینایی ماشین است که به دلیل سرعت بالا، دقت مناسب و قابلیت استفاده در پروژه های واقعی، توجه توسعه دهندگان، پژوهشگران و کسب و کارها را به خود جلب کرده است. اگر می خواهید بدانید YOLO چیست، چگونه کار می کند، چه نسخه هایی دارد، در چه پروژه هایی استفاده می شود و چطور باید آن را آموزش یا پیاده سازی کنید، این راهنمای کامل برای شماست. در این مقاله تلاش کرده ایم آموزش YOLO را از پایه تا سطح کاربردی و پروژه محور ارائه دهیم تا هم افراد تازه کار و هم کسانی که قصد اجرای پروژه های حرفه ای دارند، بتوانند از آن استفاده کنند. YOLO چیست؟ YOLO مخفف عبارت You Only Look Once است. این نام به روشی اشاره دارد که مدل در آن فقط با یک بار نگاه کردن به تصویر، اشیا موجود را شناسایی و مکان آنها را مشخص می کند. برخلاف بسیاری از روش های قدیمی تر که تصویر را در چند مرحله بررسی می کردند، YOLO کل تصویر را به صورت یکجا پردازش می کند. خروجی YOLO معمولا شامل این موارد است: نوع شیء موجود در تصویر محل قرارگیری آن شیء با استفاده از کادر میزان اطمینان مدل به تشخیص انجام شده به زبان ساده، اگر تصویری از خیابان به YOLO بدهید، مدل می تواند همزمان خودرو، انسان، دوچرخه، چراغ راهنمایی و اشیای دیگر را تشخیص دهد. چرا YOLO مهم است؟ محبوبیت YOLO فقط به دلیل دقت آن نیست، بلکه به خاطر توازن خوب میان سرعت و کارایی است. در بسیاری از پروژه های واقعی، فقط دقت بالا کافی نیست و سیستم باید در زمان واقعی هم پاسخ بدهد. مهم ترین مزایای YOLO سرعت بسیار بالا در تشخیص اشیا مناسب برای پردازش ویدیو و داده زنده قابلیت استفاده در سیستم های نظارتی، صنعتی و موبایل امکان آموزش با داده سفارشی پشتیبانی خوب در ابزارها و کتابخانه های جدید محدودیت های YOLO در بعضی سناریوها برای اشیای بسیار کوچک چالش دارد کیفیت خروجی به شدت به کیفیت دیتاست وابسته است آموزش مدل های سنگین نیازمند سخت افزار مناسب است انتخاب نسخه مناسب برای هر پروژه نیاز به شناخت فنی دارد YOLO چگونه کار می کند؟ برای درک YOLO لازم نیست حتما وارد جزئیات پیچیده ریاضی شوید. منطق کلی آن این است که تصویر ورودی به بخش هایی تقسیم می شود و مدل تلاش می کند در هر بخش تشخیص دهد که آیا شیئی وجود دارد یا خیر. مدل YOLO برای هر شیء این اطلاعات را پیش بینی می کند: مختصات کادر اطراف شیء احتمال وجود شیء کلاس شیء مانند انسان، خودرو، سگ یا تلفن همراه سپس با استفاده از فرایندی مانند Non Maximum Suppression، کادرهای تکراری حذف می شوند تا بهترین نتیجه باقی بماند. تفاوت YOLO با روش های قدیمی تر در روش هایی مانند R-CNN یا Fast R-CNN، ابتدا ناحیه های پیشنهادی تولید می شد و بعد مدل آنها را بررسی می کرد. اما YOLO این مراحل را یکپارچه کرد. نتیجه این تغییر، سرعت بیشتر و مناسب بودن برای کاربردهای بلادرنگ بود. تاریخچه YOLO و نسخه های مختلف آن YOLO در طول زمان نسخه های مختلفی داشته و هر نسخه تلاش کرده ضعف های نسخه قبلی را کاهش دهد و عملکرد را بهتر کند. YOLOv1 اولین نسخه YOLO مفهوم تشخیص یک مرحله ای را به شکل جدی مطرح کرد. این نسخه بسیار سریع بود، اما در تشخیص اشیای کوچک و برخی موارد پیچیده محدودیت داشت. YOLOv2 و YOLOv3 این نسخه ها دقت را بهتر کردند و از ساختارهای قوی تری برای استخراج ویژگی استفاده کردند. YOLOv3 مدت زیادی یکی از نسخه های محبوب برای پروژه های عملی بود. YOLOv4 و YOLOv5 YOLOv4 با تمرکز بر بهبود عملکرد و بهینه سازی برای استفاده واقعی معرفی شد. بعد از آن YOLOv5 توسط جامعه توسعه دهندگان و مخصوصا Ultralytics محبوب شد، چون استفاده از آن ساده تر و فرایند آموزش و استقرار آن کاربردی تر بود. YOLOv6 ، YOLOv7 ، YOLOv8 و نسخه های جدیدتر نسخه های جدید YOLO نه تنها تشخیص اشیا، بلکه وظایفی مانند segmentation، pose estimation و tracking را هم بهتر پشتیبانی می کنند. در حال حاضر بسیاری از توسعه دهندگان برای شروع، از YOLOv8 یا نسخه های جدیدتر اکوسیستم Ultralytics استفاده می کنند. برای مطالعه مرجع رسمی، می توانید مستندات Ultralytics را ببینید: https://docs.ultralytics.com/ اجزای اصلی مدل YOLO برای فهم بهتر آموزش YOLO، خوب است با اجزای اصلی آن آشنا شوید. Backbone بخش Backbone مسئول استخراج ویژگی ها از تصویر است. این قسمت الگوهای مهم تصویر مثل لبه ها، بافت ها و شکل ها را تشخیص می دهد. Neck Neck ویژگی های استخراج شده را ترکیب می کند تا مدل بتواند اشیا را در اندازه های مختلف بهتر تشخیص دهد. Head بخش Head خروجی نهایی را تولید می کند؛ یعنی محل اشیا، کلاس آنها و امتیاز اطمینان. YOLO در چه کاربردهایی استفاده می شود؟ YOLO فقط یک مدل دانشگاهی نیست، بلکه در دنیای واقعی کاربردهای فراوانی دارد. کاربردهای رایج YOLO سیستم های نظارت تصویری تشخیص خودرو و پلاک فروشگاه های هوشمند تحلیل تصاویر پزشکی در برخی پروژه ها کشاورزی هوشمند تشخیص عیب در خطوط تولید خودروهای خودران و کمک راننده اپلیکیشن های موبایل مبتنی بر دوربین شمارش افراد یا اشیا در محیط های پرتردد پیش نیازهای یادگیری YOLO اگر می خواهید YOLO را از صفر یاد بگیرید، بهتر است این پیش نیازها را تا حدی بشناسید: آشنایی مقدماتی با پایتون درک پایه از یادگیری ماشین و یادگیری عمیق آشنایی با تصاویر، پیکسل و داده های برچسب گذاری شده شناخت اولیه از کتابخانه هایی مثل PyTorch یا OpenCV توانایی کار با محیط هایی مثل Jupyter Notebook یا VS Code اگر هنوز در ابتدای مسیر هوش مصنوعی هستید، نگران نباشید. برای شروع کار با YOLO لازم نیست متخصص ریاضی یا پژوهشگر بینایی ماشین باشید. بسیاری از پروژه های عملی با آموزش های استاندارد و دیتاست مناسب قابل اجرا هستند. دیتاست در YOLO چیست و چرا اهمیت دارد؟ هیچ مدل YOLO بدون دیتاست خوب نتیجه مطلوب نمی دهد. دیتاست مجموعه ای از تصاویر است که در آنها اشیا موردنظر مشخص و برچسب گذاری شده اند. ویژگی های یک دیتاست مناسب تصاویر کافی و متنوع نور، زاویه و پس زمینه متفاوت برچسب گذاری دقیق توازن نسبی بین کلاس ها شباهت به شرایط واقعی پروژه برای نمونه، اگر می خواهید مدل تشخیص کلاه ایمنی بسازید، باید تصاویر محیط واقعی کارگاهی را جمع آوری کنید، نه فقط چند تصویر ساده اینترنتی. فرمت برچسب در YOLO در بسیاری از نسخه های YOLO، برای هر تصویر یک فایل متنی وجود دارد که شامل این موارد است: شناسه کلاس مختصات مرکز شیء عرض کادر ارتفاع کادر این داده ها معمولا به صورت نرمال شده ذخیره می شوند. مراحل آموزش YOLO از صفر تا صد در این بخش، فرایند کلی آموزش یک مدل YOLO را مرحله به مرحله بررسی می کنیم. 1) تعریف مسئله ابتدا باید دقیقا مشخص کنید چه چیزی را می خواهید تشخیص دهید. مثلا: تشخیص چهره تشخیص خودرو تشخیص خرابی محصول تشخیص حیوانات در مزرعه هرچه مسئله روشن تر باشد، انتخاب داده و مدل بهتر انجام می شود. 2) جمع آوری داده تصاویر مرتبط با مسئله را جمع آوری کنید. کیفیت داده در این مرحله تاثیر مستقیمی بر نتیجه دارد. 3) برچسب گذاری تصاویر باید برای هر تصویر، محل دقیق اشیا را با Bounding Box مشخص کنید. ابزارهایی مثل LabelImg یا Roboflow در این بخش کاربردی هستند. LabelImg: https://github.com/HumanSignal/labelImg Roboflow: https://roboflow.com/ 4) تقسیم داده داده ها را معمولا به سه بخش تقسیم می کنند: داده آموزشی داده اعتبارسنجی داده آزمون این تقسیم بندی کمک می کند بفهمید مدل واقعا یاد گرفته یا فقط داده های آموزشی را حفظ کرده است. 5) انتخاب نسخه مناسب YOLO اگر تازه کار هستید، نسخه هایی مانند YOLOv8 به دلیل مستندات بهتر و فرایند ساده تر، گزینه مناسبی هستند. اگر محدودیت سخت افزاری دارید، می توانید مدل های سبک تر را انتخاب کنید. 6) آموزش مدل در این مرحله مدل با استفاده از داده های آموزشی یاد می گیرد اشیا را تشخیص دهد. در طول آموزش، معیارهایی مثل loss و mAP بررسی می شوند. 7) ارزیابی مدل بعد از آموزش، باید عملکرد مدل را روی داده های جدید بسنجید. این مرحله مشخص می کند مدل تا چه حد قابل اعتماد است. 8) بهینه سازی و بهبود اگر نتیجه ضعیف باشد، باید یکی از این موارد را اصلاح کنید: افزایش کیفیت دیتاست افزودن داده های بیشتر اصلاح برچسب ها تغییر نسخه مدل تنظیم بهتر پارامترهای آموزش 9) استقرار مدل مدل آموزش دیده می تواند در این محیط ها استفاده شود: وب اپلیکیشن اپلیکیشن اندروید و iOS سیستم های دسکتاپ سرورهای ابری دوربین های هوشمند و دستگاه های Edge این بخش برای کسب و کارها بسیار مهم است، چون ارزش واقعی مدل زمانی مشخص می شود که وارد فرایند عملیاتی شود. معیارهای مهم ارزیابی در YOLO برای اینکه بدانید مدل شما خوب کار می کند یا نه، باید با چند معیار کلیدی آشنا شوید. Precision نشان می دهد از میان تشخیص های مثبت مدل، چه تعداد درست بوده اند. Recall نشان می دهد از میان اشیای واقعی موجود، چند مورد توسط مدل پیدا شده اند. mAP یکی از مهم ترین معیارها برای سنجش عملکرد مدل های تشخیص اشیا است و در مقایسه مدل ها بسیار استفاده می شود. IoU میزان هم پوشانی کادر پیش بینی شده با کادر واقعی را نشان می دهد. YOLO برای چه کسانی مناسب است؟ آموزش YOLO فقط مخصوص متخصصان دانشگاهی نیست. این فناوری برای گروه های مختلف کاربرد دارد. توسعه دهندگان نرم افزار اگر در حوزه پایتون، هوش مصنوعی، پردازش تصویر یا برنامه نویسی اپلیکیشن کار می کنید، YOLO می تواند یک ابزار مهم برای ساخت محصولات هوشمند باشد. استارتاپ ها استارتاپ هایی که در حوزه امنیت، فروشگاه هوشمند، سلامت دیجیتال، لجستیک یا تحلیل ویدیو فعال هستند، می توانند از YOLO برای ساخت راهکارهای سریع و مقیاس پذیر استفاده کنند. کسب و کارها و کارفرماها اگر صاحب کسب و کار هستید، لازم نیست جزئیات فنی YOLO را حفظ باشید. مهم این است که بدانید این مدل می تواند در اتوماسیون، کنترل کیفیت، نظارت و کاهش هزینه های عملیاتی نقش مهمی داشته باشد. مزایای استفاده از YOLO در پروژه های تجاری در پروژه های واقعی، انتخاب فناوری باید بر اساس هزینه، سرعت توسعه و نتیجه نهایی باشد. YOLO از این نظر انتخاب خوبی است. مهم ترین مزایای تجاری YOLO کاهش زمان پردازش تصویر مناسب برای سیستم های لحظه ای قابلیت ادغام با نرم افزارهای وب و موبایل امکان توسعه سفارشی بر اساس نیاز کسب و کار صرفه جویی در هزینه نسبت به ساخت مدل از صفر چالش های پیاده سازی YOLO در پروژه واقعی هرچند YOLO ابزار قدرتمندی است، اما اجرای موفق آن نیازمند برنامه ریزی درست است. چالش های رایج دیتاست نامناسب یا کم حجم برچسب گذاری نادرست انتخاب مدل نامتناسب با سخت افزار افت دقت در محیط واقعی نیاز به بهینه سازی برای اجرا روی موبایل یا Edge پیچیدگی استقرار در مقیاس بالا به همین دلیل، در پروژه های حرفه ای معمولا علاوه بر آموزش مدل، به طراحی معماری نرم افزار، پردازش داده، رابط کاربری و استقرار نیز توجه می شود. تفاوت YOLO با سایر مدل های تشخیص اشیا مدل های مختلفی برای object detection وجود دارند، اما YOLO به خاطر سرعت بالا شناخته می شود. مقایسه کلی YOLO: سریع، مناسب برای زمان واقعی، کاربردی برای پروژه های عملی Faster R-CNN: معمولا دقیق تر در برخی سناریوها، اما کندتر SSD: سبک و سریع، اما در بعضی شرایط ضعیف تر از نسخه های جدید YOLO EfficientDet: مناسب برای برخی کاربردها با توازن خوب میان دقت و سرعت اگر اولویت شما اجرای سریع و استفاده در دنیای واقعی باشد، YOLO معمولا گزینه بسیار مناسبی است. آیا YOLO فقط برای تشخیص اشیا است؟ خیر. اکوسیستم جدید YOLO در بسیاری از نسخه ها فقط به object detection محدود نیست. قابلیت های جدیدتر Segmentation Classification Pose Estimation Object Tracking این یعنی شما می توانید از خانواده YOLO برای پروژه های متنوع تری استفاده کنید. نمونه مسیر یادگیری YOLO برای مبتدی ها اگر نمی دانید از کجا شروع کنید، این نقشه راه می تواند مفید باشد. مسیر پیشنهادی یادگیری مقدماتی پایتون آشنایی با مفاهیم یادگیری عمیق شناخت OpenCV و پردازش تصویر اجرای یک پروژه ساده با مدل آماده YOLO یادگیری برچسب گذاری داده آموزش مدل سفارشی با دیتاست شخصی استقرار مدل در وب یا موبایل برای یادگیری بیشتر درباره بینایی ماشین و پردازش تصویر، مطالعه مستندات OpenCV هم مفید است: https://opencv.org/ آیا YOLO برای موبایل و وب مناسب است؟ بله، اما به شرط انتخاب مدل مناسب و بهینه سازی درست. مدل های سنگین ممکن است روی دستگاه های ضعیف یا پروژه های کم منابع به خوبی اجرا نشوند. در چنین شرایطی از نسخه های سبک تر یا روش های تبدیل مدل استفاده می شود. موارد مهم در استقرار انتخاب نسخه سبک کاهش اندازه مدل تست روی داده واقعی بهینه سازی زمان پاسخ هماهنگی با زیرساخت سرور یا اپلیکیشن برای کسب و کارهایی که به راهکار کامل نیاز دارند، فقط مدل کافی نیست؛ طراحی سایت، پنل مدیریتی، اپلیکیشن موبایل و زیرساخت نرم افزاری هم اهمیت دارد. اینجا است که یک تیم فنی چند تخصصی می تواند پروژه را از ایده تا اجرا پیش ببرد. نقش YOLO در آینده کسب و کارها با رشد دوربین های هوشمند، تحلیل ویدیو، اتوماسیون صنعتی و خدمات دیجیتال، مدل هایی مثل YOLO نقش بیشتری در آینده کسب و کارها خواهند داشت. بسیاری از فرایندهایی که قبلا دستی، زمان بر و پرخطا بودند، اکنون با بینایی ماشین قابل اتوماسیون هستند. از نظارت تصویری گرفته تا کنترل کیفیت، مدیریت فروشگاه، تحلیل رفتار مشتری و امنیت، YOLO می تواند بخشی از یک راهکار هوشمند و مقیاس پذیر باشد. جمع بندی اگر به دنبال یک مدل سریع، کاربردی و شناخته شده برای تشخیص اشیا هستید، YOLO یکی از بهترین گزینه ها است. این مدل به شما کمک می کند با یک ساختار نسبتا ساده تر نسبت به بسیاری از روش های قدیمی، پروژه های تشخیص اشیا را اجرا کنید. البته موفقیت در استفاده از YOLO فقط به انتخاب مدل وابسته نیست و کیفیت داده، نوع مسئله، روش آموزش و استقرار نیز نقش تعیین کننده دارند. برای افراد مبتدی، بهترین مسیر این است که ابتدا با نسخه های آماده شروع کنند، سپس سراغ دیتاست سفارشی و پروژه های واقعی بروند. برای کسب و کارها نیز YOLO زمانی بیشترین ارزش را ایجاد می کند که در قالب یک راهکار کامل نرم افزاری پیاده سازی شود. اگر برای طراحی و پیاده سازی یک راهکار هوشمند مبتنی بر بینایی ماشین، وب اپلیکیشن، نرم افزار دسکتاپ یا اپلیکیشن موبایل نیاز به اجرای فنی دقیق دارید، طراحان نوین می تواند در کنار توسعه نرم افزار، زیرساخت و تجربه کاربری پروژه نیز نقش موثری داشته باشد.</p>
<p>نوشته <a href="https://tarahanenovin.ir/blog/%d8%a2%d9%85%d9%88%d8%b2%d8%b4-%da%a9%d8%a7%d9%85%d9%84-yolo-%d8%a7%d8%b2-%d8%b5%d9%81%d8%b1-%d8%aa%d8%a7-%d8%b5%d8%af-%d9%87%d8%b1-%d8%a2%d9%86%da%86%d9%87-%d8%a8%d8%a7%db%8c%d8%af-%d8%af%d8%b1/">آموزش کامل YOLO از صفر تا صد | هر آنچه باید درباره مدل YOLO بدانید</a> اولین بار در <a href="https://tarahanenovin.ir/blog">نوین هاب</a>. پدیدار شد.</p>
]]></description>
										<content:encoded><![CDATA[<p dir="rtl" lang="fa">YOLO یکی از مهم ترین مدل های تشخیص اشیا در بینایی ماشین است که به دلیل سرعت بالا، دقت مناسب و قابلیت استفاده در پروژه های واقعی، توجه توسعه دهندگان، پژوهشگران و کسب و کارها را به خود جلب کرده است. اگر می خواهید بدانید YOLO چیست، چگونه کار می کند، چه نسخه هایی دارد، در چه پروژه هایی استفاده می شود و چطور باید آن را آموزش یا پیاده سازی کنید، این راهنمای کامل برای شماست.</p>
<p dir="rtl" lang="fa">در این مقاله تلاش کرده ایم آموزش YOLO را از پایه تا سطح کاربردی و پروژه محور ارائه دهیم تا هم افراد تازه کار و هم کسانی که قصد اجرای پروژه های حرفه ای دارند، بتوانند از آن استفاده کنند.</p>
<h2 dir="rtl" lang="fa">YOLO چیست؟</h2>
<p dir="rtl" lang="fa">YOLO مخفف عبارت You Only Look Once است. این نام به روشی اشاره دارد که مدل در آن فقط با یک بار نگاه کردن به تصویر، اشیا موجود را شناسایی و مکان آنها را مشخص می کند. برخلاف بسیاری از روش های قدیمی تر که تصویر را در چند مرحله بررسی می کردند، YOLO کل تصویر را به صورت یکجا پردازش می کند.</p>
<p dir="rtl" lang="fa">خروجی YOLO معمولا شامل این موارد است:</p>
<ul dir="rtl" lang="fa">
<li>نوع شیء موجود در تصویر</li>
<li>محل قرارگیری آن شیء با استفاده از کادر</li>
<li>میزان اطمینان مدل به تشخیص انجام شده</li>
</ul>
<p dir="rtl" lang="fa">به زبان ساده، اگر تصویری از خیابان به YOLO بدهید، مدل می تواند همزمان خودرو، انسان، دوچرخه، چراغ راهنمایی و اشیای دیگر را تشخیص دهد.</p>
<h2 dir="rtl" lang="fa">چرا YOLO مهم است؟</h2>
<p dir="rtl" lang="fa">محبوبیت YOLO فقط به دلیل دقت آن نیست، بلکه به خاطر توازن خوب میان سرعت و کارایی است. در بسیاری از پروژه های واقعی، فقط دقت بالا کافی نیست و سیستم باید در زمان واقعی هم پاسخ بدهد.</p>
<h3 dir="rtl" lang="fa">مهم ترین مزایای YOLO</h3>
<ul dir="rtl" lang="fa">
<li>سرعت بسیار بالا در تشخیص اشیا</li>
<li>مناسب برای پردازش ویدیو و داده زنده</li>
<li>قابلیت استفاده در سیستم های نظارتی، صنعتی و موبایل</li>
<li>امکان آموزش با داده سفارشی</li>
<li>پشتیبانی خوب در ابزارها و کتابخانه های جدید</li>
</ul>
<h3 dir="rtl" lang="fa">محدودیت های YOLO</h3>
<ul dir="rtl" lang="fa">
<li>در بعضی سناریوها برای اشیای بسیار کوچک چالش دارد</li>
<li>کیفیت خروجی به شدت به کیفیت دیتاست وابسته است</li>
<li>آموزش مدل های سنگین نیازمند سخت افزار مناسب است</li>
<li>انتخاب نسخه مناسب برای هر پروژه نیاز به شناخت فنی دارد</li>
</ul>
<h2 dir="rtl" lang="fa">YOLO چگونه کار می کند؟</h2>
<p dir="rtl" lang="fa">برای درک YOLO لازم نیست حتما وارد جزئیات پیچیده ریاضی شوید. منطق کلی آن این است که تصویر ورودی به بخش هایی تقسیم می شود و مدل تلاش می کند در هر بخش تشخیص دهد که آیا شیئی وجود دارد یا خیر.</p>
<p dir="rtl" lang="fa">مدل YOLO برای هر شیء این اطلاعات را پیش بینی می کند:</p>
<ul dir="rtl" lang="fa">
<li>مختصات کادر اطراف شیء</li>
<li>احتمال وجود شیء</li>
<li>کلاس شیء مانند انسان، خودرو، سگ یا تلفن همراه</li>
</ul>
<p dir="rtl" lang="fa">سپس با استفاده از فرایندی مانند Non Maximum Suppression، کادرهای تکراری حذف می شوند تا بهترین نتیجه باقی بماند.</p>
<h3 dir="rtl" lang="fa">تفاوت YOLO با روش های قدیمی تر</h3>
<p dir="rtl" lang="fa">در روش هایی مانند R-CNN یا Fast R-CNN، ابتدا ناحیه های پیشنهادی تولید می شد و بعد مدل آنها را بررسی می کرد. اما YOLO این مراحل را یکپارچه کرد. نتیجه این تغییر، سرعت بیشتر و مناسب بودن برای کاربردهای بلادرنگ بود.</p>
<h2 dir="rtl" lang="fa">تاریخچه YOLO و نسخه های مختلف آن</h2>
<p dir="rtl" lang="fa">YOLO در طول زمان نسخه های مختلفی داشته و هر نسخه تلاش کرده ضعف های نسخه قبلی را کاهش دهد و عملکرد را بهتر کند.</p>
<h3 lang="en">YOLOv1</h3>
<p dir="rtl" lang="fa">اولین نسخه YOLO مفهوم تشخیص یک مرحله ای را به شکل جدی مطرح کرد. این نسخه بسیار سریع بود، اما در تشخیص اشیای کوچک و برخی موارد پیچیده محدودیت داشت.</p>
<h3 lang="en">YOLOv2 و YOLOv3</h3>
<p dir="rtl" lang="fa">این نسخه ها دقت را بهتر کردند و از ساختارهای قوی تری برای استخراج ویژگی استفاده کردند. YOLOv3 مدت زیادی یکی از نسخه های محبوب برای پروژه های عملی بود.</p>
<h3 lang="en">YOLOv4 و YOLOv5</h3>
<p dir="rtl" lang="fa">YOLOv4 با تمرکز بر بهبود عملکرد و بهینه سازی برای استفاده واقعی معرفی شد. بعد از آن YOLOv5 توسط جامعه توسعه دهندگان و مخصوصا Ultralytics محبوب شد، چون استفاده از آن ساده تر و فرایند آموزش و استقرار آن کاربردی تر بود.</p>
<h3 dir="rtl" lang="fa">YOLOv6 ، YOLOv7 ، YOLOv8 و نسخه های جدیدتر</h3>
<p dir="rtl" lang="fa">نسخه های جدید YOLO نه تنها تشخیص اشیا، بلکه وظایفی مانند segmentation، pose estimation و tracking را هم بهتر پشتیبانی می کنند. در حال حاضر بسیاری از توسعه دهندگان برای شروع، از YOLOv8 یا نسخه های جدیدتر اکوسیستم Ultralytics استفاده می کنند.</p>
<p dir="rtl" lang="fa">برای مطالعه مرجع رسمی، می توانید مستندات Ultralytics را ببینید:</p>
<p lang="en"><a href="https://docs.ultralytics.com/" target="_blank" rel="nofollow noopener noreferrer">https://docs.ultralytics.com/</a></p>
<h2 dir="rtl" lang="fa">اجزای اصلی مدل YOLO</h2>
<p dir="rtl" lang="fa">برای فهم بهتر آموزش YOLO، خوب است با اجزای اصلی آن آشنا شوید.</p>
<h3 lang="en">Backbone</h3>
<p dir="rtl" lang="fa">بخش Backbone مسئول استخراج ویژگی ها از تصویر است. این قسمت الگوهای مهم تصویر مثل لبه ها، بافت ها و شکل ها را تشخیص می دهد.</p>
<h3 lang="en">Neck</h3>
<p dir="rtl" lang="fa">Neck ویژگی های استخراج شده را ترکیب می کند تا مدل بتواند اشیا را در اندازه های مختلف بهتر تشخیص دهد.</p>
<h3 lang="en">Head</h3>
<p dir="rtl" lang="fa">بخش Head خروجی نهایی را تولید می کند؛ یعنی محل اشیا، کلاس آنها و امتیاز اطمینان.</p>
<h2 dir="rtl" lang="fa">YOLO در چه کاربردهایی استفاده می شود؟</h2>
<p dir="rtl" lang="fa">YOLO فقط یک مدل دانشگاهی نیست، بلکه در دنیای واقعی کاربردهای فراوانی دارد.</p>
<h3 dir="rtl" lang="fa">کاربردهای رایج YOLO</h3>
<ul dir="rtl" lang="fa">
<li>سیستم های نظارت تصویری</li>
<li>تشخیص خودرو و پلاک</li>
<li>فروشگاه های هوشمند</li>
<li>تحلیل تصاویر پزشکی در برخی پروژه ها</li>
<li>کشاورزی هوشمند</li>
<li>تشخیص عیب در خطوط تولید</li>
<li>خودروهای خودران و کمک راننده</li>
<li>اپلیکیشن های موبایل مبتنی بر دوربین</li>
<li>شمارش افراد یا اشیا در محیط های پرتردد</li>
</ul>
<h2 dir="rtl" lang="fa">پیش نیازهای یادگیری YOLO</h2>
<p dir="rtl" lang="fa">اگر می خواهید YOLO را از صفر یاد بگیرید، بهتر است این پیش نیازها را تا حدی بشناسید:</p>
<ul dir="rtl" lang="fa">
<li>آشنایی مقدماتی با پایتون</li>
<li>درک پایه از یادگیری ماشین و یادگیری عمیق</li>
<li>آشنایی با تصاویر، پیکسل و داده های برچسب گذاری شده</li>
<li>شناخت اولیه از کتابخانه هایی مثل PyTorch یا OpenCV</li>
<li>توانایی کار با محیط هایی مثل Jupyter Notebook یا VS Code</li>
</ul>
<p dir="rtl" lang="fa">اگر هنوز در ابتدای مسیر هوش مصنوعی هستید، نگران نباشید. برای شروع کار با YOLO لازم نیست متخصص ریاضی یا پژوهشگر بینایی ماشین باشید. بسیاری از پروژه های عملی با آموزش های استاندارد و دیتاست مناسب قابل اجرا هستند.</p>
<h2 dir="rtl" lang="fa">دیتاست در YOLO چیست و چرا اهمیت دارد؟</h2>
<p dir="rtl" lang="fa">هیچ مدل YOLO بدون دیتاست خوب نتیجه مطلوب نمی دهد. دیتاست مجموعه ای از تصاویر است که در آنها اشیا موردنظر مشخص و برچسب گذاری شده اند.</p>
<h3 dir="rtl" lang="fa">ویژگی های یک دیتاست مناسب</h3>
<ul dir="rtl" lang="fa">
<li>تصاویر کافی و متنوع</li>
<li>نور، زاویه و پس زمینه متفاوت</li>
<li>برچسب گذاری دقیق</li>
<li>توازن نسبی بین کلاس ها</li>
<li>شباهت به شرایط واقعی پروژه</li>
</ul>
<p dir="rtl" lang="fa">برای نمونه، اگر می خواهید مدل تشخیص کلاه ایمنی بسازید، باید تصاویر محیط واقعی کارگاهی را جمع آوری کنید، نه فقط چند تصویر ساده اینترنتی.</p>
<h3 dir="rtl" lang="fa">فرمت برچسب در YOLO</h3>
<p dir="rtl" lang="fa">در بسیاری از نسخه های YOLO، برای هر تصویر یک فایل متنی وجود دارد که شامل این موارد است:</p>
<ul dir="rtl" lang="fa">
<li>شناسه کلاس</li>
<li>مختصات مرکز شیء</li>
<li>عرض کادر</li>
<li>ارتفاع کادر</li>
</ul>
<p dir="rtl" lang="fa">این داده ها معمولا به صورت نرمال شده ذخیره می شوند.</p>
<h2 dir="rtl" lang="fa">مراحل آموزش YOLO از صفر تا صد</h2>
<p dir="rtl" lang="fa">در این بخش، فرایند کلی آموزش یک مدل YOLO را مرحله به مرحله بررسی می کنیم.</p>
<h3 dir="rtl" lang="fa">1) تعریف مسئله</h3>
<p dir="rtl" lang="fa">ابتدا باید دقیقا مشخص کنید چه چیزی را می خواهید تشخیص دهید. مثلا:</p>
<ul dir="rtl" lang="fa">
<li>تشخیص چهره</li>
<li>تشخیص خودرو</li>
<li>تشخیص خرابی محصول</li>
<li>تشخیص حیوانات در مزرعه</li>
</ul>
<p dir="rtl" lang="fa">هرچه مسئله روشن تر باشد، انتخاب داده و مدل بهتر انجام می شود.</p>
<h3 dir="rtl" lang="fa">2) جمع آوری داده</h3>
<p dir="rtl" lang="fa">تصاویر مرتبط با مسئله را جمع آوری کنید. کیفیت داده در این مرحله تاثیر مستقیمی بر نتیجه دارد.</p>
<h3 dir="rtl" lang="fa">3) برچسب گذاری تصاویر</h3>
<p dir="rtl" lang="fa">باید برای هر تصویر، محل دقیق اشیا را با Bounding Box مشخص کنید. ابزارهایی مثل LabelImg یا Roboflow در این بخش کاربردی هستند.</p>
<ul lang="en">
<li>LabelImg:</li>
</ul>
<p lang="en"><a href="https://github.com/HumanSignal/labelImg" target="_blank" rel="nofollow noopener noreferrer">https://github.com/HumanSignal/labelImg</a></p>
<ul lang="en">
<li>Roboflow:</li>
</ul>
<p lang="en"><a href="https://roboflow.com/" target="_blank" rel="nofollow noopener noreferrer">https://roboflow.com/</a></p>
<h3 dir="rtl" lang="fa">4) تقسیم داده</h3>
<p dir="rtl" lang="fa">داده ها را معمولا به سه بخش تقسیم می کنند:</p>
<ul dir="rtl" lang="fa">
<li>داده آموزشی</li>
<li>داده اعتبارسنجی</li>
<li>داده آزمون</li>
</ul>
<p dir="rtl" lang="fa">این تقسیم بندی کمک می کند بفهمید مدل واقعا یاد گرفته یا فقط داده های آموزشی را حفظ کرده است.</p>
<h3 dir="rtl" lang="fa">5) انتخاب نسخه مناسب YOLO</h3>
<p dir="rtl" lang="fa">اگر تازه کار هستید، نسخه هایی مانند YOLOv8 به دلیل مستندات بهتر و فرایند ساده تر، گزینه مناسبی هستند. اگر محدودیت سخت افزاری دارید، می توانید مدل های سبک تر را انتخاب کنید.</p>
<h3 dir="rtl" lang="fa">6) آموزش مدل</h3>
<p dir="rtl" lang="fa">در این مرحله مدل با استفاده از داده های آموزشی یاد می گیرد اشیا را تشخیص دهد. در طول آموزش، معیارهایی مثل loss و mAP بررسی می شوند.</p>
<h3 dir="rtl" lang="fa">7) ارزیابی مدل</h3>
<p dir="rtl" lang="fa">بعد از آموزش، باید عملکرد مدل را روی داده های جدید بسنجید. این مرحله مشخص می کند مدل تا چه حد قابل اعتماد است.</p>
<h3 dir="rtl" lang="fa">8) بهینه سازی و بهبود</h3>
<p dir="rtl" lang="fa">اگر نتیجه ضعیف باشد، باید یکی از این موارد را اصلاح کنید:</p>
<ul dir="rtl" lang="fa">
<li>افزایش کیفیت دیتاست</li>
<li>افزودن داده های بیشتر</li>
<li>اصلاح برچسب ها</li>
<li>تغییر نسخه مدل</li>
<li>تنظیم بهتر پارامترهای آموزش</li>
</ul>
<h3 dir="rtl" lang="fa">9) استقرار مدل</h3>
<p dir="rtl" lang="fa">مدل آموزش دیده می تواند در این محیط ها استفاده شود:</p>
<ul dir="rtl" lang="fa">
<li>وب اپلیکیشن</li>
<li>اپلیکیشن اندروید و iOS</li>
<li>سیستم های دسکتاپ</li>
<li>سرورهای ابری</li>
<li>دوربین های هوشمند و دستگاه های Edge</li>
</ul>
<p dir="rtl" lang="fa">این بخش برای کسب و کارها بسیار مهم است، چون ارزش واقعی مدل زمانی مشخص می شود که وارد فرایند عملیاتی شود.</p>
<h2 dir="rtl" lang="fa">معیارهای مهم ارزیابی در YOLO</h2>
<p dir="rtl" lang="fa">برای اینکه بدانید مدل شما خوب کار می کند یا نه، باید با چند معیار کلیدی آشنا شوید.</p>
<h3 lang="en">Precision</h3>
<p dir="rtl" lang="fa">نشان می دهد از میان تشخیص های مثبت مدل، چه تعداد درست بوده اند.</p>
<h3 lang="en">Recall</h3>
<p dir="rtl" lang="fa">نشان می دهد از میان اشیای واقعی موجود، چند مورد توسط مدل پیدا شده اند.</p>
<h3 lang="en">mAP</h3>
<p dir="rtl" lang="fa">یکی از مهم ترین معیارها برای سنجش عملکرد مدل های تشخیص اشیا است و در مقایسه مدل ها بسیار استفاده می شود.</p>
<h3 lang="en">IoU</h3>
<p dir="rtl" lang="fa">میزان هم پوشانی کادر پیش بینی شده با کادر واقعی را نشان می دهد.</p>
<h2 dir="rtl" lang="fa">YOLO برای چه کسانی مناسب است؟</h2>
<p dir="rtl" lang="fa">آموزش YOLO فقط مخصوص متخصصان دانشگاهی نیست. این فناوری برای گروه های مختلف کاربرد دارد.</p>
<h3 dir="rtl" lang="fa">توسعه دهندگان نرم افزار</h3>
<p dir="rtl" lang="fa">اگر در حوزه پایتون، هوش مصنوعی، پردازش تصویر یا برنامه نویسی اپلیکیشن کار می کنید، YOLO می تواند یک ابزار مهم برای ساخت محصولات هوشمند باشد.</p>
<h3 dir="rtl" lang="fa">استارتاپ ها</h3>
<p dir="rtl" lang="fa">استارتاپ هایی که در حوزه امنیت، فروشگاه هوشمند، سلامت دیجیتال، لجستیک یا تحلیل ویدیو فعال هستند، می توانند از YOLO برای ساخت راهکارهای سریع و مقیاس پذیر استفاده کنند.</p>
<h3 dir="rtl" lang="fa">کسب و کارها و کارفرماها</h3>
<p dir="rtl" lang="fa">اگر صاحب کسب و کار هستید، لازم نیست جزئیات فنی YOLO را حفظ باشید. مهم این است که بدانید این مدل می تواند در اتوماسیون، کنترل کیفیت، نظارت و کاهش هزینه های عملیاتی نقش مهمی داشته باشد.</p>
<h2 dir="rtl" lang="fa">مزایای استفاده از YOLO در پروژه های تجاری</h2>
<p dir="rtl" lang="fa">در پروژه های واقعی، انتخاب فناوری باید بر اساس هزینه، سرعت توسعه و نتیجه نهایی باشد. YOLO از این نظر انتخاب خوبی است.</p>
<h3 dir="rtl" lang="fa">مهم ترین مزایای تجاری YOLO</h3>
<ul dir="rtl" lang="fa">
<li>کاهش زمان پردازش تصویر</li>
<li>مناسب برای سیستم های لحظه ای</li>
<li>قابلیت ادغام با نرم افزارهای وب و موبایل</li>
<li>امکان توسعه سفارشی بر اساس نیاز کسب و کار</li>
<li>صرفه جویی در هزینه نسبت به ساخت مدل از صفر</li>
</ul>
<h2 dir="rtl" lang="fa">چالش های پیاده سازی YOLO در پروژه واقعی</h2>
<p dir="rtl" lang="fa">هرچند YOLO ابزار قدرتمندی است، اما اجرای موفق آن نیازمند برنامه ریزی درست است.</p>
<h3 dir="rtl" lang="fa">چالش های رایج</h3>
<ul dir="rtl" lang="fa">
<li>دیتاست نامناسب یا کم حجم</li>
<li>برچسب گذاری نادرست</li>
<li>انتخاب مدل نامتناسب با سخت افزار</li>
<li>افت دقت در محیط واقعی</li>
<li>نیاز به بهینه سازی برای اجرا روی موبایل یا Edge</li>
<li>پیچیدگی استقرار در مقیاس بالا</li>
</ul>
<p dir="rtl" lang="fa">به همین دلیل، در پروژه های حرفه ای معمولا علاوه بر آموزش مدل، به طراحی معماری نرم افزار، پردازش داده، رابط کاربری و استقرار نیز توجه می شود.</p>
<h2 dir="rtl" lang="fa">تفاوت YOLO با سایر مدل های تشخیص اشیا</h2>
<p dir="rtl" lang="fa">مدل های مختلفی برای object detection وجود دارند، اما YOLO به خاطر سرعت بالا شناخته می شود.</p>
<h3 dir="rtl" lang="fa">مقایسه کلی</h3>
<ul dir="rtl" lang="fa">
<li>YOLO: سریع، مناسب برای زمان واقعی، کاربردی برای پروژه های عملی</li>
<li>Faster R-CNN: معمولا دقیق تر در برخی سناریوها، اما کندتر</li>
<li>SSD: سبک و سریع، اما در بعضی شرایط ضعیف تر از نسخه های جدید YOLO</li>
<li>EfficientDet: مناسب برای برخی کاربردها با توازن خوب میان دقت و سرعت</li>
</ul>
<p dir="rtl" lang="fa">اگر اولویت شما اجرای سریع و استفاده در دنیای واقعی باشد، YOLO معمولا گزینه بسیار مناسبی است.</p>
<h2 dir="rtl" lang="fa">آیا YOLO فقط برای تشخیص اشیا است؟</h2>
<p dir="rtl" lang="fa">خیر. اکوسیستم جدید YOLO در بسیاری از نسخه ها فقط به object detection محدود نیست.</p>
<h3 dir="rtl" lang="fa">قابلیت های جدیدتر</h3>
<ul lang="en">
<li>Segmentation</li>
<li>Classification</li>
<li>Pose Estimation</li>
<li>Object Tracking</li>
</ul>
<p dir="rtl" lang="fa">این یعنی شما می توانید از خانواده YOLO برای پروژه های متنوع تری استفاده کنید.</p>
<h2 dir="rtl" lang="fa">نمونه مسیر یادگیری YOLO برای مبتدی ها</h2>
<p dir="rtl" lang="fa">اگر نمی دانید از کجا شروع کنید، این نقشه راه می تواند مفید باشد.</p>
<h3 dir="rtl" lang="fa">مسیر پیشنهادی</h3>
<ul dir="rtl" lang="fa">
<li>یادگیری مقدماتی پایتون</li>
<li>آشنایی با مفاهیم یادگیری عمیق</li>
<li>شناخت OpenCV و پردازش تصویر</li>
<li>اجرای یک پروژه ساده با مدل آماده YOLO</li>
<li>یادگیری برچسب گذاری داده</li>
<li>آموزش مدل سفارشی با دیتاست شخصی</li>
<li>استقرار مدل در وب یا موبایل</li>
</ul>
<p dir="rtl" lang="fa">برای یادگیری بیشتر درباره بینایی ماشین و پردازش تصویر، مطالعه مستندات OpenCV هم مفید است:</p>
<p lang="en"><a href="https://opencv.org/" target="_blank" rel="nofollow noopener noreferrer">https://opencv.org/</a></p>
<h2 dir="rtl" lang="fa">آیا YOLO برای موبایل و وب مناسب است؟</h2>
<p dir="rtl" lang="fa">بله، اما به شرط انتخاب مدل مناسب و بهینه سازی درست. مدل های سنگین ممکن است روی دستگاه های ضعیف یا پروژه های کم منابع به خوبی اجرا نشوند. در چنین شرایطی از نسخه های سبک تر یا روش های تبدیل مدل استفاده می شود.</p>
<h3 dir="rtl" lang="fa">موارد مهم در استقرار</h3>
<ul dir="rtl" lang="fa">
<li>انتخاب نسخه سبک</li>
<li>کاهش اندازه مدل</li>
<li>تست روی داده واقعی</li>
<li>بهینه سازی زمان پاسخ</li>
<li>هماهنگی با زیرساخت سرور یا اپلیکیشن</li>
</ul>
<p dir="rtl" lang="fa">برای کسب و کارهایی که به راهکار کامل نیاز دارند، فقط مدل کافی نیست؛ طراحی سایت، پنل مدیریتی، اپلیکیشن موبایل و زیرساخت نرم افزاری هم اهمیت دارد. اینجا است که یک تیم فنی چند تخصصی می تواند پروژه را از ایده تا اجرا پیش ببرد.</p>
<h2 dir="rtl" lang="fa">نقش YOLO در آینده کسب و کارها</h2>
<p dir="rtl" lang="fa">با رشد دوربین های هوشمند، تحلیل ویدیو، اتوماسیون صنعتی و خدمات دیجیتال، مدل هایی مثل YOLO نقش بیشتری در آینده کسب و کارها خواهند داشت. بسیاری از فرایندهایی که قبلا دستی، زمان بر و پرخطا بودند، اکنون با بینایی ماشین قابل اتوماسیون هستند.</p>
<p dir="rtl" lang="fa">از نظارت تصویری گرفته تا کنترل کیفیت، مدیریت فروشگاه، تحلیل رفتار مشتری و امنیت، YOLO می تواند بخشی از یک راهکار هوشمند و مقیاس پذیر باشد.</p>
<h2 dir="rtl" lang="fa">جمع بندی</h2>
<p dir="rtl" lang="fa">اگر به دنبال یک مدل سریع، کاربردی و شناخته شده برای تشخیص اشیا هستید، YOLO یکی از بهترین گزینه ها است. این مدل به شما کمک می کند با یک ساختار نسبتا ساده تر نسبت به بسیاری از روش های قدیمی، پروژه های تشخیص اشیا را اجرا کنید. البته موفقیت در استفاده از YOLO فقط به انتخاب مدل وابسته نیست و کیفیت داده، نوع مسئله، روش آموزش و استقرار نیز نقش تعیین کننده دارند.</p>
<p dir="rtl" lang="fa">برای افراد مبتدی، بهترین مسیر این است که ابتدا با نسخه های آماده شروع کنند، سپس سراغ دیتاست سفارشی و پروژه های واقعی بروند. برای کسب و کارها نیز YOLO زمانی بیشترین ارزش را ایجاد می کند که در قالب یک راهکار کامل نرم افزاری پیاده سازی شود.</p>
<p dir="rtl" lang="fa">اگر برای طراحی و پیاده سازی یک راهکار هوشمند مبتنی بر بینایی ماشین، وب اپلیکیشن، نرم افزار دسکتاپ یا اپلیکیشن موبایل نیاز به اجرای فنی دقیق دارید، طراحان نوین می تواند در کنار توسعه نرم افزار، زیرساخت و تجربه کاربری پروژه نیز نقش موثری داشته باشد.</p>
<p>نوشته <a href="https://tarahanenovin.ir/blog/%d8%a2%d9%85%d9%88%d8%b2%d8%b4-%da%a9%d8%a7%d9%85%d9%84-yolo-%d8%a7%d8%b2-%d8%b5%d9%81%d8%b1-%d8%aa%d8%a7-%d8%b5%d8%af-%d9%87%d8%b1-%d8%a2%d9%86%da%86%d9%87-%d8%a8%d8%a7%db%8c%d8%af-%d8%af%d8%b1/">آموزش کامل YOLO از صفر تا صد | هر آنچه باید درباره مدل YOLO بدانید</a> اولین بار در <a href="https://tarahanenovin.ir/blog">نوین هاب</a>. پدیدار شد.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://tarahanenovin.ir/blog/%d8%a2%d9%85%d9%88%d8%b2%d8%b4-%da%a9%d8%a7%d9%85%d9%84-yolo-%d8%a7%d8%b2-%d8%b5%d9%81%d8%b1-%d8%aa%d8%a7-%d8%b5%d8%af-%d9%87%d8%b1-%d8%a2%d9%86%da%86%d9%87-%d8%a8%d8%a7%db%8c%d8%af-%d8%af%d8%b1/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
