مقدمه و معرفی
پروژه شناسایی پلاک خودرو با استفاده از هوش مصنوعی به عنوان یک گام مهم در جهت بهبود سیستمهای نظارت و کنترل ترافیک شهری و همچنین استفاده در پارکینگ ها طراحی و اجرا شده است. این پروژه با هدف جمعآوری دادههای تصویری از پلاک خودروها و پردازش آنها به منظور تشخیص و خواندن کاراکترهای پلاک، توسعه یافته است. بهکارگیری تکنولوژیهای پیشرفته در این پروژه، شامل استفاده از الگوریتمهای یادگیری عمیق و فریم ورکهای تخصصی هوش مصنوعی، به دستیابی به دقت و کارآیی بالای سیستم کمک شایانی می کند.
پیادهسازی پروژه با YOLOv8 و TensorFlow
در این پروژه، از نسخه هشتم الگوریتم YOLO (You Only Look Once) برای شناسایی پلاک خودروها استفاده شده است. YOLOv8 به عنوان یکی از پیشرفتهترین الگوریتمهای تشخیص اشیا، توانایی تشخیص سریع و دقیق پلاک خودروها را فراهم میکند. همچنین، برای پردازش و آموزش مدلهای یادگیری عمیق، از فریم ورک TensorFlow وKeras استفاده شده است که یکی از پرکاربردترین و قدرتمندترین ابزارهای هوش مصنوعی در دنیا محسوب میشوند.
جمعآوری دادهها و مزایای پروژه
یکی از مهمترین مزایای این پروژه، جمعآوری حجم زیادی از دادههای تصویری از پلاک خودروها است. این دادهها برای تشخیص پلاک خودروها و همچنین برای خواندن دقیق کاراکترهای موجود در پلاکها مورد استفاده قرار میگیرند. با استفاده از این مجموعه دادهها، مدل توانسته است دقت و کارایی بسیار بالایی در شناسایی و تفسیر پلاکها از خود نشان دهد. این ویژگی، امکان پیادهسازی سیستمهای نظارت هوشمندتر و کارآمدتر را در محیطهای مختلف فراهم میکند.
پروژه شناسایی پلاک خودرو با بهرهگیری از تکنولوژیهای پیشرفته هوش مصنوعی، گامی مهم در جهت بهبود سیستمهای ترافیکی و امنیتی است و میتواند به کاهش تخلفات رانندگی و بهبود مدیریت ترافیک کمک کند.
نمای کلی پروژه
مراحل پروژه
- جمع آوری دیتا برای تشخیص پلاک
- آموزش یولو ورژن 8
- جمع آوری دیتا برای خواندن پلاک
- ساخت پلاک جنریتور
- برچسب گذاری پلاک های واقعی
- ساخت مدل برای خواندن پلاک
- مقایسه و بهبود مدل
- تست نهایی مدل
جمع آوری دیتا برای تشخیص پلاک
جمعآوری دادههای مورد نیاز برای تشخیص پلاک به صورت دستی انجام شد. این مرحله شامل عکسبرداری از خودروهای مختلف در شرایط نوری و محیطی متفاوت و زاویههای گوناگون بود؛ تا مدل آموزش داده شده توانایی تشخیص پلاکها در شرایط مختلف را داشته باشد.
برای برچسبگذاری دادهها از پلتفرم CVAT استفاده شد. در این پلتفرم، پلاکهای خودروها به صورت دستی با کشیدن مستطیلی دور پلاک که شامل 2 نقطه ( بالا چپ و پایین راست) و تعیین چهار نقطه (دو نقطه در بالای پلاک و دو نقطه در پایین پلاک) برچسبگذاری شدند. این برچسبگذاری های دقیق به مدل کمک میکند تا مکان دقیق پلاک را در تصاویر تشخیص دهد.
لینک کد در گیت هاب: https://github.com/SyydMR/PlateLicense/blob/master/Preprocessing/CVAT2Yolo.ipynb
لینک سایت
: https://www.cvat.ai
مشخص کردن 4 نقطه اطراف پلاک
کشیدن مستطیل با 2 نقطه در اطراف پلاک
آموزش یولو ورژن 8
پس از آمادهسازی دادهها و انجام برچسبگذاری، مدل YOLO (You Only Look Once) نسخه 8 برای تشخیص پلاکها آموزش داده شد . YOLO یکی از قدرتمندترین مدلهای تشخیص اشیاء است که به دلیل سرعت و دقت بالایش شناخته میشود. نسخه 8 این مدل شامل بهبودهای قابل توجهی در معماری و الگوریتمهای یادگیری است که به افزایش دقت و سرعت در تشخیص اشیاء کمک میکند. دادههای برچسبگذاری شده به مدل وارد شده و مدل با استفاده از این دادهها آموزش داده شد. در این مرحله، پارامترهای مختلف مدل از جمله نرخ یادگیری، تعداد دورههای آموزشی، و اندازه دستهها (batch size) تنظیم شدند تا بهترین عملکرد ممکن حاصل شود.
لینک کد در گیت هاب:
https://github.com/SyydMR/PlateLicense/blob/master/Yolo/YoloPoseDetection/Yolo_PoseDetection.ipynb
جمع آوری دیتا برای خواندن پلاک
- ساخت پلاک جنریتور
- برچسب گذاری پلاک های واقعی
ساخت پلاک جنریتور
در ابتدا، برای تولید دادههای مصنوعی، پلاک جنریتوری ساختیم. این پلاک جنریتور شامل مجموعهای از تصاویر بدون پسزمینه که شامل حروف، ارقام و تمپلیتهایی بود که به عنوان قاب اصلی پلاک استفاده میشد. هر کدام از این تصاویر با دقت طراحی و آمادهسازی شدند تا در کنار هم یک پلاک کامل را تشکیل دهند. با استفاده از این تصاویر و یک قطعه کد، پلاک جنریتوری طراحی شد که میتوانست به صورت خودکار پلاکهای مختلفی را با ترکیبهای متنوع از حروف و ارقام تولید کند و پلاک تولید شده را هم به عنوان برچسب آن عکس به همراه یک رقم رندوم ذخیره نماید. این روش به ما اجازه داد تا دادههای مصنوعی بسیار متنوعی برای آموزش مدل در اختیار داشته باشیم، که باعث بهبود دقت و عملکرد مدل در تشخیص و خواندن پلاکها شد.
لینک کد در گیت هاب : https://github.com/SyydMR/PlateLicense/blob/master/GenerateData/PlateLicenseGeneratorForTrain.ipynb
برچسب گذاری پلاک های واقعی
برای افزایش دقت و کاربردپذیری مدل در شرایط واقعی، نیاز به برچسبگذاری دادههای واقعی داشتیم. برای این کار، از خروجیهای مدل YOLO استفاده کردیم که پلاکهای خودرو را تشخیص میداد. تصاویر خروجی مدل YOLO، توسط یک قطعه کد مخصوص پردازش شدند. این کد تمامی تصاویر را خوانده و به صورت تکتک نمایش میداد. در هر مرحله، به صورت دستی ارقام و حروف موجود در پلاک وارد میشد و این اطلاعات به عنوان نام تصویر ذخیره میشد. این فرآیند برچسبگذاری دستی به ما کمک کرد تا مجموعهای از دادههای واقعی با دقت بالا داشته باشیم که برای آموزش مدلهای خواندن پلاک استفاده شدند. برچسبگذاری دقیق و درست این دادهها نقش مهمی در بهبود دقت و عملکرد نهایی مدل داشت.
لینک کد در گیت هاب : https://github.com/SyydMR/PlateLicense/blob/master/Yolo/Yolo_PoseDetectionPrediction.ipynb
لینک کد در گیت هاب : https://github.com/SyydMR/PlateLicense/blob/master/Preprocessing/fixLabel.ipynb
ساخت مدل برای خواندن پلاک
برای خواندن پلاک، چندین مدل مختلف طراحی و آزمایش شدند. ابتدا یک مدل CNN ساده برای تشخیص حروف و ارقام پلاک استفاده شد. سپس مدلی با ساختار Encoder-Decoder طراحی شد که شامل CNN به عنوان انکدر و RNNها به عنوان دیکدر بود و از مکانیزم Attention بدون Teacher Forcing استفاده میکرد. این مدل توانایی بهتری در تشخیص توالیهای حروف و ارقام داشت. در مرحله بعد، مدل قبلی با استفاده از Teacher Forcing و مکانیزم Attention بهبود یافت. این تکنیک باعث شد تا مدل در هر مرحله از پیشبینی خود به خروجیهای قبلی تکیه نکند و به جای آن از دادههای واقعی استفاده کند که این امر دقت مدل را افزایش داد.
Attention Model
مقایسه و بهبود مدل
پس از ساخت و آموزش مدلها، نتایج آنها با استفاده از معیارهای مختلف، ارزیابی و مقایسه شدند، که برای ارزیابی عملکرد مدلها مورد استفاده قرار گرفتند. مدلهایی که از مکانیزم Attention استفاده میکردند، عملکرد بهتری در خواندن پلاک داشتند. با استفاده از روش Teacher Forcing نیز دقت مدلها به طور قابل توجهی افزایش یافت. مدلها به طور مداوم بهینهسازی شدند و پارامترهای مختلف آنها تنظیم شدند تا بهترین عملکرد ممکن حاصل شود.
هر 3 مدل CNN، مبتنی بر Attention و مدل Attention با استفاده از روش Teacher Forcing ،در 4 نمودار مختلف معیارهای Loss Train ،Loss Validation ،Accuracy Train و
Accuracy Validation هرکدام از آنها مقایسه شدهاند.
لینک کد در گیت هاب : https://github.com/SyydMR/PlateLicense/blob/master/TestModels/%20ModelEvaluation.ipynb
Loss train

