Computer >> Máy Tính >  >> Điện thoại thông minh >> iPhone

Đào tạo Mô hình ML cốt lõi với Turi Create để phân loại các giống chó

Trong hướng dẫn này, bạn sẽ học cách huấn luyện mô hình Core ML phân loại giống chó tùy chỉnh để sử dụng trong các ứng dụng iOS và macOS của mình. Mô hình Core ML của bạn sẽ có thể phân biệt giữa năm giống chó khác nhau vào cuối hướng dẫn này!

Bạn có thể nhớ lại rằng Apple đã mua lại công ty khởi nghiệp máy học và trí tuệ nhân tạo Turi vài năm trước với giá lên tới 200 triệu đô la; nó cung cấp các công cụ mạnh mẽ để tạo các mô hình học máy nâng cao trong một khoảng thời gian ngắn.

Trong hướng dẫn này, bạn sẽ học cách cài đặt Turi Create trên máy Mac, tạo tập lệnh Python và sử dụng tập lệnh đó để đào tạo mô hình Core ML mà bạn có thể kéo trực tiếp vào các dự án Xcode của mình và nhanh chóng triển khai trong ứng dụng của mình.

Bắt đầu

Trước khi bắt đầu với phần máy học thực tế của nó, trước tiên hãy bắt đầu cài đặt Turi và Python - và tất nhiên, bạn sẽ cần đảm bảo phần cứng và phần mềm của mình đáp ứng các yêu cầu của Turi.

Yêu cầu

Như với bất kỳ phần mềm nào bạn cài đặt, Turi Create có một số yêu cầu cụ thể, bạn có thể tìm thấy các yêu cầu này trên trang GitHub chính thức của họ.

Turi Tạo hỗ trợ:

  • macOS 10.12+
  • Linux (với glibc 2.12+)
  • Windows 10 (qua WSL)

Turi Create yêu cầu:

  • Python 2.7, 3.5, 3.6
  • kiến ​​trúc x86_64
  • Ít nhất 4 GB RAM

Điểm mấu chốt là, miễn là máy Mac của bạn hợp lý mới, bạn sẽ có thể chạy Turi Create. Nếu muốn, bạn có thể theo dõi cùng với một hệ điều hành khác; tuy nhiên, bạn có thể cần phải thay đổi một số bước để chúng hoạt động.

Cài đặt

Cài đặt Turi Create khá đơn giản, đặc biệt nếu bạn đã quen thuộc với dòng lệnh. Mặc dù bạn có thể chọn sử dụng phiên bản Python mới hơn, nhưng tôi sẽ sử dụng Python 2.7 trong hướng dẫn này.

Trong MacOS Mojave, Python 2.7 được cài đặt theo mặc định, vì vậy tất cả những gì bạn cần làm là kiểm tra phiên bản. Trên máy Mac của bạn, mở Ứng dụng> Tiện ích> Te rminal hoặc đơn giản là tìm kiếm nó bằng bàn phím sho rtcut Command -Không gian.

Để kiểm tra phiên bản Python trên máy Mac của bạn, hãy nhập:

$ python - version

Điều này sẽ cho bạn biết phiên bản Python và bảng điều khiển của bạn sẽ trông giống như sau:

Đào tạo Mô hình ML cốt lõi với Turi Create để phân loại các giống chó
Hình 1: Kiểm tra phiên bản Python

Nếu phiên bản của bạn không phải là Python 2.7 hoặc nếu nó không được cài đặt trên máy tính của bạn vì lý do nào đó, bạn nên cài đặt nó tại liên kết này. Nếu đầu ra của bạn trông giống với đầu ra của tôi, bạn đã sẵn sàng tiếp tục.

Lưu ý: Một số người thích sử dụng máy ảo để cài đặt Turi Create vì đó là những gì Apple khuyến nghị. Nhưng để mọi thứ trở nên đơn giản, chúng tôi sẽ trực tiếp cài đặt nó.

Để cài đặt Turi Create, chỉ cần nhập thông tin sau vào cửa sổ Terminal của bạn:

$ pip install turicreate

Đó là tất cả! Turi Create đã được cài đặt thành công trên máy Mac của bạn và nó đã sẵn sàng để sử dụng. Giờ đây, bạn có thể xây dựng phân loại, phát hiện, hồi quy và các loại mô hình khác.

Tập dữ liệu

Đối với bất kỳ mô hình học máy nào, bạn cần một tập dữ liệu. Trong hướng dẫn này, bạn sẽ học cách huấn luyện một mô hình phân loại giống chó đơn giản, mô hình phân loại giống chó này yêu cầu phân loại hình ảnh. Dữ liệu mà tôi sẽ sử dụng đến từ Tập dữ liệu về những chú chó của Đại học Stanford.

