hero-image

แข่งยังไงให้ได้แชมป์ AWS Hackdays: ทีม Data Scientist เล่าเบื้องหลังการแข่งขัน

สวัสดีครับ ใครที่เป็นสาวกแฮกกาธอน ตอนนี้กำลังมีการเปิดรับสมัครทีมเข้าแข่งขัน AWS Hackdays Thailand 2019 พวกเราซึ่งเป็นทีม data scientist และ developer จากซันเดย์จึงขอถือโอกาสเล่าถึงประสบการณ์แข่งขันที่เพิ่งผ่านไปหมาดๆ เมื่อปลายปี 2018 ที่ผ่านมา ที่ทำให้พวกเราชนะและได้มีโอกาสไปร่วมงาน AWS re:Invent 2018 ซึ่งเป็นงานที่เกี่ยวกับคลาวด์คอมพิวติ้งที่ใหญ่ที่สุดในโลกในลาสเวกัส โดยโปรเจกต์ที่เป็นก้าวแรกที่ทำให้เราชนะการแข่งขันในครั้งนี้ก็คือโปรเจกต์ “ระบบประเมินความเสียหายของรถยนต์จากรูปถ่าย” (Automate Car Damage Assessment) ที่ต่อไปเราจะพัฒนามาใช้กับบริการประกันรถของซันเดย์นี่เอง เผื่อใครอ่านแล้วเกิดแรงบันดาลใจอยากสมัครไปแข่งในปีนี้บ้าง 🙂

เรื่องเริ่มขึ้นที่กรุงเทพฯ – Local AWS Hackdays (17 ก.ค. 2018)

จุดเริ่มต้นของการเดินทางครั้งนี้คือการได้ทราบข่าวการแข่งขัน Local AWS Hackdays จากพี่เต้ (สุรเดช พานิช) chief data scientist ของเรา ทำให้ป่าน (ธรรญชนก งามเสาวรส) และภูมิ (ภูวิศ วิทิตยานนท์) จากทีม data scientist และผม หนึ่ง (ผดุงเกียรติ ตามาสี) และมัส (อัฐสกรณ์​ ตันเยี่ยนนิติ) จากทีม developer ได้มารวมตัวกัน เราตั้งชื่อทีมว่า “Sunday Morning” เพื่อให้เข้ากับชื่อบริษัทซันเดย์ของเรา

ในการแข่งขันรอบแรกนี้ แต่ละทีมต้องเสนอก่อนว่าจะทำอะไร และใช้เครื่องมืออะไรของ AWS บ้าง โดยมีเวลาในการแฮกเพียง 12 ชั่วโมงเท่านั้น

โปรเจ็กต์ที่เราเลือกนำไปนำเสนอคือ Automate Car Damage Assessment หรือระบบประเมินความเสียหายของรถยนต์จากรูปถ่าย ซึ่งระบบนี้จะช่วยลดความยุ่งยากของกระบวนการแจ้งแคลมในอดีตให้เหลือแค่เพียงการถ่ายรูปรถแล้วส่งเข้าไปในระบบเพื่อให้ได้ใบบันทึกการเคลม จากนั้นผู้แจ้งเคลมก็สามารถนำรถส่งซ่อมหรือเปลี่ยนอะไหล่ที่อู่ได้เลย ระบบอัตโนมัตินี้ยังช่วยป้องการความผิดพลาดและเพิ่มความแม่นยำในการประเมินราคา ลดขั้นตอนเอกสารต่างๆ รวมทั้งทำให้อู่ซ่อมรถของลูกค้าได้รวดเร็วยิ่งขึ้น

ขั้นตอนการแจ้งการเคลมแบบเก่าและแบบใหม่ที่ทำได้ด้วยระบบของเรา

