شناسایی و تشخیص خودکار پلاک خودرو با استفاده از فناوری یادگیری عمیق

معرفی

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

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

تشخیص پلاک با یادگیری عمیق
تشخیص پلاک خودرو با استفاده از فناوری یادگیری عمیق

شناسایی و خواندن پلاک ها کار نوعی سیستم هوشمند است که کاربرد های بالقوه آن در چندین بخش قابل ذکر است :

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

پروژه ی ما شامل سه گام خواهد بود:

گام ۱ : تشخیص پلاک خودرو

به منظور شناسایی پلاک خودرو، ما از معماری تشخیص اشیا توسط الگوریتم فناوری یادگیری عمیق Yolo  ( You Only Look Once ) بر اساس شبکه های عصبی کانولوشنی ( پیچشی ) استفاده خواهیم کرد.

نسخه اول این نوع الگوریتم معماری توسط جوزف ردمون، علی فرهادی، راس گیرشیک و سانتوش دیوولا در سال ۲۰۱۵ و نسخه ۲ و ۳ آن بعد ها معرفی شده است. که لینک مقالات مربوط به آن در ادامه در اختیار شما قرار میگیرد

Yolo یک شبکه آموزش داده شده end to end جهت فرآیند محاسبه رگرسیون برای پیش بینی جعبه محدود کننده شی و کلاس شی است.

این شبکه بسیار سریع است ، تصاویر را در لحظه ثبت  با ۴۵ فریم در ثانیه پردازش می کند. نسخه کوچک تر شبکه ، Fast YOLO ، میزان حیرت انگیز ۱۵۵ فریم در ثانیه را پردازش می کند.

اجرای YOLO V3:

ابتدا مجموعه داده ای متشکل از ۷۰۰ تصویر از خودروها را که شامل پلاک های خودروی کشور تونس است را آماده کرده ایم. برای هر تصویر، ما یک پرونده xml ایجاد می کنیم (بعد به پرونده متنی تغییر داده می شود که حاوی مختصات سازگار با ورودی پرونده پیکربندی Darknet است. Darknet: پروژه ای که برای بازآفرینی مدل های از پیش آماده شده YOLO استفاده می شود) با استفاده از یک برنامه دسکتاپ به نام LabelImg.

# First download Darknet project
$ git clone https://github.com/pjreddie/darknet.git
# in "darknet/Makefile" put affect 1 to OpenCV, CUDNN and GPU if you # want to train with you GPU then time thos two commands
$ cd darknet
$ make
# Load convert.py to change labels (xml files) into the appropriate # format that darknet understand and past it under darknet/
   https://github.com/GuiltyNeuron/ANPR
# Unzip the dataset
$ unzip dataset.zip
# Create two folders, one for the images and the other for labels
$ mkdir darknet/images
$ mkdir darknet/labels
# Convert labels format and create files with location of images
# for the test and the training
$ python convert.py
# Create a folder under darknet/ that will contain your data
$ mkdir darknet/custom
# Move files train.txt and test.txt that contains data path to
# custom folder
$ mv train.txt custom/
$ mv test.txt custom/
# Create file to put licence plate class name "LP"
$ touch darknet/custom/classes.names
$ echo LP > classes.names
# Create Backup folder to save weights
$ mkdir custom/weights
# Create a file contains information about data and cfg 
# files locations
$ touch darknet/custom/darknet.data
# in darknet/custom/darknet.data file paste those informations
classes = 1
train  = custom/train.txt
valid  = custom/test.txt
names = custom/classes.names
backup = custom/weights/
# Copy and paste yolo config file in "darknet/custom"
$ cp darknet/cfg/yolov3.cfg darknet/custom
# Open yolov3.cfg and change :
# " filters=(classes + 5)*3" just the ones before "Yolo"
# in our case classes=1, so filters=18
# change classes=... to classes=1
# Download pretrained model
$ wget https://pjreddie.com/media/files/darknet53.conv.74 -O ~/darknet/darknet53.conv.74
# Let's train our model !!!!!!!!!!!!!!!!!!!!!
$ ./darknet detector train custom/darknet.data custom/yolov3.cfg darknet53.conv.74

