ในบทช่วยสอนนี้ คุณจะได้เรียนรู้วิธีฝึกโมเดล Core ML สำหรับการจำแนกสายพันธุ์สุนัขแบบกำหนดเองเพื่อใช้ในแอป iOS และ macOS ของคุณ โมเดล Core ML ของคุณจะสามารถแยกแยะระหว่าง 5 สายพันธุ์ต่างๆ ได้ในตอนท้ายของบทช่วยสอนนี้!
คุณอาจระลึกได้ว่า Apple ได้ซื้อกิจการของ Turi ซึ่งเป็นสตาร์ทอัพด้านปัญญาประดิษฐ์และปัญญาประดิษฐ์มาเมื่อสองสามปีก่อนด้วยมูลค่ามากกว่า 200 ล้านเหรียญสหรัฐ โดยนำเสนอเครื่องมืออันทรงพลังเพื่อสร้างโมเดลแมชชีนเลิร์นนิงขั้นสูงในระยะเวลาอันสั้น
ในบทช่วยสอนนี้ คุณจะได้เรียนรู้การติดตั้ง Turi Create บน Mac ของคุณ สร้างสคริปต์ Python และใช้สคริปต์นั้นเพื่อฝึกโมเดล Core ML ที่คุณสามารถลากไปยังโปรเจ็กต์ Xcode ของคุณได้โดยตรงและนำไปใช้ในแอปของคุณได้อย่างรวดเร็ว
เริ่มต้นใช้งาน
ก่อนที่เราจะเริ่มต้นกับส่วนการเรียนรู้ของเครื่องจริง เรามาทำการติดตั้ง Turi และ Python ให้เสร็จก่อน และแน่นอน คุณจะต้องตรวจสอบให้แน่ใจว่าฮาร์ดแวร์และซอฟต์แวร์ของคุณตรงตามข้อกำหนดของ Turi
ข้อกำหนด
เช่นเดียวกับซอฟต์แวร์ใดๆ ที่คุณติดตั้ง Turi Create มีข้อกำหนดเฉพาะ ซึ่งสามารถพบได้ในหน้า GitHub อย่างเป็นทางการ
Turi Create รองรับ:
- macOS 10.12+
- Linux (พร้อม glibc 2.12+)
- Windows 10 (ผ่าน WSL)
Turi Create ต้องการ:
- Python 2.7, 3.5, 3.6
- สถาปัตยกรรม x86_64
- RAM อย่างน้อย 4 GB
สิ่งสำคัญที่สุดคือ ตราบใดที่ Mac ของคุณสมเหตุสมผล ใหม่ คุณควรจะสามารถเรียกใช้ Turi Create ได้ หากต้องการ คุณสามารถปฏิบัติตามระบบปฏิบัติการอื่นได้ อย่างไรก็ตาม คุณอาจต้องปรับเปลี่ยนขั้นตอนบางอย่างเพื่อให้ทำงานได้
การติดตั้ง
การติดตั้ง Turi Create นั้นค่อนข้างง่าย โดยเฉพาะอย่างยิ่งหากคุณคุ้นเคยกับบรรทัดคำสั่ง แม้ว่าคุณอาจเลือกใช้ Python เวอร์ชันใหม่กว่า แต่ฉันจะใช้ Python 2.7 ในบทช่วยสอนนี้
ใน MacOS Mojave นั้น Python 2.7 จะถูกติดตั้งโดยค่าเริ่มต้น ดังนั้นสิ่งที่คุณต้องทำคือตรวจสอบเวอร์ชัน บน Mac ของคุณ ให้เปิด Applications> Utilities> Te rminal หรือเพียงแค่ค้นหาด้วยแป้นพิมพ์ shortcut Command -Space.
หากต้องการตรวจสอบเวอร์ชันของ Python บน Mac ของคุณ ให้ป้อน:
$ python - version
นี่จะบอกคุณถึงเวอร์ชันของ Python และคอนโซลของคุณควรมีลักษณะดังนี้:
หากเวอร์ชันของคุณไม่ใช่ Python 2.7 หรือหากไม่ได้ติดตั้งบนคอมพิวเตอร์ของคุณด้วยเหตุผลบางประการ คุณควรติดตั้งที่ลิงก์นี้ หากผลงานของคุณคล้ายกับของฉัน คุณก็พร้อมที่จะดำเนินการต่อ
หมายเหตุ: บางคนชอบที่จะใช้เครื่องเสมือนเพื่อติดตั้ง Turi Create เนื่องจากนั่นคือสิ่งที่ Apple แนะนำ แต่เพื่อให้ง่ายขึ้น เราจะทำการติดตั้งโดยตรง
ในการติดตั้ง Turi Create เพียงป้อนข้อมูลต่อไปนี้ในหน้าต่าง Terminal ของคุณ:
$ pip install turicreate
นั่นคือทั้งหมด! ติดตั้ง Turi Create สำเร็จบน Mac ของคุณและพร้อมใช้งาน ตอนนี้คุณสร้างการจำแนกประเภท การตรวจจับ การถดถอย และโมเดลประเภทอื่นๆ ได้แล้ว
ชุดข้อมูล
คุณต้องมีชุดข้อมูลสำหรับโมเดลแมชชีนเลิร์นนิง ในบทช่วยสอนนี้ คุณจะได้เรียนรู้วิธีฝึกโมเดลการจำแนกสายพันธุ์สุนัขอย่างง่าย ซึ่งต้องมีการจัดหมวดหมู่รูปภาพ ข้อมูลที่ฉันจะใช้มาจากชุดข้อมูล Dogs ของมหาวิทยาลัยสแตนฟอร์ด
เพื่อให้ Turi สามารถจดจำภาพที่จัดประเภทไว้ล่วงหน้าได้ คุณจะต้องจัดระเบียบรูปภาพตามสิ่งที่นำเสนอ ตัวอย่างเช่น รูปภาพของ Golden Retriever ทั้งหมดจะอยู่ในโฟลเดอร์เดียว ในขณะที่รูปภาพของ Labradoodle ทั้งหมดจะอยู่ในโฟลเดอร์อื่น
เพื่อความเรียบง่าย เราจะใช้ห้าสายพันธุ์จากหลายร้อยชุดข้อมูลของ Stanford แต่คุณสามารถใช้ได้มากเท่าที่คุณต้องการ ฉันได้ดำเนินการและจัดระเบียบให้คุณแล้ว และสร้างที่เก็บข้อมูลสำหรับมัน หากคุณเลือกที่จะเพิ่มสายพันธุ์สุนัขเพิ่มเติม เพียงเพิ่มโฟลเดอร์และตั้งชื่อตามที่คุณต้องการ
โครงสร้างโฟลเดอร์
ถึงตอนนี้ คุณอาจทราบแล้วว่าวิธีที่คุณจัดเรียงชุดข้อมูลของคุณมีความสำคัญต่อการฝึกโมเดลได้อย่างถูกต้อง ไม่มีทางอื่นที่ Turi Create รู้เกี่ยวกับสิ่งที่เกิดขึ้น ใช้เวลาสักครู่เพื่อจัดระเบียบตัวเอง
ไดอะแกรมลำดับชั้นนี้ควรอธิบายทุกอย่าง และคุณจะต้องจัดโฟลเดอร์ตามลำดับนี้ก่อนดำเนินการต่อในบทช่วยสอนนี้ หากคุณต้องการเปลี่ยนชื่อหรือจัดการสิ่งต่าง ๆ คุณจะต้องจดบันทึกสิ่งนี้ไว้
การฝึกลักษณนาม
หลังจากที่คุณตั้งค่าเสร็จแล้ว คุณก็พร้อมที่จะดำดิ่งลงไปในบทช่วยสอนนี้ — จริง ๆ แล้วฝึกตัวแยกประเภทของคุณ เราจะทำงานใน Python เป็นส่วนใหญ่ แต่ถ้าคุณไม่เคยใช้ Python มาก่อนก็ไม่เป็นไร เราจะอธิบายแต่ละขั้นตอนเมื่อเราดำเนินการ และหากคุณมีคำถามใดๆ โปรดแสดงความคิดเห็นด้านล่างได้เลย
ไฟล์ Python
อันดับแรก เราจะต้องมีที่สำหรับวางความคิดของเรา (ซึ่งแน่นอนว่าในภาษา Python) หากคุณมีตัวแก้ไขที่รองรับ Python อยู่แล้ว เช่น Atom หรือสภาพแวดล้อมการพัฒนาแบบรวม เช่น PyCharm คุณสามารถใช้ตัวแก้ไขเหล่านี้สร้างไฟล์เปล่าชื่อ dog_breeds.py
.
หากคุณต้องการเส้นทางของนักพัฒนามากกว่าเช่นฉัน คุณสามารถใช้ Terminal เพื่อทำสิ่งเดียวกันได้ คุณจะต้องสร้างไฟล์นี้ใน ml_classifier
. ของคุณ โฟลเดอร์ข้าง images
โฟลเดอร์เพื่อให้ลำดับชั้นของคุณมีลักษณะดังนี้:
ในการสร้างไฟล์ใหม่ ก่อนอื่นให้ป้อนลงในไดเร็กทอรีเป้าหมาย:
$ cd ml_classifier
จากนั้นสร้างไฟล์ใหม่ชื่อ dog_breeds.py
.
$ touch dog_breeds.py
โว้ว! โฟลเดอร์ ไฟล์ และรูปภาพของคุณอยู่ในที่ที่ต้องการ และคุณพร้อมที่จะดำเนินการในขั้นตอนต่อไป เราจะใช้ Xcode ในการเปิดไฟล์ ดังนั้นตรวจสอบให้แน่ใจว่าคุณได้ติดตั้งและอัปเดตไฟล์แล้ว
กำลังโหลดรูปภาพชุดข้อมูล
ในที่สุด ก็ถึงเวลาเริ่มบอก Turi ว่าต้องทำอะไรผ่านไฟล์ Python ที่เราเพิ่งสร้างขึ้น หากคุณดับเบิลคลิกที่ไฟล์ ไฟล์ควรเปิดขึ้นโดยค่าเริ่มต้นใน Xcode หากคุณติดตั้งไว้ หากไม่มี คุณสามารถใช้ตัวแก้ไขอื่นหรือ Python IDE ได้
1. นำเข้ากรอบงาน
import turicreate
ที่ด้านบนของไฟล์ คุณจะต้องนำเข้าเฟรมเวิร์ก Turi Create หากต้องการ คุณสามารถสร้างชื่อเพื่อใช้อ้างอิงโดยเพิ่ม as <your na
ฉัน>. ตัวอย่างเช่น หากคุณต้องการอ้างถึง it
เช่น tc ในรหัสของคุณ คุณสามารถเขียน:
import turicreate as tc
ซึ่งจะทำให้คุณสามารถเรียกมันว่า tc
แทนที่จะเขียน turicreate
. ในบทช่วยสอนนี้ ฉันจะใช้เวอร์ชันเต็มเรียกมันว่า turicreate
เพื่อลดความคลุมเครือ
คุณจะต้องจัดการกับชื่อโฟลเดอร์และงานอื่น ๆ ที่เกี่ยวข้องกับระบบปฏิบัติการเพื่อจัดประเภทรูปภาพของคุณ สิ่งนี้จะต้องใช้ไลบรารี Python อื่นที่เรียกว่า os
. หากต้องการนำเข้า เพียงเพิ่มข้อมูลต่อไปนี้:
import os
2. กำลังโหลดรูปภาพ
data = turicreate.image_analysis.load_images("images/")
ในที่นี้ เราจะเก็บรูปภาพทั้งหมดในชุดข้อมูลของเราไว้ในตัวแปรชื่อ data
. เนื่องจาก dog_breeds.py
. ของเรา ไฟล์อยู่ในไดเร็กทอรีเดียวกับ images
ในโฟลเดอร์ เราก็แค่ใส่ “images/”
เป็นเส้นทาง
3. การกำหนดฉลาก
ตอนนี้ Turi Create มีรูปภาพทั้งหมดของคุณแล้ว คุณต้องเชื่อมโยงชื่อโฟลเดอร์กับชื่อป้ายกำกับ ชื่อป้ายกำกับเหล่านี้คือสิ่งที่จะถูกส่งคืนในโมเดล Core ML ของคุณเมื่อใช้ในแอป iOS หรือ MacOS
data["label"] = data["path"].apply(lambda path: os.path.basename(os.path.dirname(path)))
วิธีนี้ทำให้คุณสามารถแมปชื่อโฟลเดอร์ทั้งหมดของคุณกับชื่อ “label” ซึ่งบอก Turi Create ว่ารูปภาพทั้งหมดที่อยู่ในโฟลเดอร์ “cocker_spaniel” เป็น Cocker Spaniels จริงๆ เป็นต้น
4. บันทึกเป็น SFrame
ในกรณีที่คุณไม่คุ้นเคยกับ SFrame
พูดง่ายๆ ก็คือ พจนานุกรมของข้อมูลทั้งหมดของคุณ (ในกรณีนี้คือรูปภาพ) และป้ายกำกับทั้งหมด (ในกรณีนี้คือสายพันธุ์สุนัข) บันทึก SFrame
. ของคุณ แบบนี้:
data.save("dog_classifier.sframe")
ซึ่งจะช่วยให้คุณสามารถจัดเก็บภาพที่ติดป้ายกำกับไว้เพื่อใช้ในขั้นตอนต่อไป นี่เป็นประเภทข้อมูลที่ค่อนข้างมาตรฐานในอุตสาหกรรมแมชชีนเลิร์นนิง
การฝึกอบรมและการทดสอบ
หลังจากที่ Turi Create มีรูปภาพที่ติดป้ายกำกับของคุณทั้งหมดแล้ว ก็ถึงเวลาเข้าสู่ช่วงเริ่มต้นและในที่สุดก็ฝึกโมเดลของคุณ นอกจากนี้เรายังต้องแบ่งข้อมูลเพื่อให้ใช้ 80% สำหรับการฝึก และ 20% จะถูกบันทึกไว้สำหรับการทดสอบโมเดลเมื่อเสร็จสิ้นการฝึก โดยไม่ต้องทดสอบด้วยตนเอง
1. กำลังโหลด SFrame
ตอนนี้ เราต้องโหลด SFrame ที่เราเพิ่งสร้างในขั้นตอนที่แล้ว นี่คือสิ่งที่เราจะใช้เพื่อแบ่งออกเป็นข้อมูลการทดสอบและการฝึกอบรมในภายหลัง
data = turicreate.SFrame("dog_classifier.sframe")
สิ่งนี้กำหนด data
ตัวแปร ซึ่งขณะนี้เป็นประเภท SFrame
ไปยัง SFrame ที่เราบันทึกไว้ในขั้นตอนก่อนหน้า ตอนนี้ เราจะต้องแยกข้อมูลออกเป็นข้อมูลการทดสอบและการฝึกอบรม ดังที่ได้กล่าวมาแล้ว เราจะทำการทดสอบแยกเป็น 80:20 กับข้อมูลการฝึก
2. การแยกข้อมูล
ถึงเวลาแบ่งข้อมูล หลังโค้ด SFrame ของคุณ ให้เพิ่มสิ่งต่อไปนี้:
testing, training = data.random_split(0.8)
รหัสนี้สุ่มแยกข้อมูล 80–20 และกำหนดให้กับสองตัวแปร testing
และ training
ตามลำดับ ตอนนี้ Turi จะทดสอบโมเดลของคุณโดยอัตโนมัติโดยที่คุณไม่ต้องจัดหารูปภาพทดสอบและสร้างแอปด้วยตนเอง หากคุณต้องการทำการปรับเปลี่ยน คุณไม่จำเป็นต้องติดตั้งใช้งานอย่างสมบูรณ์ก่อน และคุณสามารถทำได้ใน Python ของคุณ ไฟล์.
3. การฝึกอบรม การทดสอบ และการส่งออก
ในที่สุดการทำงานหนักของคุณก็ได้ผล! ในโค้ด Python บรรทัดนี้ คุณจะต้องบอกให้ Turi Create ฝึกโมเดลของคุณ พร้อมระบุสถาปัตยกรรมที่คุณต้องการใช้
classifier = turicreate.image_classifier.create(testing, target="label", model="resnet-50")
คุณแค่บอกให้ Turi ใช้ testing
. ของคุณ data (ระบุไว้ก่อนหน้านี้) และใช้เพื่อทำนาย labels
(ตามโครงสร้างโฟลเดอร์เมื่อก่อน) ขณะที่ใช้ resnet-50
ซึ่งเป็นหนึ่งในสถาปัตยกรรมโมเดลแมชชีนเลิร์นนิงที่แม่นยำที่สุด
หากต้องการใช้ข้อมูลการทดสอบและตรวจสอบว่าโมเดลของคุณถูกต้อง ให้เพิ่มสิ่งนี้:
testing = classifier.evaluate(training)print testing["accuracy"]
ใช้ training
ข้อมูลที่คุณระบุและเก็บผลลัพธ์หลังการทดสอบในตัวแปรที่เรียกว่า (คุณเดาได้) testing
. สำหรับข้อมูลของคุณ มันจะพิมพ์ออกมาอย่างแม่นยำ แต่คุณสามารถพิมพ์อย่างอื่นได้เช่นกัน โดยให้เวลาเพียงพอกับ API ของ Turi Create
สุดท้ายแต่ไม่ท้ายสุด คุณสามารถบันทึกโมเดลของคุณลงในระบบไฟล์ของคุณได้ด้วยซับในเดียวนี้ หลังจากที่คุณตั้งชื่อที่เป็นประโยชน์:
classifier.save("dog_classifier.model")classifier.export_coreml("dog_classifier.mlmodel")
แน่นอน คุณยังสามารถบันทึกโมเดลของคุณในรูปแบบอื่นได้ แต่สำหรับตัวอย่างนี้ ฉันได้บันทึกโมเดลนี้เป็นโมเดล Core ML แล้ว
การทำงานและเอาต์พุต
สำหรับนักพัฒนา iOS ทุกคนของคุณ นี่ไม่ใช่โปรเจ็กต์ Xcode ที่คอยคอมไพล์โดยอัตโนมัติและบ่นเรื่องข้อผิดพลาด สำหรับโค้ดที่คุณเพิ่งเขียนเพื่อรัน เราจะต้องทำผ่านเทอร์มินัล
การเรียกใช้ไฟล์ Python
การเรียกใช้ไฟล์ Python นั้นง่ายมาก! ตรวจสอบให้แน่ใจว่าคุณอยู่ในไดเร็กทอรีที่ถูกต้อง และสิ่งที่คุณต้องทำคือป้อนข้อมูลต่อไปนี้ในหน้าต่างเทอร์มินัลของคุณ:
python dog_breeds.py
เอาท์พุต
หลังจากฝึกสองสามนาที images
. ของคุณ โฟลเดอร์และ dog_breeds.py
ไฟล์จะมาพร้อมกับ SFrame โฟลเดอร์โมเดล และ .mlmodel ซึ่งเป็นโมเดล Core ML ของคุณ!
นอกจากนี้ คุณจะเห็นเอาต์พุตในหน้าต่างเทอร์มินัล ซึ่งจะมีลักษณะดังนี้:
ข้อมูลนี้จะให้ข้อมูลเกี่ยวกับความแม่นยำในการฝึกและการฝึก จำนวนภาพที่ประมวลผล และข้อมูลที่เป็นประโยชน์อื่นๆ ซึ่งคุณสามารถใช้วิเคราะห์แบบจำลองได้โดยไม่ต้องใช้เลย
บทสรุป
ฉันหวังว่าคุณจะสนุกกับการอ่านบทช่วยสอนนี้มากที่สุดเท่าที่ฉันสนุกกับการทำ! ต่อไปนี้เป็นขั้นตอนในการไปจากที่นี่ หากคุณต้องการเรียนรู้วิธีใช้โมเดล Core ML ของคุณในแอป iOS โปรดดูบทแนะนำอื่นของฉัน:
เริ่มต้นใช้งานการจดจำรูปภาพใน Core ML
ด้วยความก้าวหน้าทางเทคโนโลยี เราอยู่ในจุดที่อุปกรณ์ของเราสามารถใช้กล้องในตัวเพื่อระบุได้อย่างแม่นยำ... รหัส.
tutsplus.com
บทช่วยสอนนี้จะแสดงวิธีนำผลลัพธ์ dog_classifier.mlmodel
จำลองและนำไปใช้ในแอป iOS ในโลกแห่งความเป็นจริง นอกจากนี้ยังจะสอนให้คุณแยกวิเคราะห์ฟีดวิดีโอสดและแยกเฟรมแต่ละเฟรมสำหรับการจัดประเภทรูปภาพ
หากคุณมีคำถามหรือความคิดเห็นเกี่ยวกับบทช่วยสอนนี้ อย่าลังเลที่จะถามพวกเขาในส่วนความคิดเห็นด้านล่าง! ฉันอยากฟังความคิดเห็น คำถาม หรือวิธีที่คุณใช้ความรู้จากบทช่วยสอนนี้เสมอ
สนับสนุนงานได้ง่าย!
อย่าลืมทุบปุ่ม "ปรบมือ" นั้น ให้มากที่สุดเท่าที่คุณจะทำได้ แชร์บทแนะนำนี้ บนโซเชียลมีเดีย และ ติดตามฉันทาง Twitter
Vardhan Agrawal (@vhanagwal) | ทวิตเตอร์
ทวีตล่าสุดจาก Vardhan Agrawal (@vhanagwal) #ios Developer ที่เรียนรู้ด้วยตนเอง #instructor และมนุษย์…