فناوری تشخیص پلاک خودرو با Jetson Nano

امروزه توان هوش مصنوعی مدرن برای همه تولید کنندگان، زبان آموزان برنامه نویسی و توسعه دهندگان در همه جا در دسترس است. کیت توسعه دهنده ی Jetson Nano یک رایانه کوچک و قدرتمند است که این امکان را برای کاربر فراهم می کند تا چندین شبکه عصبی را بطور موازی برای برنامه هایی مانند کلاسه بندی تصویر ، تشخیص شی ، تقسیم بندی و پردازش گفتار اجرا کند. همه این قابلیت ها در یک پلتفرم که استفاده از آن ساده بوده و به تنها ۵ وات انرژی برای کار نیاز دارد، گنجانده شده است. شروع کار ساده تر از همیشه است! کافیست یک کارت microSD را با یک Image از سیستم وارد کنید، کیت توسعه دهنده را بوت کنید و شروع کنید به استفاده از ابزار  NVIDIA JetPack SDK که در کل محصولات خانواده NVIDIA Jetson استفاده شده است. JetPack با پلتفرم هوش مصنوعی پیشرو NVIDIA برای آموزش و استفاده در نرم افزار های هوش مصنوعی ، کاهش پیچیدگی و تلاش برای توسعه دهندگان برنامه های کامپیوتری سازگار است.

در این مقاله سعی داریم نحوه تشخیص پلاک خودرو به وسیله ی Jetson Nano و با استفاده از OpenANPR را آموزش دهیم.

ابزار های لازم

  1.  کیت توسعه دهنده Jetson Nano
  2. کارت حافظه – می توانید از کارت ۳۲ گیگ استفاده کنید
  3. آداپتور برق – آداپتور برق ۵ ولت و ۲٫۵ آمپر جواب می دهد اما توصیه می شود از یک منبع تغذیه ۴ آمپری استفاده کنید.
  4. ماژول دوربین Raspberry Pi V2–۸ Megapixel با رزلوشن ۱۰۸۰p . نسخه ۱ در زمان نگارش این مقاله با Jetson Nano کار نمی کند.
  5. مانیتور ، صفحه کلید ، ماوس و کابل اترنت.
  6. رایانه برای ذخیره ی تصاویر.

شروع کار با Nano

این مرحله بسیار ساده است.

تمام کابل ها را به دستگاه وصل کنید اما در صورت استفاده از منبع تغذیه معمولی، اتصال پین ها را فراموش نکنید. هنگام وصل کردن دوربین Pi مواظب باشید کانکتور نشکند.

MicroSD را وارد کرده و لذت ببرید.

نصب OpenALPR

در این مرحله ممکن است به مشکلاتی بر بخورید. مهم ترین دلیل آن می تواند این باشد که مستندات OpenANPR برای Ubuntu نسخه ی ۱۶٫۰۴ نوشته شده است اما Image استفاده شده در Nvidia Jetson نسخه ی ۱۸٫۰۴ سیستم عامل Ubuntu می باشد. بعضی از بسته های مورد نیاز در آن حذف شده است.

مراحلی که در ادامه توضیح داده شده با ارجاع از مستندات OpenANPR در گیت هاب و برخی نکات از یکی از مباحث آموزشی TechExpert گرد آوری شده است.

پیش نیاز ها :

کار خود را با نصب صحیح شروع کنید. اگر قبلاً OpenALPR را نصب کرده باشید، بهتر است آن را حذف کرده و مجددا روی کارت حافظه MicroSD  نصب کنید. نصب را با بررسی دستور زیر انجام دهید.

apt list --installed | grep alpr

۱- متعلقات برنامه و ابزارهای مورد نیاز را نصب کنید.

sudo apt-get update
sudo apt-get install libopencv-dev
sudo apt-get install libtesseract-dev
sudo apt-get install git
sudo apt-get install cmake
sudo apt-get install build-essential
sudo apt-get install libleptonica-dev
sudo apt-get install liblog4cplus-dev
sudo apt-get install libcurl3-dev
sudo apt-get install beanstalkd
sudo apt-get install curl
sudo apt-get install python-pip

برای راحتی کار دستور بالا را در چند خط خلاصه می کنیم.

sudo apt-get update -y && sudo apt-get install libopencv-dev libtesseract-dev git cmake build-essential libleptonica-dev liblog4cplus-dev libcurl3-dev beanstalkd curl python-pip -y

leptonica-1.78 یا نسخه دیگری از آن را می توانید از اینجا دانلود و نصب کنید. با دستور make آن را کامپایل کنید.

wget http://www.leptonica.com/source/leptonica-1.78.0.tar.gz
tar xvf leptonica-1.78.0.tar.gz leptonica-1.78.0
cd leptonica-1.78.0
./configure
make -j $(($(nproc)-1))
sudo make install
cd ~

Tesseract را دانلود کرده و آن را کامپایل کنید. به هیچ وجه از این آدرس دانلود نکنید، زیرا برای این آموزش مناسب نیست. اگر برنامه های دیگری دارید که روی نانوی شما کار می کنند nproc-1 را به nproc-3 تغییر دهید.

git clone https://github.com/tesseract-ocr/tesseract.git
cd tesseract
./autogen.sh
./configure
make -j $(($(nproc)-1))
sudo make install
sudo ldconfig
cd ~

OpenALPR  را کلون و کامپایل کنید. در صورت لزوم به nproc-3 تغییر دهید.

git clone https://github.com/openalpr/openalpr.git
cd openalpr/src
sed -i '13iSET(Tesseract_DIR "/usr/local/bin/tesseract")' CMakeLists.txt
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr -DCMAKE_INSTALL_SYSCONFDIR:PATH=/etc ..
make -j $(($(nproc)-1))
sudo make install
cd ~

نصب pickled

استفاده از Pickledb برای نرم افزار های ساده، بسیار آسان است. pickledb به عنوان یک پایگاه داده local در Nano استفاده خواهد شد.

sudo pip install pickledb

اجرای اسکریپت پایتون

اسکریپت را با یک آرگومان -IN یا -OUT اجرا کنید. آرگومان -IN به عنوان یک دوربین در داخل  پارکینگ استفاده می شود در حالیکه -OUT به عنوان یک دوربین در خارج پارکینگ استفاده خواهد شد.

کار به این شکل است که دوربین باید وسیله نقلیه ای را که در خارج از گاراژ است و همچنین پلاک ثبت شده آن را شناسایی کند.

سپس در پارکینگ باز خواهد شد. در صورتی که دوربین داخلی وسیله نقلیه ای که قبلاً وارد شده را تشخیص دهد در پارکینگ باز خواهد شد.

برای راحتی می توانید این دستور را اجرا کنید.

python license_plate_detect.py -OUT
and then
python license_plate_detect.py -IN

پلاک “ANYNAME” در اولین اجرا توسط این خط به pickledb اضافه می شود. مجموعه (‘ANYNAME’, str(time.time()))`. همین روش را می توان برای هر شماره پلاک دیگری اعمال کرد.

اگر مایل هستید هنگام ردیابی قاب پلاک را مشاهده کنید -SF را به عنوان یک آرگومان برای اسکریپت پایتون اضافه کنید. اضافه کردن عکس ثابت قاب می تواند باعث بروز خطاهای پردازش شود. اجرای “sudo systemctl nvargus-Daemon” می تواند در هنگام تشخیص خطا به مشکل کمک کند.

python license_plate_detect.py -OUT -SF
تشخیص پلاک با جتسون نانو
تشخیص پلاک با جتسون نانو

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

منبع medium.com

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

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

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

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

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

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