Skip to content

napatswift/vc

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

        ,----,
      ,/   .`|
    ,`   .'  :  ,---,                           ,--,
  ;    ;     /,--.' |                  ,--,   ,--.'|                                 ,---,
.'___,/    ,' |  |  :                ,--.'|   |  | :                     ,---,     ,---.'|
|    :     |  :  :  :                |  |,    :  : '                 ,-+-. /  |    |   | :
;    |.';  ;  :  |  |,--.  ,--.--.   `--'_    |  ' |     ,--.--.    ,--.'|'   |    |   | |
`----'  |  |  |  :  '   | /       \  ,' ,'|   '  | |    /       \  |   |  ,"' |  ,--.__| |
    '   :  ;  |  |   /' :.--.  .-. | '  | |   |  | :   .--.  .-. | |   | /  | | /   ,'   |
    |   |  '  '  :  | | | \__\/: . . |  | :   '  : |__  \__\/: . . |   | |  | |.   '  /  |
    '   :  |  |  |  ' | : ," .--.; | '  : |__ |  | '.'| ," .--.; | |   | |  |/ '   ; |:  |
    ;   |.'   |  :  :_:,'/  /  ,.  | |  | '.'|;  :    ;/  /  ,.  | |   | |--'  |   | '/  '
    '---'     |  | ,'   ;  :   .'   \;  :    ;|  ,   /;  :   .'   \|   |/      |   :    :|
              `--''     |  ,     .-./|  ,   /  ---`-' |  ,     .-./'---'        \   \  /
                         `--`---'     ---`-'           `--`---'                  `----'
    ,---,.  ,--,                          ___
  ,'  .' |,--.'|                        ,--.'|_    ,--,
,---.'   ||  | :                        |  | :,' ,--.'|     ,---.        ,---,
|   |   .':  : '                        :  : ' : |  |,     '   ,'\   ,-+-. /  |
:   :  |-,|  ' |      ,---.     ,---. .;__,'  /  `--'_    /   /   | ,--.'|'   |
:   |  ;/|'  | |     /     \   /     \|  |   |   ,' ,'|  .   ; ,. :|   |  ,"' |
|   :   .'|  | :    /    /  | /    / ':__,'| :   '  | |  '   | |: :|   | /  | |
|   |  |-,'  : |__ .    ' / |.    ' /   '  : |__ |  | :  '   | .; :|   | |  | |
'   :  ;/||  | '.'|'   ;   /|'   ; :__  |  | '.'|'  : |__|   :    ||   | |  |/
|   |    \;  :    ;'   |  / |'   | '.'| ;  :    ;|  | '.'|\   \  / |   | |--'
|   :   .'|  ,   / |   :    ||   :    : |  ,   / ;  :    ; `----'  |   |/
|   | ,'   ---`-'   \   \  /  \   \  /   ---`-'  |  ,   /          '---'
`----'               `----'    `----'             ---`-'
                          ___
       ,---.            ,--.'|_
      /__./|   ,---.    |  | :,'
 ,---.;  ; |  '   ,'\   :  : ' :
