تشخیص علف هرز با YOLOv5؛ ۲۴ گونه در عکس و ویدئوی میدانی
سیستم بینایی ماشین برای پیدا کردن و نامگذاری ۲۴ گونه علف هرز در عکس و ویدئو: برچسبگذاری کادری، آموزش YOLOv5 و بررسی دقت هر گونه.
معرفی
یک سیستم بینایی ماشین که در عکس و ویدئوهای میدانی علفهای هرز را پیدا و نامگذاری میکند. ۲۴ گونهی علف هرز را میشناسد، دور هر گیاهی که پیدا کند کادر میکشد و نام گونه و میزان اطمینان را روی آن مینویسد. هدف، قدم اول کنترل هوشمند علف هرز است: تا سیستم نداند کدام علف کجاست، نمیشود فقط همانجا سمپاشی کرد یا آن را کند. این پروژه را در سال ۲۰۱۹ ساختم.
مسئله چه بود
علف هرز روی زمینهی تمیز نمیایستد. در عکس واقعی بین محصول و گیاهان دیگر، در سایه، در مرحلههای مختلف رشد، با گل و بیگل و چند گونه در یک قاب میروید و بسیاری از علفها از بالا شبیه هماند. پس کار «این عکس مال کدام گیاه است» نیست، بلکه «علفهای هرز این عکس کجا هستند و هرکدام چه گونهای است».
چه کردم
داده. عکس و ویدئوی کوتاه میدانی از ۲۴ گونه، از یک بوتهی تنها روی خاک تا لکهی پرپشت میان چمن. عکسها را دیگران در میدان گرفته بودند و کار من هر چیزی بود که بعد از آن آمد: آمادهسازی، برچسبگذاری، آموزش و ارزیابی. دیتاست آمادهشده ۸٬۲۲۵ تصویر ۴۱۶ پیکسلی دارد که ۶٬۵۸۰ تا برای آموزش، ۸۲۲ تا برای اعتبارسنجی و ۸۲۳ تا برای آزمون است. از هر عکس چند نسخه (برش و وارونهسازی) ساختم تا داده متنوعتر شود.
فهرست گونهها. همراه با یادداشتهای گیاهشناسی، گونههایی که در واقع یک گروه بودند ادغام شدند (مثل دو نام کاهوی وحشی) و گونههایی که عکس کم یا ضعیف داشتند مشخص شدند تا عکس نزدیک بیشتری، بهویژه از گلهایشان، جمع شود.
تلاش اول: دستهبندی. اول دستهبند آموزش دادم، یک شبکهی CNN طراحی خودم و یک شبکه از نوع Inception، که میگوید «کل این تصویر گونهی X است». روی این داده نتیجهی کافی نداد، چون عکس میدانی بیش از یک گیاه دارد و برچسب نمیگفت علف هرز کجاست.
تلاش دوم: تشخیص شیء. سراغ این رفتم که دور هر گیاه یک کادر بکشم (با RectLabel و در قالب YOLO) و یک تشخیصدهندهی YOLOv5 آموزش دهم. نسخهای که کار کرد این بود.
آموزش و ارزیابی. YOLOv5s، ۱۰۰ دوره، ۴۱۶ پیکسل، دستههای ۱۶تایی، روی ایستگاه کاری با کارت گرافیک Quadro RTX 5000 (حدود ۴۲ ثانیه برای هر دوره و جمعا ۱ ساعت و ۱۰ دقیقه). نتیجه را با منحنیهای خطا، منحنیهای دقت و بازیابی و ماتریس درهمریختگی برای هر گونه بررسی کردم.
استفاده. اسکریپتی که مدل را روی پوشهی عکس یا ویدئو اجرا میکند و نتیجهی علامتگذاریشده را مینویسد، تا همان مدل هم برای عکس و هم برای فیلم دوربینِ در حال حرکت کار کند.
نتیجهها
روی مجموعهی اعتبارسنجی، تشخیصدهنده mAP@0.5 حدود ۰٫۶۹، دقت حدود ۰٫۶۵ تا ۰٫۷۰ و بازیابی حدود ۰٫۶۲ تا ۰٫۶۹ دارد.
بعضی گونهها خیلی خوب شناخته میشوند: Veronica persica (۱٫۰۰ در ماتریس)، Conyza canadensis (۰٫۹۱)، Chenopodium album (۰٫۸۹)، Portulaca oleracea (۰٫۸۶) و Achillea millefolium (۰٫۸۳).
ضعیفترینها Avena fatua (یولاف وحشی)، Medicago sativa، Cyperus rotundus، Hordeum murinum و Poa annua هستند: گراسها و گیاهان کوتاهی که از دور شبیه هماند و به عکس بیشتر و بهتر نیاز دارند.
مدل برای ویدئو به اندازهی کافی سریع است؛ با YOLO روی ایستگاه کاری حدود ۱۴۰ فریم در ثانیه اجرا میشود.
ابزارها
Python، PyTorch، YOLOv5 (پیادهسازی متنباز Ultralytics)، TensorFlow و Keras (برای آزمایشهای دستهبندی)
OpenCV، NumPy، scikit-learn، Matplotlib، Jupyter
RectLabel برای برچسبگذاری؛ Ubuntu و CUDA
نتیجه
یک تشخیصدهندهی آموزشدیدهی علف هرز برای ۲۴ گونه که روی عکس و ویدئو کار میکند، با فهرست روشنی از جاهایی که قوی است، جاهایی که دادهی بیشتر میخواهد و چیزی که آزمون میدانی هنوز باید ثابت کند.
از من حمایت کنید
اگر این نوشتهها به کارتان آمد، با یک حمایت کوچک به ادامهی آنها کمک کنید.
گالری
وبلاگ
مطالب مرتبط
کاهش بیش از ۴ برابری هزینه ارزیابی Identity Resolution با ترکیب مدلهای تصمیمگیر و LLMهای پیشرو
راهنمای جامع استفاده از فایلهای SKILL.md در پلتفرمهای هوش مصنوعی
معرفی Gemini 4 Carbon: مدل پیشگام جدید گوگل در امنیت سایبری و برنامهنویسی
معرفی Jumper: ربات خرچنگی متنباز با ۲۲ درجه آزادی و قابلیت شخصیسازی با هوش مصنوعی
دربارهی این پروژه سوالی دارید؟
اگر دربارهی این پروژه سوالی دارید یا پروژهای مشابه در دست دارید، خوشحال میشوم با من در ارتباط باشید.