Để Turi có thể nhận ra các hình ảnh đã được phân loại trước, bạn cần sắp xếp chúng dựa trên những gì chúng đại diện. Ví dụ:tất cả các hình ảnh của chó tha mồi vàng sẽ nằm trong một thư mục, trong khi tất cả hình ảnh của Labradoodles sẽ ở trong một thư mục khác.

Vì đơn giản, chúng tôi sẽ chỉ sử dụng năm giống trong số hàng trăm giống trong tập dữ liệu của Stanford, nhưng bạn có thể sử dụng bao nhiêu giống tùy thích. Tôi đã đi trước và sắp xếp nó cho bạn và tạo một kho lưu trữ cho nó. Nếu bạn chọn thêm nhiều giống chó hơn, chỉ cần thêm nhiều thư mục hơn và đặt tên chúng theo ý muốn.

Cấu trúc Thư mục

Bây giờ, bạn có thể đã hiểu rằng cách bạn sắp xếp tập dữ liệu của mình là rất quan trọng để có thể đào tạo mô hình một cách chính xác - không có cách nào khác mà Turi Create biết về những gì sẽ xảy ra. Hãy dành một chút thời gian để sắp xếp lại bản thân.

Đào tạo Mô hình ML cốt lõi với Turi Create để phân loại các giống chó
Hình 2: Bắt đầu cấu trúc thư mục

Sơ đồ phân cấp này sẽ giải thích mọi thứ và bạn sẽ cần sắp xếp các thư mục của mình theo thứ tự này trước khi tiếp tục với hướng dẫn này. Nếu bạn muốn đổi tên hoặc sắp xếp mọi thứ theo cách khác, bạn cần đảm bảo rằng bạn đã ghi chú điều này.

Đào tạo trình phân loại

Sau khi thiết lập xong, bạn đã sẵn sàng đi sâu vào nội dung của hướng dẫn này - thực sự là đào tạo bộ phân loại của bạn. Chúng tôi sẽ làm việc chủ yếu bằng Python, nhưng nếu bạn chưa bao giờ sử dụng Python trước đây, điều đó không sao. Tôi sẽ giải thích từng bước khi chúng ta tiếp tục và nếu bạn có bất kỳ câu hỏi nào, vui lòng để lại bình luận bên dưới.

Tệp Python

Đầu tiên, chúng ta cần phải có một nơi để đặt ra những suy nghĩ của mình (tất nhiên là bằng Python). Nếu bạn đã có trình chỉnh sửa hỗ trợ Python, chẳng hạn như Atom hoặc môi trường phát triển tích hợp như PyCharm, bạn có thể sử dụng chúng để tạo tệp trống có tên dog_breeds.py .

Nếu bạn thích tuyến đường dành cho nhà phát triển hơn, giống như tôi, bạn có thể sử dụng Terminal để làm điều tương tự. Bạn sẽ cần tạo tệp này bên trong ml_classifier của mình cùng với images thư mục để phân cấp của bạn trông giống như sau:

Đào tạo Mô hình ML cốt lõi với Turi Create để phân loại các giống chó
Hình 3: Cấu trúc thư mục với tệp Python

Để tạo một tệp mới, trước tiên hãy nhập vào thư mục đích:

$ cd ml_classifier

Sau đó, tạo một tệp mới có tên dog_breeds.py .

$ touch dog_breeds.py

Voilà! Tất cả các thư mục, tệp và hình ảnh của bạn đều ở nơi cần thiết và bạn đã sẵn sàng để tiếp tục với bước tiếp theo. Chúng tôi sẽ sử dụng Xcode để mở tệp của mình, vì vậy hãy đảm bảo rằng bạn đã cài đặt và cập nhật tệp.

Đang tải hình ảnh tập dữ liệu

Cuối cùng, đã đến lúc bắt đầu cho Turi biết nó cần phải làm gì thông qua tệp Python mà chúng tôi vừa tạo. Nếu bạn bấm đúp vào tệp, nó sẽ được mở theo mặc định trong Xcode, nếu bạn đã cài đặt. Nếu không, bạn cũng có thể sử dụng một trình soạn thảo khác hoặc một IDE Python.

1. Nhập khung

import turicreate

Ở đầu tệp, bạn sẽ cần nhập khung Tạo Turi. Nếu muốn, bạn có thể tạo một tên để tham khảo bằng cách thêm as <your na tôi>. Ví dụ:nếu bạn muốn tham chiếu đến it như tc trong mã của bạn, bạn có thể viết:

