Thật yên tâm khi biết rằng chúng tôi đã cố gắng truyền cho rô-bốt khả năng bẩm sinh của chúng tôi để học theo ví dụ và nhận thức môi trường xung quanh chúng. Thách thức cơ bản là việc dạy máy tính “nhìn” giống như con người sẽ cần nhiều thời gian và nỗ lực hơn.
Tuy nhiên, khi chúng ta xem xét giá trị thiết thực mà kỹ năng này mang lại cho các tổ chức, doanh nghiệp thì công sức bỏ ra là đáng giá. Trong bài viết này, bạn sẽ tìm hiểu về phân loại hình ảnh, cách thức hoạt động và cách triển khai thực tế của nó. Hãy bắt đầu nào.
Phân loại ảnh là gì?
Công việc cung cấp một hình ảnh thành một mạng lưới thần kinh và việc nó xuất ra một số dạng nhãn cho bức ảnh đó được gọi là nhận dạng hình ảnh. Nhãn đầu ra của mạng sẽ tương ứng với một lớp được xác định trước.
Có thể có nhiều lớp được gán cho bức tranh, hoặc đơn giản là một. Khi chỉ có một lớp, thuật ngữ “công nhận” thường được sử dụng, trong khi khi có nhiều lớp, thuật ngữ “phân loại” thường được sử dụng.
Phát hiện đối tượng là một tập hợp con của phân loại hình ảnh trong đó các trường hợp cụ thể của các đối tượng được phát hiện là thuộc về một lớp nhất định, chẳng hạn như động vật, xe cộ hoặc con người.
Phân loại hình ảnh hoạt động như thế nào?
Một hình ảnh ở dạng pixel được máy tính phân tích. Nó hoàn thành điều này bằng cách coi hình ảnh như một tập hợp các ma trận, kích thước của ma trận được xác định bởi độ phân giải hình ảnh. Nói một cách đơn giản, phân loại ảnh là nghiên cứu dữ liệu thống kê sử dụng các thuật toán từ góc nhìn của máy tính.
Việc phân loại hình ảnh được thực hiện trong xử lý hình ảnh kỹ thuật số bằng cách nhóm các pixel thành các nhóm xác định trước, hoặc “các lớp”. Các thuật toán chia hình ảnh thành một chuỗi các đặc điểm đáng chú ý, giúp giảm bớt gánh nặng cho bộ phân loại cuối cùng.
Những phẩm chất này thông báo cho người phân loại về ý nghĩa của hình ảnh và khả năng phân loại. Bởi vì phần còn lại của các quá trình phân loại một bức tranh phụ thuộc vào nó, phương pháp trích xuất đặc trưng là giai đoạn quan trọng nhất.
Sản phẩm dữ liệu được cung cấp thuật toán cũng rất quan trọng trong phân loại ảnh, đặc biệt là phân loại có giám sát. So với một tập dữ liệu khủng khiếp với sự mất cân bằng dữ liệu dựa trên lớp và chất lượng hình ảnh và chú thích thấp, một tập dữ liệu phân loại được tối ưu hóa tốt hoạt động đáng ngưỡng mộ.
Phân loại hình ảnh bằng Tensorflow & Keras trong python
Chúng tôi sẽ sử dụng CIFAR-10 tập dữ liệu (bao gồm máy bay, máy bay, chim và 7 thứ khác).
1. Yêu cầu cài đặt
Đoạn mã dưới đây sẽ cài đặt tất cả các điều kiện tiên quyết.
2. Nhập các phần phụ thuộc
Tạo tệp train.py bằng Python. Đoạn mã dưới đây sẽ nhập các phụ thuộc Tensorflow và Keras.
3. Khởi tạo các tham số
CIFAR-10 chỉ bao gồm 10 danh mục hình ảnh, do đó các lớp num chỉ đơn giản là tham chiếu đến số lượng danh mục cần phân loại.
4. Đang tải tập dữ liệu
Hàm sử dụng mô-đun Tập dữ liệu Tensorflow để tải tập dữ liệu và chúng tôi đặt thông tin thành True để có được một số thông tin về nó. Bạn có thể in nó ra để xem các trường và giá trị của chúng là gì và chúng tôi sẽ sử dụng thông tin này để truy xuất số lượng mẫu trong các bộ đào tạo và thử nghiệm.
5. Tạo mô hình
Bây giờ chúng ta sẽ xây dựng ba lớp, mỗi lớp bao gồm hai ConvNets với chức năng kích hoạt tổng hợp tối đa và ReLU, tiếp theo là một hệ thống 1024 đơn vị được kết nối đầy đủ. So với ResNet50 hoặc Xception, là những mô hình hiện đại, đây có thể là một mô hình tương đối nhỏ.
6. Đào tạo người mẫu
Tôi đã sử dụng Tensorboard để đo độ chính xác và mất mát trong từng kỷ nguyên và cung cấp cho chúng tôi một màn hình hiển thị đáng yêu sau khi nhập dữ liệu và tạo mô hình. Chạy đoạn mã sau; tùy thuộc vào CPU / GPU của bạn, quá trình đào tạo sẽ mất vài phút.
Để sử dụng tensorboard, chỉ cần nhập lệnh sau trong dòng lệnh hoặc dấu nhắc lệnh trong thư mục hiện tại:
Bạn sẽ thấy rằng mất xác thực đang giảm và độ chính xác đang tăng lên khoảng 81%. Điều đó thật tuyệt!
Kiểm tra mô hình
Khi quá trình đào tạo kết thúc, mô hình và trọng lượng cuối cùng được lưu trong thư mục kết quả, cho phép chúng tôi đào tạo một lần và đưa ra dự đoán bất cứ khi nào chúng tôi chọn. Làm theo mã trong tệp python mới có tên test.py.
7. Nhập các tiện ích để thử nghiệm
8. Tạo một thư mục python
Tạo một từ điển Python dịch từng giá trị số nguyên sang nhãn thích hợp của tập dữ liệu:
9. Tải dữ liệu và mô hình thử nghiệm
Đoạn mã sau sẽ tải dữ liệu và mô hình thử nghiệm.
10. Đánh giá & Dự đoán
Đoạn mã sau sẽ đánh giá và đưa ra dự đoán về hình ảnh con ếch.
XUẤT KHẨU. Các kết quả
Mô hình dự đoán con ếch với độ chính xác 80.62%.
Kết luận
Được rồi, chúng ta đã hoàn thành bài học này. Mặc dù 80.62% là không tốt cho một chút CNN, nhưng tôi thực sự khuyên bạn nên thay đổi mô hình hoặc xem xét ResNet50, Xception hoặc các mô hình tiên tiến khác để có kết quả tốt hơn.
Bây giờ bạn đã xây dựng mạng nhận dạng hình ảnh đầu tiên của mình trong Keras, bạn nên thử nghiệm với mô hình để khám phá các thông số khác nhau ảnh hưởng như thế nào đến hiệu suất của nó.
Bình luận