Các thư viện và framework cho Deep Learning

Một phần của tài liệu Nghiên cứu và ứng dụng machine vision phát hiện sản phẩm lỗi trong công nghiệp (Trang 47 - 54)

4. Đề nghị cho bảo vệ hay không?

2.4.1 Các thư viện và framework cho Deep Learning

Scikit-Learn

Scikit-Learn được biết đến như một thư việc mã nguồn mở, hỗ trợ đầy đủ, toàn diện các thuật toán DM/ML, thống kê, phân tích dữ liệu, … Scikit bắt đầu từ dự án Google Summer of Code của David Cournapeau và được phát triển từ năm 2015. - Ưu điểm:

• Được phát triển cho mục đích chung, mã nguồn mở, có thể dùng cho mục đích thương mại, là công cụ tương đối phổ biến.

• Được tài trợ bởi nhiều tập đoàn lớn: INRIA, Telecom Paristech, Google, …

• Liên tục được cập nhật và hoàn thiện.

• Liên kết chặt chẽ với nhiều Python package. - Nhược điểm:

• Chỉ hỗ trợ API-oriented.

• Không hỗ trợ GPU.

TensorFlow

TensorfFlow là thư việc mã nguồn mở được xây dựng và phát triển bởi Google Brain. Thư việc sử dụng data flow graphs để tính toán, hỗ trợ API cho python, C++,… Ngoài ra TensorFlow còn có version TensorFlow Lite là phiên bản nhẹ hơn cho các thiết bị mobile hoặc thiết bị nhúng.TensorFlow còn được hỗ trợ cho môi trường Google và Amazon cloud.

- Ưu điểm:

• Thư viện đa dạng cho lập trình dataflow, nghiên cứu và phát triển DL

• Có thế tính toán trên CPU/GPU, mobile,..

• Là công cụ phổ biến nhất trong cộng đồng nghiên cứu DL.

• Xử lý hiệu quả cho tính toán mảng đa chiều. - Nhược điểm: API khó sử dụng để tạo DL model.

Keras

Keras là thư việc Python giống như TensorFlow, CNTK,.. là công cụ hỗ trợ DL. Có thể thực thi trên CPU và GPU. Được phát triển với các nguyên tắc thân thiện với người dùng.

- Ưu điểm:

• Mã nguồn mở, nhanh.

• Phổ biến, tài liệu tham khảo đầy đủ.

• Nhẹ nhàng và dễ sử dụng. - Nhược điểm:

• GPU không làm hết hiệu suất 100%

• Kém linh hoạt, không phù hợp cho nghiên cứu kiến trúc mới.

Microsoft CNTK

Microsoft Cognitive Toolkit (CNTK) là bộ công cụ DL xử lý khối data lớn, được phát triển bởi Microsoft Research. CTNK hỗ trợ các kiến trúc FFNN, CNN, RNN và Stochastic Gradient Descent (SGD).

- Ưu điểm:

• Mã nguồn mở, nhanh

• Hỗ trợ format ONNX (Open Neural Network Exchange) làm dễ dàng chuyển đổi model giữa CNTK, Caffe2, PyTorch, MXNet và công cụ DL khác.

• Hiệu suất cao (hơn TensorFlow, Theano) khi sử dụng nhiều máy cho RNN/LSTM.

- Nhược điểm: Hạn chế cho các thiết bị mobile.

Caffe

Là DL framework được phát triển bởi Yangqing Jia tại BAIR. DNN được định nghĩa trong Caffe theo layer-by-layer. Dữ liệu được đưa vào qua data layers. Tuy

layers mới phải được viết theo C++/Cuda nhưng có một vài layer được hỗ trợ trên Python.

- Ưu điểm:

• Thích hợp xử lý ảnh bằng CNN.

• Mạng được huấn luyện trước (Pre-trained network) có thể được tinh chỉnh (finetuning) trong Caffe Model Zoo.

• Dễ code với Python, Matlab interface. - Nhược điểm:

• Ít linh động.

• Model được định nghĩa trước phức tạp.

• Khó khắn khi định nghĩa mô hình model mới.

Caffe2