หลักการทำงานของระบบที่เราสร้างขึ้นคือ เมื่อลูกค้าประสบอุบัติเหตุ ลูกค้าสามารถเข้าเว็บเพจที่เราสร้างขึ้นใหม่ ซึ่งมีข้อมูลกรมธรรม์ประกันกับบริษัทซันเดย์อยู่แล้ว ลูกค้าสามารถเลือกกรมธรรม์และแจ้งเคลมได้ด้วยการอัปโหลดรูปบริเวณที่ได้รับความเสียหายของรถ จากนั้นระบบจะวิเคราะห์ว่า ภาพดังกล่าวเป็นรูปรถหรือไม่โดยใช้ Amazon Rekognition หลังจากนั้นจะวิเคราะห์ต่อว่า รถได้รับความเสียหายหรือไม่โดยดูจากภาพที่อัปโหลดมา  ถ้าหากเสียหาย ส่วนที่เสียหายเป็นส่วนใดของรถ ซึ่งสามารถจำแนกได้สามแบบ คือ ด้านหน้า ด้านข้าง และด้านหลัง และความเสียหายความรุนแรงระดับใด โดยแบ่งออกเป็นสามระดับคือ เสียหายเล็กน้อย เสียหายปานกลาง และเสียหายมาก ซึ่งทั้งหมดนี้เราใช้ Amazon Sagemaker ในการสร้างโมเดล

หลังจากนั้นระบบของเราจะคำนวณราคาค่าซ่อมรถตามยี่ห้อ รุ่น และปีของรถที่ระบุอยู่ในเอกสารกรมธรรม์ และแจ้งให้ลูกค้าทราบ รวมทั้งออกใบบันทึกการเคลมในรูปแบบอิเล็กทรอนิกส์ซึ่งลูกค้าสามารถนำรถเข้าศูนย์เพื่อซ่อมหรือเปลี่ยนอะไหล่ได้เลย

ระบบ Automate Car Damage Assessment ที่ทีมเราคิดค้นขึ้นมานี้เองทำให้เราชนะ AWS Hackdays ในระดับประเทศ และได้เป็นตัวแทนประเทศไทยไปแข่งขันต่อในระดับภูมิภาคที่กรุงจาการ์ตา ประเทศอินโดนีเซีย เย่!

กรุงจาการ์ตา – รอบ Grand Finale (19-20 ก.ย. 2018)

แล้ววันแข่งขันระดับภูมิภาคที่กรุงจาการ์ตาก็เริ่มขึ้น รอบนี้มีผู้แข่งขันทั้งหมด 6 ทีม แต่ละทีมเป็นตัวแทนจาก 6 ประเทศ ได้แก่ สิงคโปร์ มาเลเซีย ฟิลิปปินส์ เวียดนาม ไทย และอินโดนีเซีย กติกาในรอบนี้ก็คือ แต่ละทีมจะต้องเขียนโปรแกรมให้รถ RoboCar ขับได้อัตโนมัติไปตามเส้นทางด้วยกล้องหน้า และวิ่งในสนามให้ได้ครบ 4 รอบโดยห้ามออกจากเส้นถนน

เรามีเวลาเตรียมการแข่งขันประมาณ 2 เดือนด้วยกัน โดยศึกษาข้อมูล วางแผน รวมทั้งจัดหาอัลกอริธึมและแมชชีนเลิร์นนิง (machine learning) หลายแบบมาใช้ในการแข่งขันครั้งนี้

หลังจากได้ข้อมูลแล้ว เราก็สรุปแผนออกเป็น 2 ขั้นตอน ได้แก่

ขั้นตอนที่ 1 – สอน RoboCar ขับรถ

เราต้องสอน RoboCar ขับรถ เริ่มจากการควบคุมรถด้วยมือ พร้อมทั้งเก็บภาพพื้นถนนจากกล้องที่มีตัวเดียวบริเวณหน้ารถ นอกจากนี้ เรายังต้องเก็บข้อมูลความเร็วและองศาการหักเลี้ยวของล้อสำหรับนำมาสร้างโมเดลเพื่อให้ RoboCar สามารถเลียนแบบพฤติกรรมการขับรถของเรา

