การอ่านป้ายทะเบียนรถโดยใช้เทคโนโลยีปัญญาประดิษฐ์
Journal club ในสัปดาห์นี้จะเป็นการแสดงตัวอย่างการใช้งาน AI จาก AI FOR THAI(1) ด้วย Python ผ่าน google colab(2) โดยที่ code ส่วนใหญ่จะนำมาจากรีวิวของ daydev(3) ตัวอย่างนี้จะเป็นการใช้งานระบบรู้จำป้ายทะเบียนรถยนต์ เพื่ออ่านและระบุตำแหน่งของป้ายทะเบียนในรูปภาพ Code จะแบ่งออกเป็น 3 ส่วน
- Code ใช่งาน AI จาก AI FOR THAI
- Code แสดงรูปภาพและ เลขป้ายทะเบียน จาก daydev
- Code เพิ่ม font ภาษาไทย เพื่อให้สามารถแสดงผลภาษาไทยในรูปภาพได้ แต่ก่อนที่เราจะทำการ run code เราต้องทำการ upload file รูปรถพร้อมป้ายทะเบียนและ font เข้าไปในระบบ google colab ก่อน โดยกดที่ Files ทางด้านซ้าย แล้วกด Upload to session storage เพื่อเลือก file ที่ต้องการ หรือจะใช้วิธีอื่นก็ได้แล้วแต่ถนัด
ต่อไปจะเป็นส่วนของ code ที่ใช้
- 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
- 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 จะได้ภาพและเลขป้ายทะเบียนแต่ยังแสดงผลภาษาไทยไม่ได้
- 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
- https://aiforthai.in.th/index.php
- https://colab.research.google.com
- http://www.daydev.com/face-recognition/ai-for-thai-thai-license-plate-recognition-tlpr.html
เรียบเรียงโดย
- สิทธิโชค สมุทรไชยกิจ