/___/ \  | | /   /   |.;__,'  /     ,---.
\   ;  \ ' |.   ; ,. :|  |   |     /     \
 \   \  \: |'   | |: ::__,'| :    /    /  |
  ;   \  ' .'   | .; :  '  : |__ .    ' / |
   \   \   '|   :    |  |  | '.'|'   ;   /|
    \   `  ; \   \  /   ;  :    ;'   |  / |
     :   \ |  `----'    |  ,   / |   :    |
      '---"              ---`-'   \   \  /
  ,----..                          `----'          ___
 /   /   \                                       ,--.'|_
|   :     :   ,---.           ,--,       ,---,   |  | :,'             __  ,-.
.   |  ;. /  '   ,'\        ,'_ /|   ,-+-. /  |  :  : ' :           ,' ,'/ /|
.   ; /--`  /   /   |  .--. |  | :  ,--.'|'   |.;__,'  /     ,---.  '  | |' |
;   | ;    .   ; ,. :,'_ /| :  . | |   |  ,"' ||  |   |     /     \ |  |   ,'
|   : |    '   | |: :|  ' | |  . . |   | /  | |:__,'| :    /    /  |'  :  /
.   | '___ '   | .; :|  | ' |  | | |   | |  | |  '  : |__ .    ' / ||  | '
'   ; : .'||   :    |:  | : ;  ; | |   | |  |/   |  | '.'|'   ;   /|;  : |
'   | '/  : \   \  / '  :  `--'   \|   | |--'    ;  :    ;'   |  / ||  , ;
|   :    /   `----'  :  ,      .-./|   |/        |  ,   / |   :    | ---'
 \   \ .'             `--`----'    '---'          ---`-'   \   \  /
  `---`                                                     `----'

ความพยายามที่จะแปลงข้อมูลจาก กกต. ที่เป็นภาพเอกสาร 5/18 ให้เป็นตารางข้อมูลดิจิตอล

ข้อมูลเก่าได้มาจาก vote62 เป็นภาพที่ได้จากประชาชนตาม ถ่ายภาพจากหน่วยเลือกตั้งต่าง ๆ ในกรุงเทพมหานครเมื่อตอนเลือกตั้งผู้ว่าราชการกรุงเทพแล้ว นำมาลงในระบบของ vote62 ข้อมูลสามารถเข้าถึงได้ที่ bkk-scoreboard.tar.gz จะแยกข้อมูลออกมาให้อยู่ในไดเร็กทอรี vote62/data โดยที่จะเก็บข้อมูลอภิพันธุ์ที่ vote62/data/metadata.csv ตามแบบข้างล่าง

image	province	district	subdistrict	electoral_district_number
1-76a8a53522d479e742bcdc454967b7a8ac20b672.jpeg/data/image	กรุงเทพมหานคร	คลองเตย	คลองเตย	61
0-1-470e0f37283a604db61e1696d6fa4f9a9397f393.jpeg/data/image	กรุงเทพมหานคร	คลองเตย	คลองเตย	59

เพื่อให้ได้ข้อมูลตามข้างบน ให้เปลี่ยนไดเรกเทอรีเป็น vote62 แล้วรันสคริปต์ run.py

ใช้ label studio เพื่อการทำป้ายระบุให้กับข้อมูลที่จะใช้สอน ใน macOS ให้กำหนดตัวแปรก่อนด้วยคำสั่ง

$ export LABEL_STUDIO_LOCAL_FILES_SERVING_ENABLED=true
$ export LABEL_STUDIO_LOCAL_FILES_DOCUMENT_ROOT=~/wevis/election-vote-count-66/vote62/data

ใช้จำนวนข้อมูลประมาณ 500 ภาพเพื่อใช้ในการฝึกโมเดลในลำดับต่อไป โดยที่จะแบ่งภาพออกเป็น 4 ประเภทคือ (1) ภาพรายงาน คะแนน 5/18 (2) กระดานคะแนน (3) ป้ายหน่วยเลือกตั้ง (4) อื่น ๆ

สร้างโมเดลด้วย mobileNet ด้วยโครงสร้างอย่างง่ายโดยนำ dense layer 3 ชั้นไปต่อกับโมเดล หลังจากฝึกเสร็จก็นำไปแยก ประเภทภาพออกเป็นแต่ละไดเร็กทอรีย่อย ๆ

โดยในงานชิ้นนี้จะสนใจเฉพาะรายงานผลคะแนน 5/18 ที่จะมีตารางปรากฏอยู่ในภาพ ในขั้นต้นได้ดูภาพคร่าว ๆ พบว่ามีหลายภาพที่ถ่าย ติดหลายใบ เลยเลือกที่จะทำโมเดลตรวจจับตารางก่อน

Table Detection

เราเลือกใช้ Mask RCNN ในการตรวจจับตาราง และข้อมูลที่ใช้อยู่ในแรูปแบบ COCO ซึ่งเป็นแบบที่เป็นที่นิยมในการตรวจจับวัตถุ

เริ่มแรกเราใช้ข้อมูลจาก vote62 ที่เป็นข้อมูลที่ได้มาจากประชาชนที่ไปถ่ายตามหน่วยเลือกตั้งต่าง ๆ ในกรุงเทพมหานคร แล้วนำมา label ด้วย Label Studio ที่มี output format ที่เป็น COCO อยู่แล้ว

ต่อมาหลังเลือกตั้ง กกต. ก็ได้ปล่อยชุดข้อมูลที่เป็นเอกสาร 5/18 ออกมาให้ประชาชนเห็น ตามที่อยู่นี้ เราจึงเพิ่มข้อมูลเข้าไปในชุดข้อมูลสำหรับการฝึกโมเดลเพิ่มอีก

เริ่มแรกผมทดลองด้วยการผสมสองชุดนี้เข้าด้วยกันแต่ปรากฏว่าออกมาไม่ดีนักเมื่อเทียบกับการใช้แค่ข้อมูลชุดที่ได้จาก กกต.

ชุดข้อมูล

  • Table Detection Dataset 740i: ชุดข้อมูลของการตรวจจับตารางบนภาพ จัดอยู่ในรูปแบบ COCO โดยภาพที่ใช้ทั้งหมดมาจาก vote62 และ label ด้วยตัวเอง
  • Table Detection Dataset Election 2566

Text Recognition

Use synthtiger for generating text image. I use the runpod's VM

$ apt install libfreetype6-dev libharfbuzz-dev libfribidi-dev meson gtk-doc-tools