Caffe là framework DL nhẹ hơn so với Caffe, được phát triển bởi Yangqing Jia với Facebook. Caffe2 cung cấp các scripts Python để chuyển mode có sẵn từ Caffe sang Caffe2.

- Ưu điểm:

• Cross-platform, hỗ trợ các nền tảng di động.

• Linh động, nhẹ hơn Caffe.

• Hỗ trợ ONNX. - Nhược điểm:

• Khó khắn cho người mới bắt đầu.

• Không có dynamic graph computation.

Torch

Torch là framework hỗ trợ các tính toán khoa học, thuật toán ML dựa trên ngôn ngữ Lua. Torch được hỗ trợ phát triển bởi Facebook, Google, DeepMind, Twitter, …

- Ưu điểm:

• Linh hoạt, dễ đọc, tái sử dụng code.

• Tính môđun, tốc độ nhanh.

- Nhược điểm:

• Không còn được phát triển.

• Ít phổ biến.

PyTorch

PyTorch là thư viện DL Python dành cho GPU. Được phát triển bởi Facebook. PyTorch được viết bằng python, C và CUDA.

- Ưu điểm:

• Hỗ trợ Dynamic computational graph.

• Hỗ trợ tự động phân biệt cho NumPy và SciPy.

• Sử dụng ngôn ngữ Python cho phát triển.

• Hỗ trợ ONNX

- Nhược điểm: Không hỗ trợ trên mobile.

MXNet

Apache MXNet là DL framework hiệu quả và linh hoạt, được phát triển bởi Pedro Domingos tại University of Washington. API hỗ trợ nhiều ngôn ngữ như R, Python, Julia,..

-Ưu điểm:

• Linh hoạt, hỗ trợ nhiều tính năng cho tính toán trên GPU và cả CPU

• Hỗ trợ nhiều ngôn ngữ.

• Hỗ trợ ONNX

Hình 2.22 Biểu đồ so sánh các Deep Learning framework

Với sự đa dụng của mình thì Tensorflow hiện đang được người dùng đánh giá cao nhất. Đã có rất nhiều bài viết nói về framework này trên các trang nổi tiếng như Github, Medium, ArXiv,... và đa dạng các loại sách viết về nó.

Đối với những người mới bắt đầu với Deep Learning và đã có sẵn các kiến thức về Python, numpy, pandas, sklearn và matplotlib, thì Keras sẽ là một sự lựa chọn rất tốt [8]. Lý do vì nó có một lượng người sử dụng rất lớn, là điều kiện tiên quyết của nhiều nhà tuyển dụng, có rất nhiều bài viết hướng dẫn trên mạng và API dễ sử dụng.

Chương 3

CÁC PHƯƠNG PHÁP PHÁT HIỆN SẢN PHẨM LỖI TRONG MACHINE VISION

Chương này trình bày phương pháp để hệ thống Machine Vision nhận biết được sản phẩm lỗi. Đối tượng được áp dụng vào nghiên cứu trong đề tài này là lon với các khiếm khuyết gồm móp đầu, móp trên, móp giữa, móp dưới và móp một bên.

3.1 Xử lý ảnh 3.1.1 Tiền xử lý ánh Chuyển ảnh về ảnh xám:

Hình ảnh nhận được ban đầu là ảnh màu có ba kênh màu RGB. Khi muốn xử lý thông tin trên ảnh, sẽ dễ dàng hơn nếu ta chỉ xử lý dữ liệu trên một ma trận số thay vì nhiều ma trận số. Việc biến đổi ảnh màu về ảnh số (Grayscale converting) xuất hiện vì mục đích trên - biến đổi thông tin ảnh về một ma trận số hai chiều duy nhất.

Hình 3.1 Chuyển về ảnh xám

Chuyển đổi ảnh đen trắng

Ảnh đen trắng, như tên gọi, chỉ có hai màu đen với giá trị là 0 và trắng với giá trị 255. Bài toán đặt ra là làm thế nào để biến đổi ảnh xám (hay nói cách khác là một ma trận 2 chiều với giá trị mỗi ô trong khoảng 0-255) về thành một ma trận 2 chiều với giá trị mỗi ô là 0 hoặc 255.