این نمودار نشاندهنده میزان کاهش خطا (Loss) در دادههای آموزشی در طول زمان آموزش مدلهای مختلف است. هدف از این نمودار مقایسه نرخ کاهش خطا در هر یک از مدلها و تحلیل عملکرد آنها در حین آموزش است.
کاهش سریعتر خطا به معنای یادگیری بهتر و سریعتر مدل است. این نمودار به ما نشان میدهد که کدام مدل توانسته است با سرعت بیشتری به دقت مطلوب برسد.
Loss Validation

این نمودار میزان کاهش خطا (Loss) در دادههای اعتبارسنجی را در طول زمان نشان میدهد. مانند نمودار قبلی، مدلهای مختلف در این نمودار مقایسه شدهاند تا بتوان عملکرد آنها را در دادههایی که قبلاً در آموزش استفاده نشدهاند، ارزیابی کرد.
این نمودار به ما کمک میکند تا اطمینان حاصل کنیم که مدلها به طور کلی تعمیمپذیری خوبی دارند و در مواجهه با دادههای جدید نیز عملکرد مناسبی دارند. کاهش خطا در دادههای اعتبارسنجی نشاندهنده این است که مدلها از پس دادههای جدید به خوبی برمیآیند و دچار بیشبرازش (overfitting) نشدهاند.
Accuracy Train