สิ่งที่เราต้องทำต่อคือ ทำให้ RoboCar จดจำเฉพาะพฤติกรรมที่ดี เราจึงต้องคัดเลือกข้อมูลช่วงที่เราบังคับไม่ดีหรือบังคับรถออกนอกสนามทิ้งซะก่อน นอกจาก เราต้องปรับรูปที่ถ่ายไปก่อนหน้านี้ ไม่ว่าจะเป็นการตัดรูป ปรับแสง เพื่อรูปเหมือนกันทั้งกลางวันและกลางคืน (เพราะว่าแสงช่วงกลางวันจะจ้ากว่าตอนกลางคืนมาก)

ขั้นตอนที่ 2 – Model Training

เมื่อได้ข้อมูลพร้อมแล้วขั้นต่อไปก็คือการทำ Model Training และวัดผลของโมเดลด้วยการให้รถลองวิ่งบนสนามจริง เราได้เลือกอัลกอริธึมไว้หลายแบบเพื่อเลือกใช้ในวันแข่งขัน

วันแข่งวันแรกเป็นวันของการแฮก เรามีเวลา 12 ชั่วโมงตั้งแต่เก้าโมงเช้าถึงสามทุ่ม เพื่อทำให้ RoboCar ของเราวิ่งได้ พวกเรามาถึงสถานที่แข่งขันกันตั้งแต่เช้าด้วยความตื่นเต้น พอรับรถเรียบร้อย พวกเราก็ตกแต่ง RoboCar พร้อมตั้งชื่อให้มันว่า “น้องอาทิตย์” (จะได้เข้ากับชื่อบริษัทซันเดย์ยังไงเล่า)

เนื่องจากสนามที่ใช้ซ้อมและแข่งมีเพียงสนามเดียว กรรมการจึงให้แต่ละทีมเข้าใช้สนามได้เพียง 3 รอบ รอบละครึ่งชั่วโมงเท่านั้น เราลงชื่อขอใช้สนามเป็นทีมที่ 2 เพราะต้องการเริ่มเก็บข้อมูลทันทีหลังจากเตรียมรถและตั้งค่าอุปกรณ์ต่างๆ เสร็จ ซึ่งเราติดปัญหาเล็กน้อยทำให้ใช้เวลานานพอสมควร แต่โชคดีที่เสร็จทันก่อนลงสนาม

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

รูปที่ได้จากกล้องของน้องอาทิตย์

เมื่อได้ข้อมูลมาแล้ว เราก็เริ่มจัดการปรับแต่งรูปภาพและลองสร้างโมเดลด้วยอัลกอริธึมต่างๆ ตามที่ได้เลือกไว้ก่อนหน้านี้ เพื่อเตรียมพร้อมที่จะเอาไปทดสอบเมื่อได้ลงสนามครั้งต่อไป

ขอแทรกเรื่องทางเทคนิคสักเล็กน้อย การสร้างโมเดลหนึ่งครั้งนั้นใช้เวลานานมาก เนื่องจากข้อมูลของเรามีจำนวนมาก แต่ว่าเราได้เครดิตเพื่อใช้ในการแข่งขันจากผู้จัดมาจำนวน 300 ดอลลาร์สหรัฐฯ ทำให้เราสามารถเช่าเซิร์ฟเวอร์ขนาดใหญ่ที่มีความสามารถในการประมวลผลสูงเทียบเท่าเซิร์ฟเวอร์ที่มี GPU Nvidia V100 เราจึงสามารถสร้างโมเดลได้ในเวลาเพียง 10 นาทีต่อหนึ่งโมเดล ทำให้เรามีโมเดลหลากหลายแบบ

หลังจากที่ลงสนามรอบที่ 2 เพื่อลองทุกโมเดลที่เราสร้างมาแล้ว เราก็ได้ตัดสินใจเลือกโมเดลที่คิดว่าดีที่สุด นั่นก็คือโมเดล SqueezeNet ตอนนี้น้องอาทิตย์ของเราสามารถขับได้เองและวิ่งจนครบสี่รอบสนามแล้ว แต่น้องอาทิตย์ยังตัดสินใจช้าอยู่บ้างในบางโค้ง และหลุดออกจากโค้งอยู่บ้างแม้จะไม่บ่อย เราจึงกลับมาคิดว่า บางทีโมเดลของเราอาจจะใหญ่ไป เพราะน้องอาทิตย์ใช้ซีพียูตัวเล็กและความจำต่ำ จึงอาจโหลดหรือประมวลผลข้อมูลไม่ทัน เราจึงพยายามหาอัลกอริธึมอื่น

