Blog

[แชร์เทคนิค] ใช้ Google Vision API แยกหมึกกล้วย หมึกหอม หมึกกระดอง และหมึกสายพันธุ์ squid ได้ในวินาทีเดียว ไม่โดนหลอกที่ตลาดอีกต่อไป

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

ใช้ Google Vision API แยกหมึกกล้วย หมึกหอม หมึกกระดอง และหมึก squid ในวินาทีเดียว

ครั้งนี้เราจะใช้ Google Vision API สร้างโมเดลจดจำภาพที่แยกหมึกกล้วย (neritic squid) หมึกหอม หมึกกระดอง และหมึก squid ออกจากกัน เหมาะมากสำหรับคุณแม่ที่ไม่ค่อยรู้เรื่อง Machine Learning แต่ต้องไปจ่ายตลาด (ผมรู้ว่ากลุ่มคนที่ตรงทั้งสองข้อนี้น่าจะเป็น null)

เข้าเรื่องเลยดีกว่า Vision API เป็นบริการของ Google ที่ช่วยให้คนที่สร้างโมเดล Machine Learning เองไม่เป็น ก็สร้างตัวจำแนกภาพได้ง่ายๆ

ถ้าอยากรู้จัก Machine Learning เบื้องต้น ลองอ่านบทความนี้ได้เลย

แบบฝึกหัดครั้งนี้มีขั้นตอนคร่าวๆ ดังนี้

  1. สมัครโปรเจกต์ GCP และเปิดใช้ GCP AutoML
  2. รวบรวมภาพของสัตว์ตระกูลหมึกสิบหนวดเหล่านี้
  3. สร้าง storage bucket บน GCP แล้วอัปโหลดภาพ
  4. เปิดหน้า AutoML แล้วขยับนิ้วคลิกอีกนิดก็ได้โมเดล

ง่ายมากเลยใช่ไหม?

ก่อนเริ่ม แนะนำให้ทำความรู้จักความแตกต่างของหมึกกล้วย หมึกหอม หมึกกระดอง หมึก squid และหมึกสาย (ปลาหมึกยักษ์) สักหน่อย ลองดูคลิปนี้

เอาล่ะ! ขั้นแรก สมัคร GCP ตรงนี้ขอให้ดูคลิปนี้แล้วทำตามทีละขั้น

สมัคร GCP เสร็จแล้ว ให้ไปที่หน้า AutoML เพื่อตรวจสอบว่าเปิดใช้ (Enable) API แล้วหรือยัง

จากนั้นไปหาภาพหมึกกล้วย หมึกหอม ฯลฯ จาก Google แล้วบันทึกแยกลงในโฟลเดอร์ที่เตรียมไว้ โครงสร้างโฟลเดอร์เป็นแบบนี้

seafood 
- cuttlefish        
- neritic        
- softneritic        
- squid        
- octopus

‍

  • cuttlefish คือหมึกกระดอง
  • neritic คือหมึกกล้วย (รวมหมึกตัวเล็ก)
  • softneritic คือหมึกหอม
  • squid คือหมึก squid (สายพันธุ์ที่ใช้ทำหมึกแห้ง)
  • octopus คือหมึกสาย (ปลาหมึกยักษ์)

‍

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

แตกไฟล์แล้วจะเจอโฟลเดอร์ที่มีภาพอยู่แล้ว 5 โฟลเดอร์ พร้อมไฟล์ index.csv และ test.py

เนื้อหาใน index.csv เป็นแบบนี้

‍

gs://first-850611-vcm/seafood/cuttlefish/0_demo.jpg,cuttlefish
gs://first-850611-vcm/seafood/cuttlefish/1_demo.jpg,cuttlefish
gs://first-850611-vcm/seafood/cuttlefish/2_demo.jpg,cuttlefish
gs://first-850611-vcm/seafood/cuttlefish/3_demo.jpg,cuttlefish
...

‍

ไฟล์นี้คือไฟล์ที่เราจะส่งให้ AutoML ในขั้นถัดไป

ส่วน test.py คือไฟล์ Python ที่ผมเขียนไว้จัดระเบียบภาพที่ดาวน์โหลดมาและสร้าง index.csv

ถ้าดาวน์โหลดไฟล์ zip ของผมแล้ว ยินดีด้วย คุณทำไปได้ครึ่งทางแล้ว!

ขั้นที่สาม เราจะสร้าง bucket ใน GCP Storage โดยชื่อต้องเป็น

<your-project-id>-vcm
หน้าตั้งค่าการสร้าง Bucket ใน Google Cloud Storage สำหรับกรอกชื่อและเลือกภูมิภาคกับตัวเลือกการจัดเก็บ

ยกตัวอย่างเช่น bucket ที่ผมสร้างชื่อ first-850611-vcm

สร้างเสร็จแล้ว ให้สร้างโฟลเดอร์ชื่อ seafood ใน first-850611-vcm แล้วอัปโหลด cuttlefish, neritic, softneritic, squid, octopus และ index.csv ทั้งหมดขึ้นไปไว้ในโฟลเดอร์ seafood

ถึงตรงนี้ เราผ่านขั้นที่สามแล้ว!

ขั้นสุดท้าย เปิดหน้า AutoML เลือกชื่อโปรเจกต์ของคุณที่มุมขวาบน แล้วคลิก Get started with AutoML

หน้าเริ่มต้นของ Google Cloud AutoML Vision สำหรับเลือกโปรเจกต์และเริ่มสร้างโมเดลแบบกำหนดเอง

จากนั้นคลิก NEW DATASET ด้านบนเพื่อเพิ่มข้อมูลที่จะให้โมเดลเรียนรู้

หน้าชุดข้อมูลของ AutoML Vision ที่มีกรอบสีแดงล้อมปุ่ม “NEW DATASET” สำหรับสร้างชุดข้อมูลฝึกใหม่

กรอก Dataset name จะตั้งชื่ออะไรก็ได้ ขอแค่จำได้

แล้วเลือกตัวเลือก Select a CSV และกรอก

gs://<your-project-id>-vcm/seafood/index.csv

‍

ยกตัวอย่างเช่น ของผมจะกรอกว่า

gs://first-850611-vcm/seafood/index.csv

‍

จากนั้นคลิก CREATE DATASET แล้วรอให้ข้อมูลฝึกอัปโหลดเสร็จ

หน้าสร้างชุดข้อมูลของ AutoML Vision กรอกชื่อและระบุไฟล์ป้ายกำกับบนคลาวด์ เพื่อนำเข้าข้อมูลฝึกอาหารทะเล

อัปโหลดเสร็จแล้ว จะเห็นภาพและป้ายกำกับที่เราจะใช้ฝึก!

ต่อมาคลิก TRAIN ด้านบนเพื่อเริ่มฝึกโมเดล

หน้าชุดข้อมูลฝึกของ AutoML Vision แสดงภาพหมึกหลายภาพพร้อมป้ายกำกับ squid แสดงว่านำเข้าข้อมูลที่ติดป้ายแล้วและพร้อมเริ่มฝึก

ระบบจะเตือนประมาณว่า ภาพของเราน้อยเกินไปนะ~

ในฐานะวิศวกร ชนะก็ลุย แพ้ก็ถอย แต่แบบนี้ไม่ต้องกลัว ฝึกมันไปเลย มากดปุ่ม START TRAINING อย่างกล้าหาญด้วยกัน

หน้าฝึกโมเดลภาพของ Google แจ้งว่าภาพของแต่ละป้ายกำกับไม่พอ ก่อนกดปุ่มเริ่มฝึก

‍

Training budget ให้เลือกแบบ free แล้วคลิก START

หน้าฝึกของ Google AutoML Vision เตือนว่าภาพไม่พอและแสดงหน้าต่างตั้งค่าโมเดลใหม่ เลือกงบฝึกแบบฟรีแล้วเริ่มฝึกได้เลย
AutoML Vision แสดงความคืบหน้าการฝึกโมเดลจำแนกอาหารทะเล พร้อมเวลาที่ใช้ฝึกโดยประมาณและตัวเลือกยกเลิก

หลังรอนานพอสมควร เมื่อ model ฝึกเสร็จ ก็คลิก PREDICT ด้านบนเพื่อทดสอบผลการเรียนรู้ของ model ได้

เราจะอัปโหลดภาพหมึกกล้วยและหมึก squid อย่างละหนึ่งภาพให้ model จำแนก

หมึกหลายตัววางเรียงในตะกร้าพลาสติกสีขาว เป็นภาพตัวอย่างสำหรับอัปโหลดทดสอบการจดจำอาหารทะเลของโมเดล
นี่คือหมึกกล้วย
ภาพด้านข้างของหมึกกล้วยหนึ่งตัว ใช้เป็นตัวอย่างทดสอบโมเดล Google Vision API ในการจำแนกหมึกกล้วย
นี่คือหมึก squid

ผลการทำนายของ model เป็นดังภาพด้านล่าง