import turicreate as tc

Điều này cho phép bạn gọi nó là tc thay vì viết ra turicreate . Trong hướng dẫn này, tôi sẽ sử dụng phiên bản đầy đủ, gọi nó là turicreate để giảm sự mơ hồ.

Bạn cũng sẽ cần xử lý tên thư mục và các tác vụ khác liên quan đến hệ điều hành để phân loại hình ảnh của mình. Điều này sẽ yêu cầu một thư viện Python khác có tên os . Để nhập nó, chỉ cần thêm thông tin sau:

import os

2. Đang tải hình ảnh

data = turicreate.image_analysis.load_images("images/")

Tại đây, chúng tôi đang lưu trữ tất cả hình ảnh trong tập dữ liệu của mình vào một biến có tên là data . Kể từ dog_breeds.py của chúng tôi tệp nằm trong cùng thư mục với images thư mục, chúng ta có thể chỉ cần đặt “images/” dưới dạng đường dẫn.

3. Xác định nhãn

Bây giờ Turi Create có tất cả các hình ảnh của bạn, bạn cần liên kết tên thư mục với tên nhãn. Các tên nhãn này là những gì sẽ được trả lại trong mô hình Core ML của bạn khi nó được sử dụng trong ứng dụng iOS hoặc MacOS.

data["label"] = data["path"].apply(lambda path: os.path.basename(os.path.dirname(path)))

Điều này cho phép bạn ánh xạ tất cả các tên thư mục của mình thành một tên “nhãn”, điều này cho Turi Create biết rằng tất cả các hình ảnh trong thư mục “cocker_spaniel” thực sự là Cocker Spaniels, chẳng hạn.

4. Lưu dưới dạng SFrame

Trong trường hợp bạn không quen thuộc với SFrame , nói một cách dễ hiểu, đó là từ điển của tất cả dữ liệu của bạn (trong trường hợp này là hình ảnh) và tất cả các nhãn (trong trường hợp này là giống chó). Lưu SFrame của bạn như thế này:

data.save("dog_classifier.sframe")

Điều này cho phép bạn lưu trữ các hình ảnh được gắn nhãn của mình để sử dụng trong bước tiếp theo. Đây là kiểu dữ liệu khá chuẩn trong ngành học máy.

Đào tạo và Kiểm tra

Sau khi Turi Create đã có sẵn tất cả các hình ảnh được gắn nhãn của bạn, đã đến lúc bạn vào trang chủ và cuối cùng là đào tạo mô hình của bạn. Chúng tôi cũng cần tách dữ liệu để 80% được sử dụng cho đào tạo và 20% được lưu để kiểm tra mô hình sau khi đào tạo xong - chúng tôi sẽ không phải kiểm tra theo cách thủ công.

1. Đang tải SFrame

Bây giờ, chúng ta cần tải SFrame mà chúng ta vừa tạo ở bước trước. Đây là những gì chúng tôi sẽ sử dụng để chia thành dữ liệu thử nghiệm và đào tạo sau này.

data = turicreate.SFrame("dog_classifier.sframe")

Điều này chỉ định data biến, hiện thuộc loại SFrame vào SFrame mà chúng tôi đã lưu ở bước trước. Bây giờ, chúng tôi sẽ cần chia dữ liệu thành dữ liệu thử nghiệm và đào tạo. Như đã đề cập ở trên, chúng tôi sẽ thực hiện phân tách 80:20 thử nghiệm thành dữ liệu đào tạo.

2. Tách dữ liệu

Đã đến lúc chia nhỏ dữ liệu. Sau mã SFrame của bạn, hãy thêm mã sau:

testing, training = data.random_split(0.8)

Mã này phân chia dữ liệu một cách ngẫu nhiên 80–20 và gán nó cho hai biến, testingtraining , tương ứng. Giờ đây, Turi sẽ tự động kiểm tra mô hình của bạn mà bạn không cần phải cung cấp hình ảnh kiểm tra và tạo ứng dụng theo cách thủ công - nếu bạn cần điều chỉnh, bạn sẽ không cần phải triển khai đầy đủ trước và thay vào đó, bạn có thể thực hiện chúng ngay trong Python của mình tệp.

3. Đào tạo, Kiểm tra và Xuất khẩu

Công việc khó khăn của bạn cuối cùng đã được đền đáp! Trong dòng mã Python này, bạn sẽ chỉ yêu cầu Turi Create đào tạo mô hình của bạn, đồng thời chỉ định kiến ​​trúc mà bạn muốn sử dụng.

classifier = turicreate.image_classifier.create(testing, target="label", model="resnet-50")

