Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> สมาร์ทโฟน >> iPhone

สร้าง Core ML Dog Breed Classifier ด้วย Turi Create: คู่มือฉบับสมบูรณ์

บทเรียนนี้จะสอน 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 ควรเป็นแบบนี้:

สร้าง Core ML Dog Breed Classifier ด้วย Turi Create: คู่มือฉบับสมบูรณ์
Figure 1: เช็ค Python Version

ถ้า 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 รู้ว่าอะไรอยู่ไหน จัดระเบียบก่อนต่อ

สร้าง Core ML Dog Breed Classifier ด้วย Turi Create: คู่มือฉบับสมบูรณ์
Figure 2: Folder Structure เริ่มต้น

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 เป็นแบบนี้:

สร้าง Core ML Dog Breed Classifier ด้วย Turi Create: คู่มือฉบับสมบูรณ์
Figure 3: Folder Structure พร้อม Python File

สร้างไฟล์ใหม่ เข้า 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 os

2. 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.py

Output

หลัง Train นานพอสมควร images Folder และ dog_breeds.py จะมี SFrame, Model Folder, และ .mlmodel File ซึ่งคือ Core ML Model!

Terminal จะแสดง Output ประมาณนี้:

สร้าง Core ML Dog Breed Classifier ด้วย Turi Create: คู่มือฉบับสมบูรณ์
Figure 4: Output หลังรัน Python

แสดง 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…