این نمودار دقت (Accuracy) مدلها را در دادههای آموزشی در طول زمان نشان میدهد.
افزایش دقت مدلها در دادههای آموزشی به معنای بهبود توانایی مدلها در شناسایی و خواندن پلاکها است. این نمودار به ما نشان میدهد که کدام مدل با سرعت بیشتری به دقت بالاتر دست یافته و در طول زمان عملکرد بهتری داشته است.
Accuracy Validation

این نمودار دقت مدلها را در دادههای اعتبارسنجی در طول زمان نشان میدهد. مانند نمودارهای قبلی، مدلهای مختلف با یکدیگر مقایسه شدهاند تا بتوان عملکرد آنها را در دادههایی که در آموزش استفاده نشدهاند، ارزیابی کرد.
این نمودار به ما کمک میکند تا ارزیابی کنیم که مدلها چقدر توانایی دارند در دادههای جدید و ناآشنا عملکرد خوبی داشته باشند. دقت بالاتر در دادههای اعتبارسنجی نشاندهنده تعمیمپذیری بهتر مدلها است و اطمینان میدهد که مدلها در شرایط واقعی نیز عملکرد مناسبی خواهند داشت.
تست نهایی مدل
در نهایت، مدلهای نهایی بر روی مجموعهای از دادههای تست که شامل تصاویری بودند که مدلها قبلاً ندیده بودند، آزمایش شدند. این دادهها شامل تصاویر پلاکهای خودرو در شرایط نوری و محیطی مختلف بودند تا عملکرد مدلها در شرایط واقعی سنجیده شود.
Test on CNN model
مدل CNN ، به عنوان اولین مدل آزمایشی مورد ارزیابی قرار گرفت.
Precision: 0.75
Recall: 0.73
F1-Score: 0.74
Accuracy: 0.92