สุดท้ายเราจึงตัดสินใจลดเลเยอร์ที่ใช้ประมวลผลลง ทำให้ขนาดของโมเดลลดลงเป็น 10 เท่าตัว น้องอาทิตย์จึงสามารถประมวลผลได้ไวขึ้น และแสดงผลงานที่ได้ในการลงสนามรอบที่ 3 แต่เราก็ยังไม่วางใจเนื่องจากทีมอื่นๆ ก็สามารถขับครบรอบได้ด้วยเวลาที่ไม่ต่างกันมากนัก

ทำไปก็กินน้ำกินขนมไปเรื่อยๆ

พอใกล้หมดเวลา 12 ชั่วโมง ทุกทีมยังคงตั้งหน้าตั้งตาทำให้ RoboCar ของตัวเองวิ่งให้เร็วขึ้น ทางทีมผู้จัดจึงตัดสินใจประกาศว่าจะต่อเวลาให้จนถึงเที่ยงคืน และแบ่งให้แต่ละทีมสามารถเข้าไปใช้สนามได้อีกครั้งละ 10 นาที ทำให้เรามีโอกาสได้ปรับปรุงและลองใช้โมเดลใหม่ในสนาม ซึ่งผลที่ได้ออกมาดีเลยทีเดียว น้องอาทิตย์สามารถเข้าโค้งทุกโค้งได้อย่างดีและเร่งความเร็วได้อีก

หลังจากหมดเวลาในวันนั้น ผู้จัดก็ให้เรานำน้องอาทิตย์ไปเก็บในจุดที่กำหนด และมาเจอกันใหม่ในวันพรุ่งนี้ เราจึงเดินกลับโรงแรมและแยกย้ายกันเข้านอน

น้องอาทิตย์โดดเด่นท่ามกลาง RoboCar คันอื่นๆ

ในวันแข่งขัน เรารีบไปแต่เช้าเผื่อว่าทางทีมงานจะเปิดโอกาสให้ลองใช้สนามจริงอีกสักหนึ่งรอบ แล้วก็เป็นดังคาด เขาเปิดโอกาสให้แต่ละทีมนำรถเข้าไปวิ่งในสนามได้อีกทีมละ 5 นาที เราจึงตัดสินใจเลือกโมเดลที่คิดว่าดีที่สุดมาทดลองอีกครั้งเพื่อความมั่นใจ ซึ่งผลลัพธ์ออกมาดีทีเดียว แต่ในขณะเดียวกัน RoboCar ของทีมอื่นหลายทีมก็สามารถวิ่งได้เองเช่นกัน แม้จะยังหลุดออกนอกเส้นทางบ้างในบางจุด

แล้วช่วงแข่งขันก็มาถึง กติกาก็คือ รถต้องวิ่งให้ได้ครบสี่รอบ โดยที่ต้องมีล้อใดล้อหนึ่งอยู่ในถนน และหากรถหลุดออกจากถนน ทีมจะต้องนำรถกลับไปที่จุดเริ่มต้นและเริ่มนับรอบใหม่ โดยเวลาจะถูกนับต่อไปเรื่อยๆ จนกว่ารถจะวิ่งครบสี่รอบ โดยแต่ละทีมจะสามารถส่งตัวแทน 1 คนให้อยู่ในพื้นที่สนามเพื่อคอยปล่อยและเก็บ RoboCar กลับมายังจุดเริ่มต้นกรณีที่รถหลุดออกจากสนาม