Bạn chỉ đang yêu cầu Turi sử dụng testing của bạn dữ liệu (được chỉ định trước đó) và sử dụng chúng để dự đoán labels (dựa trên cấu trúc thư mục từ trước), trong khi sử dụng resnet-50 , là một trong những kiến ​​trúc mô hình học máy chính xác nhất.

Để sử dụng dữ liệu thử nghiệm của bạn và đảm bảo rằng mô hình của bạn là chính xác, hãy thêm điều này:

testing = classifier.evaluate(training)print testing["accuracy"]

Điều này sử dụng training dữ liệu bạn đã chỉ định và lưu trữ kết quả sau khi thử nghiệm trong một biến được gọi là (bạn đoán nó) testing . Đối với thông tin của bạn, nó in ra độ chính xác, nhưng bạn cũng có thể in những thứ khác, nếu có đủ thời gian trên các API của Turi Create.

Cuối cùng nhưng không kém phần quan trọng, bạn có thể lưu mô hình của mình ngay vào hệ thống tệp của mình bằng một lớp lót này sau khi bạn đặt tên hữu ích cho nó:

classifier.save("dog_classifier.model")classifier.export_coreml("dog_classifier.mlmodel")

Tất nhiên, bạn cũng có thể lưu mô hình của mình ở các định dạng khác, nhưng đối với ví dụ này, tôi đã lưu nó dưới dạng mô hình Core ML.

Đang chạy và Đầu ra

Đối với tất cả các bạn là nhà phát triển iOS ngoài kia - không, đây không phải là một dự án Xcode luôn tự động biên dịch và phàn nàn về các lỗi. Để mã bạn vừa viết có thể thực thi, chúng tôi cần thực hiện điều đó thông qua thiết bị đầu cuối.

Chạy tệp Python

Chạy tệp Python thật dễ dàng! Đảm bảo rằng bạn đang ở đúng thư mục và tất cả những gì bạn cần làm là nhập thông tin sau vào cửa sổ dòng lệnh của bạn:

python dog_breeds.py

Đầu ra

Sau một vài phút đào tạo, images của bạn thư mục và dog_breeds.py tệp sẽ được đi kèm với một SFrame, một thư mục mô hình và một .mlmodel , đó là mô hình Core ML của bạn!

Bạn cũng sẽ được hiển thị đầu ra trong cửa sổ đầu cuối của mình, trông giống như sau:

Đào tạo Mô hình ML cốt lõi với Turi Create để phân loại các giống chó
Hình 4: Đầu ra sau khi chạy Python

Điều này cung cấp cho bạn thông tin về độ chính xác của quá trình đào tạo và huấn luyện, số lượng hình ảnh được xử lý và các thông tin hữu ích khác mà bạn có thể sử dụng để phân tích mô hình của mình mà thậm chí chưa bao giờ sử dụng nó.

Kết luận

Tôi hy vọng bạn thích đọc hướng dẫn này nhiều như tôi thích làm nó! Dưới đây là một số bước về nơi để đi từ đây. Nếu bạn muốn tìm hiểu cách sử dụng mô hình Core ML của mình trong ứng dụng iOS, hãy xem một hướng dẫn khác của tôi:

Bắt đầu với nhận dạng hình ảnh trong Core ML
Với những tiến bộ về công nghệ, chúng ta đã đến thời điểm mà thiết bị của mình có thể sử dụng camera tích hợp để xác định chính xác… mã số.
tutsplus.com

Hướng dẫn này sẽ chỉ cho bạn cách lấy dog_classifier.mlmodel kết quả của bạn mô hình và triển khai nó trong một ứng dụng iOS trong thế giới thực. Nó cũng sẽ dạy bạn phân tích cú pháp nguồn cấp dữ liệu video trực tiếp và lấy từng khung hình để phân loại hình ảnh.

Nếu bạn có bất kỳ câu hỏi hoặc nhận xét nào về hướng dẫn này, đừng ngần ngại hỏi chúng trong phần nhận xét bên dưới! Tôi luôn mong muốn nghe phản hồi, câu hỏi hoặc cách bạn sử dụng kiến ​​thức của mình từ hướng dẫn này.

Thật dễ dàng để hỗ trợ công việc của tôi!

Hãy chắc chắn đập vào nút “vỗ tay” đó bao nhiêu lần bạn có thể, hãy chia sẻ hướng dẫn này trên mạng xã hội và theo dõi tôi trên Twitter.

Vardhan Agrawal (@vhanagwal) | Twitter
Tweet mới nhất từ ​​Vardhan Agrawal (@vhanagwal). Nhà phát triển #ios hoàn toàn tự học, #instructor và con người…