بعد از اتمام آموزش ، برای تشخیص پلاک خودرو با حرف U از یک تصویر، آخرین مدل را از darknet / custom / weights انتخاب کرده و مسیر یا نام آن را در پرونده object_detection_yolo.py قرار دهید ، همچنین از فایل yolov3.cfg ، فقط در این فایل استفاده خواهیم کرد. قبل از آموزش علامت # را قرار دهید سپس آن را اجرا کنید:

python object-detection_yolo.py --image= image.jpg

و نتیجه کار ما را میتوانید در عکس زیر شاهد باشید.

یادگیری عمیق در تشخیص پلاک

گام ۲ : ناحیه بندی پلاک خودرو

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

ناحیه بندی ( Segmentation ) یکی از مهم ترین فرآیند های شناسایی خودکار پلاک ها است ، زیرا هر مرحله دیگر بر اساس آن انجام می شود. اگر ناحیه بندی درست انجام نشود ، مرحله تشخیص صحیح نخواهد بود. برای اطمینان از ناحیه بندی مناسب ، پردازش اولیه باید انجام شود.

تقسیم بندی پلاک خوانی

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

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

سپس به همان روش ، هیستوگرام نمایش عمودی را محاسبه می کنیم اما با تغییر ردیف ها توسط ستون های تصویر، دو حد هر کاراکتر (چپ و راست) را خواهیم داشت.

روش دیگر برای استخراج رقم از پلاک خودرو استفاده از مورفولوژی (شکل شناسی)  باز / بسته برای ایجاد نوعی از منطقه متصل و سپس استفاده از الگوریتم مؤلفه متصل برای استخراج مناطق متصل است.

گام ۳ : تشخیص پلاک خودرو

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

به منظور استفاده بیشتر از داده ها برای یادگیری، ما بعد از اعمال همان مراحل پردازش تصویر که قبل از تقسیم صفحه پلاک خودرو استفاده می شود، هر کدام از کاراکتر ها را با تغییر اندازه به یک مربع برش می دهیم. در نتیجه، ما مجموعه ای از داده های متشکل از ۱۱ کلاس را بدست آورده ایم و برای هر کلاس ۳۰ تا ۴۰ تصویر از قالب های PNG dimesion 28X28 پیکسل داریم. اعداد از ۰ تا ۹ و کلمات به زبان عربی (تونس) می باشند.

سپس ، ما بر اساس مقالات علمی، تحقیقاتی انجام دادیم که پرسپترون چند لایه ( MLP ) و کاسه بند K نزدیکترین همسایه ( KNN ) را با یکدیگر مقایسه می کنند. و در نتیجه دریافتیم که : اگر تعداد نورون های لایه پنهان در هنگام استفاده از کلاسه بند MLP افزایش بیابد و در صورت استفاده از KNN ، تعداد نزدیکترین شماره همسایه افزایش یابد، عملکرد بهبود خواهد یافت. توانایی تنظیم عملکرد کلاسه بند k-NN در اینجا بسیار محدود است. اما تعداد قابل تنظیم لایه های پنهان و وزن اتصال قابل تنظیم MLP، فرصت بیشتری برای بهینه سازی مناطق تصمیم گیری فراهم می کند. بنابراین در نتیجه ، ما پرسپترون چند لایه را برای این مرحله انتخاب خواهیم کرد.

الگوریتم تشخیص پلاک

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

برای مشاهده ی این پروژه در گیت هاب به لینک زیر مراجعه کنید.

پروژه ی پلاک خوان با شبکه های عمیق در گیت هاب

بیشتر بخوانید:

منبع Towards Data Science

همچنین ببینید

فناوری تشخیص چهره و کاربردهای آن، تاریخچه تکنولوژی تشخیص چهره

فناوری تشخیص چهره و کاربردهای آن + تاریخچه

فناوری تشخیص چهره یک فناوری بیومتریک است که با استفاده از تجزیه و تحلیل الگوهایی …

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *