บทเรียนนี้จะสอน Train Custom Dog Breed Classification Core ML Model ใช้ใน iOS และ macOS Apps Model จะแยกสายพันธุ์สุนัข 5 ชนิดได้ท้ายบทเรียน!
Apple ซื้อ Turi (ML/AI Startup) ไปไม่กี่ปีก่อน ราคา $200M+ มี Tools อันทรงพลังสร้าง ML Models ขั้นสูงในเวลาสั้น
บทเรียนนี้เรียนรู้ติดตั้ง Turi Create บน Mac, สร้าง Python Script, ใช้ Script Train Core ML Model ลากเข้า Xcode Projects ใช้ใน Apps ได้ทันที
เริ่มต้น
ก่อนเข้าส่วน ML จัดการติดตั้ง Turi และ Python ก่อน — และ Hardware/Software ต้อง Meet Requirements ของ Turi
Requirements (ข้อกำหนด)
เหมือน Software ทั่วไป Turi Create มี Requirements เฉพาะเจาะจง ดูที่ GitHub Official
Turi Create รองรับ:
- macOS 10.12+
- Linux (glibc 2.12+)
- Windows 10 (via WSL)
Turi Create ต้องการ:
- Python 2.7, 3.5, 3.6
- x86_64 Architecture
- RAM อย่างน้อย 4 GB
สรุป: Mac ที่ สมัยใหม่พอสมควร รัน Turi Create ได้ อยากใช้ OS อื่นทำได้ แต่อาจแก้ขั้นตอนบ้าง
Installation (การติดตั้ง)
ติดตั้ง Turi Create ง่าย หากคุ้นเคย Command Line อาจใช้ Python ใหม่กว่า แต่บทเรียนนี้ใช้ Python 2.7
macOS Mojave มี Python 2.7 มาพร้อม ตรวจสอบ Version เปิด Applications > Utilities > Terminal หรือ Search ด้วย Shortcut Command-Space
เช็ค Python Version:
$ python - versionจะบอก Version Console ควรเป็นแบบนี้:

ถ้า Version ไม่ใช่ 2.7 หรือไม่ได้ติดตั้ง ติดตั้งที่ Link นี้ ถ้า Output คล้ายของผม พร้อมต่อไป
Note: บางคนชอบ用 Virtual Machine ติดตั้ง Turi Create ตามคำแนะนำ Apple แต่เพื่อความง่าย ติดตั้งตรงๆ
ติดตั้ง Turi Create ใส่ใน Terminal:
$ pip install turicreateเสร็จ! Turi Create ติดตั้งสำเร็จ พร้อมใช้ สร้าง Classification, Detection, Regression และ Models อื่นๆ ได้
Dataset (ชุดข้อมูล)
ML Model ทุกตัวต้องมี Dataset บทเรียนนี้ Train Dog Breed Classification Model 简单 ต้องการ Image Classification Data จาก Stanford University's Dogs Dataset
เพื่อให้ Turi จดจำ Pre-classified Images ได้ ต้องจัดระเบียบตามสิ่งที่แทน เช่น รูป Golden Retriever อยู่ Folder เดียวกัน Labradoodle อยู่ Folder อีกอัน
เพื่อความง่าย ใช้ 5 สายพันธุ์จากหลายร้อยใน Stanford Dataset เพิ่มได้เท่าไหร่ก็ได้ สร้าง Repository ให้แล้ว จัดระเบียบไว้ เพิ่มสายพันธุ์เพิ่ม Folder และตั้งชื่อ
Folder Structure (โครงสร้างโฟลเดอร์)
ตอนนี้คงรู้ว่าการจัด Dataset สำคัญต่อการ Train Model ให้ถูก — ไม่มีทางอื่นให้ Turi Create รู้ว่าอะไรอยู่ไหน จัดระเบียบก่อนต่อ

Hierarchy Diagram นี้อธิบายทั้งหมด ต้องจัด Folder ให้ถูกต้องก่อนต่อบทเรียน เปลี่ยนชื่อหรือจัดต่างออกไป ต้องจดจำการเปลี่ยนแปลง
Training the Classifier (การ Train Classifier)
Setup เสร็จ พร้อมเข้าส่วนสำคัญ — Train Classifier จริง ทำงานใน Python หากไม่เคย Python ไม่เป็นไร อธิบายทุกขั้นตอน ถามได้ใน Comments
Python File
ต้องมีที่วางโค้ด (Python) ถ้ามี Editor รองรับ Python เช่น Atom หรือ PyCharm สร้างไฟล์ว่าง dog_breeds.py
ชอบ Developer Way อย่างผม ใช้ Terminal สร้างไฟล์ใน ml_classifier Folder ข้าง images Folder Hierarchy เป็นแบบนี้:

