สวัสดีครับ ใครที่เป็นสาวกแฮกกาธอน ตอนนี้กำลังมีการเปิดรับสมัครทีมเข้าแข่งขัน 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 นาที ทำให้เรามีโอกาสได้ปรับปรุงและลองใช้โมเดลใหม่ในสนาม ซึ่งผลที่ได้ออกมาดีเลยทีเดียว น้องอาทิตย์สามารถเข้าโค้งทุกโค้งได้อย่างดีและเร่งความเร็วได้อีก
หลังจากหมดเวลาในวันนั้น ผู้จัดก็ให้เรานำน้องอาทิตย์ไปเก็บในจุดที่กำหนด และมาเจอกันใหม่ในวันพรุ่งนี้ เราจึงเดินกลับโรงแรมและแยกย้ายกันเข้านอน
ในวันแข่งขัน เรารีบไปแต่เช้าเผื่อว่าทางทีมงานจะเปิดโอกาสให้ลองใช้สนามจริงอีกสักหนึ่งรอบ แล้วก็เป็นดังคาด เขาเปิดโอกาสให้แต่ละทีมนำรถเข้าไปวิ่งในสนามได้อีกทีมละ 5 นาที เราจึงตัดสินใจเลือกโมเดลที่คิดว่าดีที่สุดมาทดลองอีกครั้งเพื่อความมั่นใจ ซึ่งผลลัพธ์ออกมาดีทีเดียว แต่ในขณะเดียวกัน RoboCar ของทีมอื่นหลายทีมก็สามารถวิ่งได้เองเช่นกัน แม้จะยังหลุดออกนอกเส้นทางบ้างในบางจุด
แล้วช่วงแข่งขันก็มาถึง กติกาก็คือ รถต้องวิ่งให้ได้ครบสี่รอบ โดยที่ต้องมีล้อใดล้อหนึ่งอยู่ในถนน และหากรถหลุดออกจากถนน ทีมจะต้องนำรถกลับไปที่จุดเริ่มต้นและเริ่มนับรอบใหม่ โดยเวลาจะถูกนับต่อไปเรื่อยๆ จนกว่ารถจะวิ่งครบสี่รอบ โดยแต่ละทีมจะสามารถส่งตัวแทน 1 คนให้อยู่ในพื้นที่สนามเพื่อคอยปล่อยและเก็บ RoboCar กลับมายังจุดเริ่มต้นกรณีที่รถหลุดออกจากสนาม
ทีมของเราได้ลงแข่งขันเป็นลำดับที่ 5 ทำให้มีเวลาเตรียมตัวเตรียมใจเพิ่มขึ้นอีกเล็กน้อย เราจึงรวบรวมสติสู้กับความตื่นเต้นแล้วมาวางแผนเพื่อให้น้องอาทิตย์สามารถวิ่งในสนามได้อย่างราบรื่นที่สุด
จากการซ้อมเมื่อวาน เราสังเกตได้ว่าปัจจัยสำคัญที่มีผลต่อการวิ่งของน้องอาทิตย์มีอยู่ 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) ทำให้เราประเมินความเสี่ยงของคุณได้ใกล้เคียงความเป็นจริงที่สุด คุณจึงไม่ต้องจ่ายเบี้ยประกันราคาแพงโดยไม่จำเป็น นอกจากนี้ คุณยังปรับเปลี่ยนความคุ้มครองเองได้ ซึ่งเป็นสิ่งที่ไม่มีประกันเจ้าใดให้คุณทำมาก่อน ดูรายละเอียด
- เคลมง่ายผ่านแอพ
- บริการรับส่งรถถึงที่ ส่งฟรีถึงบ้าน การันตีซ่อมเสร็จใน 7 วัน
- พร้อมรับประกันอะไหล่ซ่อม 1 ปี ดูรายละเอียด