Cách giải quyết là chọn một ngưỡng (threshold) để xác định đâu là điểm ảnh đen và đâu là điểm ảnh trắng. Nếu giá trị trên ảnh xám lớn hơn ngưỡng threshold, đấy là điểm ảnh trắng và ngược lại.

Gọi ảnh xám là Gray, ảnh đen trắng cần xác định là bw, tọa độ các pixel trên hình là (x,y), ta có

- bw(x,y) = 255 nếu Gray(x,y) > threshold - bw(x,y) = 0 nếu Gray(x,y) <= threshold

Giãn nở ảnh (Dilation)

Giãn nở là quá trình chập của những bức ảnh (hay vùng ảnh), chúng ta gọi chúng là A, với một số nhân, chúng ta gọi chúng là B. Nhân có thể có nhiều hình dạng và kích thước khác nhau, nhưng chỉ có một điểm gọi là điểm neo duy nhất. Thông thường, nhân là một khối hình vuông hay hình đĩa nhỏ với điểm neo nằm ở tâm. Nhân có thể được nhận định như là mẫu hay mặt nạ và nó có ý nghĩa trong thuật toán giãn nở là để định vị phần tử có giá trị lớn nhất. Khi nhân B được quét trên toàn ảnh, chúng ta tính toán được giá trị pixel lớn nhất của vùng ảnh được khớp bởi nhân B và thay thế pixel xác định bởi điểm neo bằng giá trí lớn nhất đã tính toán. Điều này khiến cho miền sáng của bức ảnh được mở rộng. Chính việc mở rộng này là gốc của thuật ngữ “quá trình giãn nở”

Hình 3.2 Quá trình tiền xử lý: a) Ảnh gốc, b) Ảnh xám, c) Ảnh nhị phân, d) Giãn ảnh nhị phân

3.1.2 Nhận dạng ảnh

Đối với bài toán nhận dạng lon lỗi trong xử lý ảnh, ta nhận dạng sản phẩm lỗi hay không dựa vào đặc điểm riêng biệt đó là hai cạnh bên của lon trong bức ảnh. Khi có được đặc điểm nhận dạng, ta tiến hành lấy một đường thẳng ngay sát hai mép bên của lon. Nếu một trong hai bên có tổng số pixel có giá trị 0 lớn hơn một con số cụ thể thì ta có thể kết luận đó là một lon lỗi, ngược lại thì vẫn chưa thể nào chắc chắn được rằng đó có phải là một lon bình thường hay không vì ta chưa xét đến trường hợp chỗ bị móp nằm đối diện với camera khiến cho hai bên mép lon nhìn vẫn bình thường. Để có thể nhận biết được các lỗi như vậy, ta cần đến một phương pháp rất hiệu quả khác đó là mạng nơ ron tích chập (CNN).

3.2 Mạng nơron tích chập 3.2.1 Giới thiệu

Mạng thần kinh tích chập (CNN) là một thuật toán học sâu có thể phân biệt cái này với cái khác. Việc xử lý trước yêu cầu trong CNN thấp hơn nhiều so với các thuật toán phân loại khác. Mặc dù trong các phương thức nguyên thủy, bộ lọc được thiết kế bằng tay, với đủ đào tạo, CNN có khả năng tìm hiểu các bộ lọc hoặc đặc điểm này. Điểm đột phá của CNN là các tính năng được học tự động từ các ví dụ đào tạo [4].

CNN được sử dụng để đánh giá đầu vào thông qua các kết quả. Ảnh đầu vào được nhân tích chập với một bộ lọc. Sự tích chập này giúp mô hình trích xuất ra các đặc trưng như cạnh và các tính năng cấp thấp hơn ở các lớp đầu tiền và các tính năng phức tạp hơn ở các lớp sâu hơn trong mạng. CNN được sử dụng kết hợp với các lớp gộp và chúng thường có các lớp được kết nối đầy đủ ở cuối, như bạn có thể thấy trong hình 3.3.

Một phần của tài liệu Nghiên cứu và ứng dụng machine vision phát hiện sản phẩm lỗi trong công nghiệp (Trang 47 - 54)

Tải bản đầy đủ (PDF)

(104 trang)