หน้าทดสอบ PREDICT ของ Google AutoML Vision แสดงป้ายกำกับที่จำแนกได้และคะแนนความมั่นใจหลังอัปโหลดภาพหมึกกล้วย
หน้าผลการทำนายของโมเดล AutoML Vision แสดงผลการจำแนกภาพหมึกว่าเป็น squid ด้วยคะแนนความมั่นใจ 0.982

จะเห็นว่า Google เก่งมากจริงๆ!!!!!!!!!!!

แล้วเราจะยังต้องมีวิศวกร Machine Learning ไปทำไม? วิศวกร Machine Learning ลาออกไปขายปลาได้แล้ว QQ

เอาล่ะ! ต้องยอมรับว่า Vision AutoML แรงจริง ภาพน้อยขนาดนี้ยังเรียนรู้ได้แม่นยำขนาดนี้

ของสนุกแบบนี้จะหยุดแค่นี้ไม่ได้ ตอนหน้าเราจะมาดูวิธีเชื่อมต่อ API ของ model นี้ เพื่อให้คุณแม่มือใหม่ใช้งานได้จริง ไม่ต้องกลัวโดนแม่สามีดุเพราะซื้อหมึก squid มาแทนหมึกกล้วยอีกต่อไป เป็นอาวุธเด็ดที่จะช่วยแก้ปัญหาแม่ผัวลูกสะใภ้!!

ขอโฆษณานิดนึง:

หากบริษัทของคุณต้องการฟีเจอร์ที่ผสาน Machine Learning เข้ากับแชทบอท LINE เช่น การจดจำภาพ การจดจำเสียง หรือแม้แต่การจดจำวิดีโอ ส่งอีเมลมาสอบถามได้ที่อีเมลด้านล่าง

service@oakmega.com

บทความที่คุณอาจสนใจ

ใช้ Scikit เรียนรู้เทรนด์ดัชนีหุ้นไต้หวัน
2019-04-06

ฝึก Machine Learning: ใช้ Scikit เรียนรู้เทรนด์ดัชนีหุ้นไต้หวัน (ตอนที่ 1) – Machine Learning 101

Machine Learning คือวิธีวิเคราะห์ทางสถิติแบบหนึ่ง พูดง่ายๆ คือปัญหาที่ Machine Learning จัดการได้แบ่งคร่าวๆ เป็น 4 กลุ่ม ได้แก่ การจำแนกประเภท (classification) การถดถอย (regression) การจัดกลุ่ม (clustering) และการสกัดกฎ (Rule Extraction)

Khan LeeCTO
ติดตั้ง Raspberry Pi แบบ Headless
2019-03-12

[แชร์เทคนิค] ติดตั้ง Raspberry Pi แบบ Headless — Headless Raspberry Pi Installation

รู้จัก Raspberry Pi: Raspberry Pi คือคอมพิวเตอร์บอร์ดเดี่ยวที่ทำงานบน Linux ตัวเล็กนิดเดียว แต่มีพอร์ตในตัวมากมาย เช่น USB, HDMI, กล้อง และโมดูล Wi-Fi ระบบนิเวศสำหรับการพัฒนาก็ครบครัน เอาไปทำอะไรได้หลายอย่าง รอบนี้ผมซื้อ Echo Dot มา และวางแผนจะเชื่อมกับอุปกรณ์อินฟราเรดในบ้าน เลยหยิบ Raspberry Pi 3 ที่ซื้อไว้ก่อนหน้านี้ออกมาเล่น

Khan LeeCTO
การแบ่งกลุ่มผู้ใช้ในแชทบอท LINE ของโคเหวินเจ๋อ
2019-03-11

[แชร์เทคนิค] เลือกตั้งจบแล้ว มาเล่าการแบ่งกลุ่มผู้ใช้ในแชทบอท LINE ของโคเหวินเจ๋อ

วิสกี้ยังแบ่งกลุ่มได้ แล้วทำไม KP จะแบ่งกลุ่มผู้ใช้บน LINE ไม่ได้!? เราจึงได้ลุงโคสไตล์ไอเลย์ นายกฯ โคสไตล์สเปย์ไซด์ และศาสตราจารย์โคสไตล์แคมป์เบลทาวน์ การทำแชทบอทนี้ต้องฝ่าโจทย์หลายข้อ ทั้งทราฟฟิกมหาศาลแบบฉับพลันที่ติดตัวนายกฯ มาแต่เกิด การสร้างโมดูลความหมายที่หลากหลาย และการบริหารแบบแบ่งกลุ่ม

Khan LeeCTO
ติดต่อเรา

เริ่มทรานส์ฟอร์มธุรกิจด้วย AI ได้เลยวันนี้

พวกเขาเลือก OakMega