สร้างไฟล์ใหม่ เข้า Target Directory:
$ cd ml_classifierสร้างไฟล์ dog_breeds.py:
$ touch dog_breeds.pyเสร็จ! Folders, Files, Images อยู่ที่ถูกต้อง พร้อมต่อไป ใช้ Xcode เปิดไฟล์ ติดตั้งและ Update แล้ว
Loading Dataset Images (โหลดรูปภาพ Dataset)
เริ่มบอก Turi ทำอะไรผ่าน Python File ที่สร้าง Double-click ไฟล์ เปิดใน Xcode โดย Default (ถ้าติดตั้ง) ไม่ก็ Editor/IDE อื่น
1. Import Frameworks
import turicreateบนสุดไฟล์ Import Turi Create Framework อยากตั้งชื่ออ้างอิง เพิ่ม as <your name> เช่นอยากเรียก tc เขียน:
import turicreate as tcเรียก tc แทนเขียน turicreate บทเรียนนี้ใช้ Full Version เรียก turicreate ลด Ambiguity
ต้องจัดการ Folder Names และ OS Tasks เพื่อ Classify Images ต้องการ Python Library os เพิ่ม:
import os2. Loading Images
data = turicreate.image_analysis.load_images("images/")เก็บรูปทั้งหมดใน Dataset ไว้ Variable data เนื่องจาก dog_breeds.py อยู่ Directory เดียวกับ images Folder ใส่ Path “images/”
3. Defining Labels (กำหนด Labels)
Turi Create มีรูปทั้งหมด ต้อง Link Folder Names ไป Label Names Labels นี้คือสิ่งที่ Core ML Model คืนค่าตอนใช้ใน iOS/macOS App
data["label"] = data["path"].apply(lambda path: os.path.basename(os.path.dirname(path)))Map Folder Names ทั้งหมดไป "label" Name บอก Turi Create รูปใน Folder "cocker_spaniel" คือ Cocker Spaniels จริงๆ
4. Save เป็น SFrame
SFrame 簡單來說คือ Dictionary ของ Data ทั้งหมด (รูปภาพ) และ Labels (สายพันธุ์สุนัข) Save SFrame:
data.save("dog_classifier.sframe")เก็บ Labeled Images ไว้ขั้นตอนต่อไป Data Type มาตรฐานใน ML Industry
Training and Testing (การ Train และ Test)
Turi Create มี Labeled Images พร้อม เข้าสุดท้าย Train Model ต้อง Split Data 80% Train, 20% Test — ไม่ต้อง Test เอง
1. Loading SFrame
โหลด SFrame ที่สร้างขั้นก่อน ใช้ Split Training/Testing Data
data = turicreate.SFrame("dog_classifier.sframe")Assign Variable data Type SFrame จาก SFrame ที่ Save ขั้นก่อน Split Data 80:20 Training:Testing
2. Splitting Data
Split Data ใส่หลัง SFrame Code:
testing, training = data.random_split(0.8)Random Split 80-20 Assign ให้ testing และ training ตามลำดับ Turi Test Model อัตโนมัติ ไม่ต้อง Manual Test Images และสร้าง App — ปรับได้ใน Python File
3. Training, Testing, และ Exporting
ความพยายามคุ้มค่า! บรรทัดนี้บอก Turi Create Train Model ระบุ Architecture ที่ต้องการ
classifier = turicreate.image_classifier.create(testing, target="label", model="resnet-50")บอก Turi ใช้ testing Data (ระบุนี้) ทาย labels (จาก Folder Structure ก่อนหน้า) ใช้ resnet-50 Architecture ML Model ที่แม่นยำที่สุด
ใช้ Training Data ทดสอบ Model ใส่:
testing = classifier.evaluate(training) print testing["accuracy"]ใช้ training Data ระบุ เก็บผล Test ใน Variable testing Print Accuracy (Print อื่นๆ ได้ถ้ามีเวลา API Turi Create)
สุดท้าย Save Model ลง File System One-liner ตั้งชื่อที่ใช้ได้:
classifier.save("dog_classifier.model") classifier.export_coreml("dog_classifier.mlmodel")Save Format อื่นได้ แต่ตัวอย่าง Save เป็น Core ML Model
Running and Output (การรันและ Output)
สำหรับ iOS Developers — ไม่ใช่ Xcode Project Compile Auto และ Complaint Errors รันโค้ดผ่าน Terminal
Running the Python File
รัน Python File ง่าย! อยู่ Directory ถูกต้อง ใส่ใน Terminal:
python dog_breeds.pyOutput
หลัง Train นานพอสมควร images Folder และ dog_breeds.py จะมี SFrame, Model Folder, และ .mlmodel File ซึ่งคือ Core ML Model!
Terminal จะแสดง Output ประมาณนี้:

แสดง Info Training, Training Accuracy, จำนวนรูปที่ Process, และ Info อื่นๆ วิเคราะห์ Model ได้โดยไม่ใช้
สรุป
หวังว่าสนุกอ่านเท่ากับสนุกเขียน! ขั้นตอนต่อไป: อยากเรียนรู้ใช้ Core ML Model ใน iOS App อ่านบทเรียนอื่นของผม:
Get Started With Image Recognition in Core ML
With technological advances, we're at the point where our devices can use their built-in cameras to accurately identify…code.
tutsplus.com
บทเรียนนี้นำ dog_classifier.mlmodel ไป Implement ใน iOS App จริง สอน Parse Live Video Feed และ Frame สำหรับ Image Classification
คำถามหรือความคิดเห็น Comment ได้เลย ผมยินดีรับ Feedback, Questions, หรือการนำไปใช้งาน!
ง่ายมากที่จะ Support ผม!
กด Clap Button มากเท่าที่ทำได้ Share บน Social Media และ Follow Twitter
Vardhan Agrawal (@vhanagwal) | Twitter
The latest Tweets from Vardhan Agrawal (@vhanagwal). Completely self-taught #ios developer, #instructor, and human…