این نتایج نشان میدهند که مدل CNN توانایی قابل قبولی در تشخیص و خواندن پلاکها دارد، اما همچنان نیاز به بهبود دارد تا دقت و عملکرد بهتری ارائه دهد.
لینک کد در گیت هاب : https://github.com/SyydMR/PlateLicense/blob/master/Models/ModelCNN/CNNModel.ipynb
Test on Attention
مدل مبتنی بر Attention با هدف بهبود عملکرد مدل CNN طراحی و آزمایش شد.
Precision: 0.82
Recall: 0.82
F1-Score: 0.82
Accuracy: 0.96

نتایج این مدل نشان داد که مکانیزم Attention توانسته است به طور قابل توجهی دقت و کارایی مدل را در تشخیص و خواندن پلاکها افزایش دهد، که نشاندهنده مزیت استفاده از این تکنیک در مدلسازی است.
لینک کد در گیت هاب: https://github.com/SyydMR/PlateLicense/blob/master/Models/ModelAttention/ModelAttention.ipynb
Test on Attention with Teacher Forcing
مدل نهایی، شامل مکانیزم Attention با استفاده از روش Teacher Forcing، مورد آزمایش قرار گرفت.
Precision: 0.86
Recall: 0.86
F1-Score: 0.86
Accuracy: 0.97

این نتایج نشان میدهند که استفاده از Teacher Forcing توانسته است دقت و کارایی مدل را به حداکثر برساند، و مدل نهایی با این روش توانسته است بهترین عملکرد را در میان تمامی مدلهای آزمایش شده ارائه دهد .
لینک کد در گیت هاب: https://github.com/SyydMR/PlateLicense/blob/master/Models/ModelTForcingAttention/Model.ipynb
نتایج نشان داد که مدلها قادر به تشخیص و خواندن پلاک خودروها با دقت بالایی هستند. عملکرد مدلها با استفاده از معیارهای مختلف ارزیابی شد و مدل نهایی که بهترین دقت و کارایی را داشت، انتخاب شد. مدل انتخاب شده توانست به خوبی پلاکهای خودرو را در شرایط مختلف تشخیص داده و بخواند، که نشان از موفقیت پروژه در رسیدن به اهدافش داشت.
نتیجه گیری
پروژه تشخیص و خواندن پلاک خودرو با استفاده از تکنیکهای پیشرفته هوش مصنوعی و یادگیری عمیق توانسته است به نتایج بسیار مطلوبی دست یابد. مدلهای مختلفی که در این پروژه مورد آزمایش قرار گرفتند، هر یک توانستند در شرایط مختلف عملکرد قابل قبولی داشته باشند. با این حال، مدل مبتنی بر Attention با استفاده از روش
Teacher Forcing بهترین نتایج را نشان داد و دقت و کارایی بالایی را در تشخیص و خواندن پلاکها ارائه کرد. این پروژه نشان داد که استفاده از تکنیکهای پیشرفته میتواند به طور قابل توجهی عملکرد سیستمهای نظارت و مدیریت ترافیک را بهبود بخشد و به کاهش تخلفات رانندگی کمک کند.