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

ฝึกโมเดล Core ML กับ Turi Create เพื่อจำแนกสายพันธุ์สุนัข

ในบทช่วยสอนนี้ คุณจะได้เรียนรู้วิธีฝึกโมเดล 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 และคอนโซลของคุณควรมีลักษณะดังนี้:

ฝึกโมเดล Core ML กับ Turi Create เพื่อจำแนกสายพันธุ์สุนัข
ภาพที่ 1: การตรวจสอบเวอร์ชัน Python

หากเวอร์ชันของคุณไม่ใช่ Python 2.7 หรือหากไม่ได้ติดตั้งบนคอมพิวเตอร์ของคุณด้วยเหตุผลบางประการ คุณควรติดตั้งที่ลิงก์นี้ หากผลงานของคุณคล้ายกับของฉัน คุณก็พร้อมที่จะดำเนินการต่อ

หมายเหตุ: บางคนชอบที่จะใช้เครื่องเสมือนเพื่อติดตั้ง Turi Create เนื่องจากนั่นคือสิ่งที่ Apple แนะนำ แต่เพื่อให้ง่ายขึ้น เราจะทำการติดตั้งโดยตรง

ในการติดตั้ง Turi Create เพียงป้อนข้อมูลต่อไปนี้ในหน้าต่าง Terminal ของคุณ:

$ pip install turicreate

นั่นคือทั้งหมด! ติดตั้ง Turi Create สำเร็จบน Mac ของคุณและพร้อมใช้งาน ตอนนี้คุณสร้างการจำแนกประเภท การตรวจจับ การถดถอย และโมเดลประเภทอื่นๆ ได้แล้ว

ชุดข้อมูล

คุณต้องมีชุดข้อมูลสำหรับโมเดลแมชชีนเลิร์นนิง ในบทช่วยสอนนี้ คุณจะได้เรียนรู้วิธีฝึกโมเดลการจำแนกสายพันธุ์สุนัขอย่างง่าย ซึ่งต้องมีการจัดหมวดหมู่รูปภาพ ข้อมูลที่ฉันจะใช้มาจากชุดข้อมูล Dogs ของมหาวิทยาลัยสแตนฟอร์ด

เพื่อให้ Turi สามารถจดจำภาพที่จัดประเภทไว้ล่วงหน้าได้ คุณจะต้องจัดระเบียบรูปภาพตามสิ่งที่นำเสนอ ตัวอย่างเช่น รูปภาพของ Golden Retriever ทั้งหมดจะอยู่ในโฟลเดอร์เดียว ในขณะที่รูปภาพของ Labradoodle ทั้งหมดจะอยู่ในโฟลเดอร์อื่น

เพื่อความเรียบง่าย เราจะใช้ห้าสายพันธุ์จากหลายร้อยชุดข้อมูลของ Stanford แต่คุณสามารถใช้ได้มากเท่าที่คุณต้องการ ฉันได้ดำเนินการและจัดระเบียบให้คุณแล้ว และสร้างที่เก็บข้อมูลสำหรับมัน หากคุณเลือกที่จะเพิ่มสายพันธุ์สุนัขเพิ่มเติม เพียงเพิ่มโฟลเดอร์และตั้งชื่อตามที่คุณต้องการ

โครงสร้างโฟลเดอร์

ถึงตอนนี้ คุณอาจทราบแล้วว่าวิธีที่คุณจัดเรียงชุดข้อมูลของคุณมีความสำคัญต่อการฝึกโมเดลได้อย่างถูกต้อง ไม่มีทางอื่นที่ Turi Create รู้เกี่ยวกับสิ่งที่เกิดขึ้น ใช้เวลาสักครู่เพื่อจัดระเบียบตัวเอง

ฝึกโมเดล Core ML กับ Turi Create เพื่อจำแนกสายพันธุ์สุนัข
ภาพที่ 2: โครงสร้างโฟลเดอร์เริ่มต้น

ไดอะแกรมลำดับชั้นนี้ควรอธิบายทุกอย่าง และคุณจะต้องจัดโฟลเดอร์ตามลำดับนี้ก่อนดำเนินการต่อในบทช่วยสอนนี้ หากคุณต้องการเปลี่ยนชื่อหรือจัดการสิ่งต่าง ๆ คุณจะต้องจดบันทึกสิ่งนี้ไว้

การฝึกลักษณนาม

หลังจากที่คุณตั้งค่าเสร็จแล้ว คุณก็พร้อมที่จะดำดิ่งลงไปในบทช่วยสอนนี้ — จริง ๆ แล้วฝึกตัวแยกประเภทของคุณ เราจะทำงานใน Python เป็นส่วนใหญ่ แต่ถ้าคุณไม่เคยใช้ Python มาก่อนก็ไม่เป็นไร เราจะอธิบายแต่ละขั้นตอนเมื่อเราดำเนินการ และหากคุณมีคำถามใดๆ โปรดแสดงความคิดเห็นด้านล่างได้เลย

ไฟล์ Python

อันดับแรก เราจะต้องมีที่สำหรับวางความคิดของเรา (ซึ่งแน่นอนว่าในภาษา Python) หากคุณมีตัวแก้ไขที่รองรับ Python อยู่แล้ว เช่น Atom หรือสภาพแวดล้อมการพัฒนาแบบรวม เช่น PyCharm คุณสามารถใช้ตัวแก้ไขเหล่านี้สร้างไฟล์เปล่าชื่อ dog_breeds.py .

หากคุณต้องการเส้นทางของนักพัฒนามากกว่าเช่นฉัน คุณสามารถใช้ Terminal เพื่อทำสิ่งเดียวกันได้ คุณจะต้องสร้างไฟล์นี้ใน ml_classifier . ของคุณ โฟลเดอร์ข้าง images โฟลเดอร์เพื่อให้ลำดับชั้นของคุณมีลักษณะดังนี้:

ฝึกโมเดล Core ML กับ Turi Create เพื่อจำแนกสายพันธุ์สุนัข
ภาพที่ 3: โครงสร้างโฟลเดอร์พร้อมไฟล์ Python

ในการสร้างไฟล์ใหม่ ก่อนอื่นให้ป้อนลงในไดเร็กทอรีเป้าหมาย:

$ 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 กับ Turi Create เพื่อจำแนกสายพันธุ์สุนัข
ภาพที่ 4: เอาต์พุตหลังจากรัน Python

ข้อมูลนี้จะให้ข้อมูลเกี่ยวกับความแม่นยำในการฝึกและการฝึก จำนวนภาพที่ประมวลผล และข้อมูลที่เป็นประโยชน์อื่นๆ ซึ่งคุณสามารถใช้วิเคราะห์แบบจำลองได้โดยไม่ต้องใช้เลย

บทสรุป

ฉันหวังว่าคุณจะสนุกกับการอ่านบทช่วยสอนนี้มากที่สุดเท่าที่ฉันสนุกกับการทำ! ต่อไปนี้เป็นขั้นตอนในการไปจากที่นี่ หากคุณต้องการเรียนรู้วิธีใช้โมเดล Core ML ของคุณในแอป iOS โปรดดูบทแนะนำอื่นของฉัน:

เริ่มต้นใช้งานการจดจำรูปภาพใน Core ML
ด้วยความก้าวหน้าทางเทคโนโลยี เราอยู่ในจุดที่อุปกรณ์ของเราสามารถใช้กล้องในตัวเพื่อระบุได้อย่างแม่นยำ... รหัส.
tutsplus.com

บทช่วยสอนนี้จะแสดงวิธีนำผลลัพธ์ dog_classifier.mlmodel จำลองและนำไปใช้ในแอป iOS ในโลกแห่งความเป็นจริง นอกจากนี้ยังจะสอนให้คุณแยกวิเคราะห์ฟีดวิดีโอสดและแยกเฟรมแต่ละเฟรมสำหรับการจัดประเภทรูปภาพ

หากคุณมีคำถามหรือความคิดเห็นเกี่ยวกับบทช่วยสอนนี้ อย่าลังเลที่จะถามพวกเขาในส่วนความคิดเห็นด้านล่าง! ฉันอยากฟังความคิดเห็น คำถาม หรือวิธีที่คุณใช้ความรู้จากบทช่วยสอนนี้เสมอ

สนับสนุนงานได้ง่าย!

อย่าลืมทุบปุ่ม "ปรบมือ" นั้น ให้มากที่สุดเท่าที่คุณจะทำได้ แชร์บทแนะนำนี้ บนโซเชียลมีเดีย และ ติดตามฉันทาง Twitter

Vardhan Agrawal (@vhanagwal) | ทวิตเตอร์
ทวีตล่าสุดจาก Vardhan Agrawal (@vhanagwal) #ios Developer ที่เรียนรู้ด้วยตนเอง #instructor และมนุษย์…