ทีมของเราได้ลงแข่งขันเป็นลำดับที่ 5 ทำให้มีเวลาเตรียมตัวเตรียมใจเพิ่มขึ้นอีกเล็กน้อย เราจึงรวบรวมสติสู้กับความตื่นเต้นแล้วมาวางแผนเพื่อให้น้องอาทิตย์สามารถวิ่งในสนามได้อย่างราบรื่นที่สุด

จากการซ้อมเมื่อวาน เราสังเกตได้ว่าปัจจัยสำคัญที่มีผลต่อการวิ่งของน้องอาทิตย์มีอยู่ 2 เรื่องหลักๆ คือ

  1. แสงที่เปลี่ยนไปจะทำให้ภาพที่ได้มีความสว่างไม่เท่ากัน ซึ่งอาจทำให้น้องอาทิตย์ประมวณผลผิดพลาดได้
  2. กำลังไฟแบตเตอรี่มีผลต่อความเร็วของน้องอาทิตย์ โดยเฉพาะเมื่อแบตเตอรี่ถูกชาร์จจนเต็มจะทำให้น้องอาทิตย์วิ่งเร็วเกินไปจนเข้าโค้งไม่ทัน ทำให้หลุดออกนอกสนามได้

เราจึงตกลงกันว่าจะให้ผมเป็นพี่เลี้ยงน้องอาทิตย์ในสนามและคอยวิ่งอยู่ใกล้ๆ เพื่อบังแสงแดดระหว่างเข้าโค้ง อีกทั้งถ้าเกิดข้อผิดพลาดผมก็จะสามารถเก็บน้องอาทิตย์และนำไปปล่อยที่จุดเริ่มต้นได้อย่างรวดเร็ว นอกจากนี้เรายังพยายามปรับกำลังไฟแบตเตอรี่ให้อยู่ในช่วงที่พอเหมาะ และเริ่มสตาร์ตน้องอาทิตย์ก่อนปล่อยลงสนามเล็กน้อย เพื่อลดเวลาในการออกตัว

ทีมเวียดนามเป็นทีมแรกที่ลงแข่งขันแต่มีปัญหาในการเข้าโค้ง ทำให้ไม่สามารถวิ่งจนครบ 4 รอบได้ เช่นเดียวกับทีมจากอินโดนีเซียในลำดับที่สาม ทีมถัดมาคือทีมจากมาเลเซียที่ถึงแม้จะมีหลุดออกนอกเส้นทางบ้างแต่ยังสามารถวิ่งจนครบได้ด้วยเวลา 1.19 นาที

จนถึงตอนนี้พวกเรายังมีความเชื่อมั่นในน้องอาทิตย์อยู่ เพราะตอนซ้อมทำเวลาไว้เพียง 40 วินาทีเท่านั้น ทีมต่อมาคือทีมที่เราแอบมองมาตลอดเพราะทำผลงานได้ค่อนข้างดีตอนซ้อมคือฟิลิปปินส์ ซึ่งในวันซ้อมทั้งเมื่อวาน และเช้าวันนี้ทำเวลาได้ค่อนข้างดี บางรอบสามารถทำเวลาได้ดีกว่าเรา 1-2 วินาที ทีมนี้ยังพยายามพัฒนาให้ RoboCar สามารถวิ่งได้เร็วขึ้นกว่าเดิม ซึ่งพวกเขาก็ทำได้ แต่วิ่งได้ไม่ครบสี่รอบ แม้ช่วงแรกรถจะวิ่งได้ดี แต่มีจังหวะหลุดถึงสองรอบในช่วงโค้งที่แสงสว่างเยอะ ทำให้ใช้เวลาไปถึง 1.17 นาที 

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

ในที่สุดน้องอาทิตย์ก็ทำสำเร็จ สามารถวิ่งได้ด้วยตัวเองจนครบทั้ง 4 รอบและไม่หลุดออกจากสนามเลย ใช้เวลาทั้งหมดเพียง 32 วินาที! ซึ่งเป็นเวลาที่ดีที่สุด ทุกคนกอดกันด้วยความดีใจ เพราะค่อนข้างมั่นใจกับเวลาที่ได้ ภูมิถึงกับกลั้นน้ำตาไว้ไม่อยู่

