การอ่านป้ายทะเบียนรถโดยใช้เทคโนโลยีปัญญาประดิษฐ์

Journal club ในสัปดาห์นี้จะเป็นการแสดงตัวอย่างการใช้งาน AI จาก AI FOR THAI(1) ด้วย Python ผ่าน google colab(2) โดยที่ code ส่วนใหญ่จะนำมาจากรีวิวของ daydev(3) ตัวอย่างนี้จะเป็นการใช้งานระบบรู้จำป้ายทะเบียนรถยนต์ เพื่ออ่านและระบุตำแหน่งของป้ายทะเบียนในรูปภาพ Code จะแบ่งออกเป็น 3 ส่วน

  1. Code ใช่งาน AI จาก AI FOR THAI
  2. Code แสดงรูปภาพและ เลขป้ายทะเบียน จาก daydev
  3. Code เพิ่ม font ภาษาไทย เพื่อให้สามารถแสดงผลภาษาไทยในรูปภาพได้ แต่ก่อนที่เราจะทำการ run code เราต้องทำการ upload file รูปรถพร้อมป้ายทะเบียนและ font เข้าไปในระบบ google colab ก่อน โดยกดที่ Files ทางด้านซ้าย แล้วกด Upload to session storage เพื่อเลือก file ที่ต้องการ หรือจะใช้วิธีอื่นก็ได้แล้วแต่ถนัด

ต่อไปจะเป็นส่วนของ code ที่ใช้

  1. Code ใช่งาน AI จาก AI FOR THAI

import requests

url = “https://api.aiforthai.in.th/lpr-v2”

payload = {‘crop’: ‘1’, ‘rotate’: ‘1’}

files = {‘image’:open(‘test.jpg’, ‘rb’)}

headers = { ‘Apikey’: “ เอาจากเว็บ AI FOR THAI”, }

response = requests.post( url, files=files, data = payload, headers=headers)

print(response.json())

Code ในส่วนที่ 1 จะได้ เลขป้ายทะเบียนรถ และตำแหน่งในภาพออกมาในรูปแบบของ json

  1. Code แสดงรูปภาพและ เลขป้ายทะเบียน จาก daydev

import numpy as np

import matplotlib.pyplot as plot

import matplotlib.patches as patches

from PIL import Image

images = np.array(Image.open(‘test.jpg’), dtype=np.uint8)

data = response.json()

for item in data:

_object = (item['lpr'])
xLeftTop = int(item['bbox']['xLeftTop'])
yleftTop = int(item['bbox']['yLeftTop'])
xRightBottom = int(item['bbox']['xRightBottom'])/2
yRightBottom = int(item['bbox']['yRightBottom'])/3

figure, get_axis = plot.subplots(1)
get_axis.imshow(images)
rect = patches.Rectangle((xLeftTop,yleftTop),xRightBottom,yRightBottom,linewidth=5,edgecolor='#7FFF00',facecolor='none')
get_axis.add_patch(rect)
plot.text(xLeftTop, yleftTop-50,_object,fontname='TH Sarabun New',fontsize='30',color='#7FFF00')
plot.show()

Code ในส่วนที่ 2 จะได้ภาพและเลขป้ายทะเบียนแต่ยังแสดงผลภาษาไทยไม่ได้

  1. Code เพิ่ม font ภาษาไทย เพื่อให้สามารถแสดงผลภาษาไทยในรูปภาพได้ import matplotlib matplotlib.font_manager.fontManager.addfont(‘THSarabunNew.ttf’) หลังจากนี้เราจึงจะสามารถเพิ่มภาษาไทยลงไปได้ แต่ต้องทำการ Restart runtime ก่อน

หรือเมื่อรวม code ทั้ง 3 ส่วนจะได้เป็น

import matplotlib

matplotlib.font_manager.fontManager.addfont(‘THSarabunNew.ttf’)

import numpy as np

import matplotlib.pyplot as plot

import matplotlib.patches as patches

import requests

from PIL import Image

url = “https://api.aiforthai.in.th/lpr-v2”

payload = {‘crop’: ‘1’, ‘rotate’: ‘1’}

files = {‘image’:open(‘test.jpg’, ‘rb’)}

headers = { ‘Apikey’: “เอาจากเว็บ AI FOR THAI “, }

response = requests.post( url, files=files, headers=headers)

print(response.json())

images = np.array(Image.open(‘test.jpg’), dtype=np.uint8)

data = response.json()

for item in data: _object = (item[‘lpr’]) xLeftTop = int(item[‘bbox’][‘xLeftTop’]) yleftTop = int(item[‘bbox’][‘yLeftTop’]) xRightBottom = int(item[‘bbox’][‘xRightBottom’])/2 yRightBottom = int(item[‘bbox’][‘yRightBottom’])/3

figure, get_axis = plot.subplots(1)
get_axis.imshow(images)
rect = patches.Rectangle((xLeftTop,yleftTop),xRightBottom,yRightBottom,linewidth=5,edgecolor='#7FFF00',facecolor='none')
get_axis.add_patch(rect)
plot.text(xLeftTop, yleftTop-50,_object,fontname='TH Sarabun New',fontsize='30',color='#7FFF00')
plot.show()

เมื่อ run code แล้วก็จะได้ผลลัพธ์ออกมาดังรูป

References

  1. https://aiforthai.in.th/index.php
  2. https://colab.research.google.com
  3. http://www.daydev.com/face-recognition/ai-for-thai-thai-license-plate-recognition-tlpr.html

เรียบเรียงโดย

  • สิทธิโชค สมุทรไชยกิจ