- Sự tiến bộ trong kỹ thuật xử lý hình ảnh và tự động hóa trong lĩnh vực công nghiệp thúc đẩy việc sử dụng nó trong hầu hết các lĩnh vực. Trong đó, phân loại trái cây dựa trên hình ảnh của nó vẫn còn là một thách thức. Việc phân loại trái cây có thể được sử dụng để thực hiện quá trình săp xếp và phân loại trái cây giúp quản lý, bảo quản những loại trái cây một cách tốt nhất có thể (những phương pháp bảo quản khác nhau dựa trên từng loại trái cây). Phương pháp truyền thống để phân loại trái cây là phân loại một cách thủ công, tốn thời gian và luôn phải có sự hiện diện của con người.
- Sử dụng Machine Learning để xây dựng model phân loại trái cây dựa trên hình ảnh. Từ đó, có thể giúp quá trình sắp xếp và phân loại trái cây trở thành một quá trình tự động gần như hoàn toàn.
- Input: Ảnh của một loại trái cây trên nền đơn giản (1 màu).
- Output: Tên của loại trái cây đó.
Có 10 loại trái cây bao gồm 2500 ảnh. Với 10 loại trái cây khác nhau có 10 thư mục trong fruits_data tương ứng với chúng, Vd: cachua lưu trữ ảnh của trái cà chua. Mỗi thư mục chứa 250 ảnh của loại trái cây ở mục đó.
Bộ dữ liệu được sử dụng trong bài này bao gồm 2500 ảnh. Được thu thập bằng cách ra siêu thị Big C sử dụng smartphone chụp ảnh lần lượt từng trái của mỗi loại, trong khoảng thời gian 4 tiếng - một số loại trái cây được mua về phòng riêng để chụp.
- Tổng số hình ảnh: 2500 ảnh
- Số loại trái cây: 10 loại
- Ảnh của mỗi loại: 250 ảnh
- Size ảnh: Bộ data sẽ để nguyên size gốc khi chụp bằng điện thoại nhưng khi sử dụng sẽ chuyển về size 200x200 pixel
- Định dạng tên tệp:
<tên quả>_<chỉ số>.jpg- Ví dụ: cachua_1.jpg - Tỉ lệ train/test size: 75/25
- Chúng mình sử dụng 2 phương pháp tách biệt để xử lí data và training model đó là dựa trên màu sắc và cạnh. Sau đó kết hợp lại với nhau để train model.
- Resize ảnh về size 200x200.
- Đưa bức ảnh về 2 màu sử dụng thuật toán K-means.
- Loại bỏ màu sáng hơn của bức ảnh (Màu sáng hơn thường là màu nền, nên loại bỏ).
- Chia nhỏ bức ảnh thành 25 section (40x40).
- Tính trung bình và độ lệch chuẩn cho:
- Hướng thứ nhất: Từng channel màu trong 3 channel màu RGB
- Hướng thứ hai: Cho từng section
- Resize ảnh về size 200x200.
- Hướng thứ nhất:
- Đưa bức ảnh về 2 màu sử dụng thuật toán K-means.
- Sử dụng thuật toán Canny để tìm cạnh.
- Chia nhỏ bức ảnh thành 25 section (40x40).
- Tính trung bình và độ lệch chuẩn cho từng section.
- Hướng thứ hai:
- Sử dụng thuật toán Canny để tìm cạnh.
- Chia nhỏ bức ảnh thành 25 section (40x40).
- Tính trung bình và độ lệch chuẩn cho từng section.
- Đây là phương pháp xây dựng một tập hợp rất nhiều cây quyết định và sử dụng phương pháp voting để đưa ra quyết định về biến target cần được dự báo.
- Tìm hiểu thêm về Random Forest Classifier
- Áp dụng thuật toán dựa trên libsvm (thư viện svm). Thời gian tính toán ít nhất bằng bậc 2 của số lượng samples và có thể không thể áp dụng với số lượng samples vượt quá 10000
- Tìm hiểu thêm về Support Vector Classification
-
Thực hiện các model machine learning đối với 4 hướng tiếp cận:
- Sử dụng trung bình và độ lệch chuẩn của các giá trị pixels cho từng lớp RGB của ảnh đã cluster:
- Sử dụng trung bình và độ lệch chuẩn của các giá trị pixels cho toàn ảnh đã được cluster về 2 màu với các section 40 x 40 pixels:
- Sử dụng trung bình và độ lệch chuẩn của các giá trị pixels cho từng section 40 x 40 với ảnh gốc được xử lý về canny edge:
- Sử dụng trung bình và độ lệch chuẩn của các giá trị pixels cho từng section 40 x 40 với ảnh đã được cluster chỉ còn 2 màu và xử lý về canny edge:
- Sau khi đã có kết quả đánh giá sơ bộ, nhóm quyết định sử dụng kết hợp 2 trên 4 phương pháp ở trên:
- Xử lý màu: Hướng thứ nhất
- Xứ lý cạnh: Hướng thứ nhất
- Kết quả:
- Kết quả trên bộ valid data:
- fruits_data: folfer chứa data.
- model: folder chứa các model đã train.
- output_input: data đã được chia thủ công và đọc thành file csv.
- valid data: Bộ data thực tế để kiểm tra model.
- Extract_Color.ipynb: Trích xuất đặc trưng màu.
- Extract_Edge.ipynb: Trích xuất đặc trưng cạnh.
- eval_cluster_color.ipynb: Đánh giá model với 2 hướng xử lí màu.
- eval_edgecluster_model.ipynb: Đánh giá model với 2 hướng xử lí cạnh.
- Final_model_FruitClassification.ipynb: Model hoàn chỉnh khi kết hợp 2 phương pháp cạnh và màu.
- Fruits_classify_app.ipynb: App cho người dùng test model.

