แต่เราก็ยังดีใจได้ไม่สุด เพราะยังเหลืออีกทีมที่แข่งถัดจากเรา นั่นคือทีมสิงคโปร์ ซึ่งทีมนี้ก็ทำผลงานไว้ได้อย่างดี แม้จะมีติดขัดบ้างแต่ทำเวลาไปได้ 1.07 นาที เบียดเอาชนะฟิลิปปินส์ขึ้นเป็นอันดับที่ 2 แต่ก็ยังทำเวลาได้ไม่ดีเท่าน้องอาทิตย์ของเรา ทำให้ทีม Sunday Morning ของเราชนะการแข่งขันในครั้งนี้ ฮู้เร่!

เป็นอันว่าเราได้รับรางวัลชนะเลิศจากการแข่งขัน AWS Hackdays Grand Finale ซึ่งรางวัลที่ได้คือตั๋วเครื่องบินพร้อมที่พัก 5 คืน รวมถึงบัตรเข้าร่วมงาน AWS:reInvent 2018  ที่เมืองลาสเวกัส ประเทศสหรัฐอเมริกา ใครอยากรู้ว่าบรรยากาศงาน AWS:reInvent 2018 เป็นอย่างไรละก็ เราจะมาเล่าในให้ฟังในบทความตอนต่อไป อย่าลืมติดตามนะฮะ

นี่คือหนึ่งในเบื้องหลังการคิดค้นและพัฒนาเทคโนโลยีใหม่ๆ ของอินชัวร์เทคอย่างซันเดย์ เรายังหมั่นพัฒนาบริการล้ำๆ เพื่อช่วยให้คุณได้รับบริการประกันภัยที่ดีขึ้นอยู่เสมอ อ้อ แล้วการมาพร้อมกับนวัตกรรมใหม่ๆ ก็ไม่ได้แปลว่า data scientist และ developer ของเราต้องนั่งเขียนโปรแกรมอยู่หน้าคอมทั้งวันซะทีไหน พวกเขายังได้เที่ยวด้วย กินด้วย และได้ไปแข่งแฮกกาธอนด้วยอีกต่างหาก 🙂 มาดูกันว่า นวัตกรรมของซันเดย์ช่วยให้ชีวิตลูกค้าเช่นคุณง่ายขึ้นได้อย่างไรที่ easysunday.com

แนะนำแผนประกันจากซันเดย์

ทำไม ประกันรถยนต์ ซันเดย์จึงแตกต่าง

  • ราคาเบี้ยประกันที่ถูกลง
    • ด้วยเทคโนโลยีประมวลผลและวิเคราะห์ข้อมูลความเสี่ยงด้วย Artificial Intelligence (AI) ทำให้เราประเมินความเสี่ยงของคุณได้ใกล้เคียงความเป็นจริงที่สุด คุณจึงไม่ต้องจ่ายค่าประกันราคาแพงโดยไม่จำเป็น นอกจากนี้ คุณยังปรับเปลี่ยนความคุ้มครองเองได้ ซึ่งเป็นสิ่งที่ไม่มีประกันเจ้าใดให้คุณทำมาก่อน
  • เคลมออนไลน์ เคลมเร็ว
    • เราผนวกแพล็ตฟอร์มดิจิทัลหลากหลาย จะเรียกเคลม แจ้งอุบัติเหตุ เช็คสถานะการเคลม จองคิวรับรถ เช็คสถานะการซ่อม ต่อกรมธรรม์ ทั้งหมดทำได้ง่ายๆ ผ่านมือถือด้วยซูเปอร์แอปฯ Jolly by Sunday (ดาวน์โหลดได้แล้ววันนี้ที่ App Store และ Google Play Store) หรือเคลมผ่าน LINE @easysunday ได้ตลอด 24 ชั่วโมง
  • บริการรับส่งรถถึงที่ การันตีซ่อมเสร็จใน 7 วัน
    • พร้อมรับประกันอะไหล่ซ่อม 1 ปี

แผนประกันแนะนำ

บทความที่เกี่ยวข้อง