Giới thiệu thư viện OpenCV (Open Source Computer Vision)

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 39)

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

2.2.5 Giới thiệu thư viện OpenCV (Open Source Computer Vision)

OpenCV (Open Source Computer Vision) là một thư viện mã nguồn mở về thị giác máy với hơn 500 hàm và hơn 2500 các thuật toán đã được tối ưu về xử lý ảnh, và các vấn đề liên quan tới thị giác máy. OpenCV được thiết kế một cách tối ưu, sử dụng tối đa sức mạnh của các dòng chip đa lõi… để thực hiện các phép tính toán trong thời gian thực, nghĩa là tốc độ đáp ứng của nó có thể đủ nhanh cho các ứng dụng thông thường. OpenCV là thư viện được thiết kế để chạy trên nhiều nền tảng

khác nhau (cross-platform), nghĩa là nó có thể chạy trên hệ điều hành Window, Linux, Mac, iOS … [9]. Việc sử dụng thư viện OpenCV tuân theo các quy định về sử dụng phần mềm mã nguồn mở BSD do đó bạn có thể sử dụng thư viện này một cách miễn phí cho cả mục đích phi thương mại lẫn thương mại.

Dự án về OpenCV được khởi động từ những năm 1999, đến năm 2000 nó được giới thiệu trong một hội nghị của IEEE về các vấn đề trong thị giác máy và nhận dạng, tuy nhiên bản OpenCV 1.0 mãi tới tận năm 2006 mới chính thức được công bố và năm 2008 bản 1.1 (pre-release) mới được ra đời. Tháng 10 năm 2009, bản OpenCV thế hệ thứ hai ra đời (thường gọi là phiên bản 2.x), phiên bản này có giao diện của C++ (khác với phiên bản trước có giao diện của C) và có khá nhiều điểm khác biệt so với phiên bản thứ nhất.

Thư viện OpenCV ban đầu được sự hỗ trợ từ Intel, sau đó được hỗ trợ bởi Willow Garage, một phòng thí nghiệm chuyên nghiên cứu về công nghệ robot. Cho đến nay, OpenCV vẫn là thư viện mở, được phát triển bởi nguồn quỹ không lợi nhuận (none -profit foundation) và được sự hưởng ứng rất lớn của cộng đồng [9].

Hình 2.17 Đoạn code hiển thị ảnh đơn giản trong OpenCV

OpenCV có rất nhiều chức năng. Sau đây là những tóm tắt cơ bản về hệ thống, các chức năng, hàm trong OpenCV:

- Image và Video I/O: Những giao diện này sẽ giúp đọc được dữ liệu ảnh từ file hoặc trực tiếp từ video. Cũng có thể tạo các file ảnh hoặc video với giao diện này.

- Thị giác máy và các thuật toán xử lý ảnh (General computer – vision and image processing algorithms (mid – and low-level APIs)): Sử dụng những giao diện này, có

thể thực hành với rất nhiều chuẩn thị giác máy tính mà không cần phải biết mã nguồn của chúng.

- Module thị giác máy ở cấp độ cao: OpenCV gồm một vài tác dụng ở cấp độ cao. Thêm vào nhận dạng mặt, dò tìm, theo dõi. Nó bao gồm luồng thị giác (sử dụng camera di động để xác định cấu trúc 3D), kích cỡ camera và âm thanh nổi.

- AI và Machine learning: Các ứng dụng của thị giác máy thường yêu cầu máy phải học (machine learning) hoặc các hình thức trí tuệ nhân tạo khác. Một vài trong số chúng có sẵn trong OpenCV có chức năng lấy mẫu ảnh và thực hiện các phép biến đổi .Nó thường rất tốt cho quá trình xử lý một nhóm phần tử ảnh như là đơn vị. OpenCV bao gồm lấy tách ra, lấy ngẫu nhiên, phục chế, xoay ảnh, làm cong ảnh (warping), thay đổi hiệu ứng của ảnh.

- Cách thức tạo và phân tích ảnh nhị phân: Ảnh nhị phân thường xuyên được sử dụng trong các hệ thống kiểm tra có khuyết điểm hình dạng hoặc các bộ phận quan trọng. Sự biểu diễn ảnh cũng rất thuận tiện khi chúng ta biết rõ vật thể cần xác định. - Cách thức cho tính toán thông tin 3D (method for computin 3D information): Những hàm này rất có ích khi cần sắp xếp và xác định với một khối lập thể (with a stereo rig) hoặc với không gian nhìn phức tạp (multiple views) từ một camera riêng. - Các phép toán cho xử lý ảnh, thị giác máy và biểu diễn ảnh (image interpretation): OpenCV sử dụng các phép toán phổ biến như: đại số học, thống kê và hình học. - Đồ họa: Những giao diện này giúp bạn viết chữ và vẽ trên hình ảnh. Thêm vào đó những chức năng này sử dụng nhiều trong ghi nhãn và đánh dấu.

- Phương thức GUI: OpenCV bao gồm cửa sổ giao diện của chính bản thân nó. Trong khi đó những giao diện này được so sánh giới hạn với khả năng có thể thực hiện trong mỗi môi trường [9]. Chúng cung cấp những môi trường API đa phương tiện và đơn giản để hiển thị hình ảnh, cho phép người dùng nhập dữ liệu thông qua chuột, bàn phím và điều khiển quá trình.

- Cấu trúc dữ liệu và giải thuật: Với những giao diện này bạn có thể giữ lại, tìm kiếm và lưu các danh mục điều khiển, các tuyển tập (cũng như các tập hợp lệnh được gọi), đồ họa và sơ đồ nhánh một cách hiệu quả.

2.3 Tổng quan về trí tuệ nhân tạo 2.3.1 Trí tuệ nhân tạo

Trí thông minh nhân tạo (AI) là cách chế tạo máy tính, robot điều khiển máy tính hoặc phần mềm suy nghĩ thông minh, theo cách tương tự như con người tư duy. AI được thực hiện bằng việc nghiên cứu não bộ của con người về cách họ suy nghĩ, học hỏi, quyết định và làm việc trong khi cố gắng giải quyết vấn đề, sau đó sử dụng kết quả của nghiên cứu này làm cơ sở phát triển phần mềm và hệ thống thông minh [1]. Trí tuệ nhân tạo là một ngành khoa học và công nghệ dựa trên các ngành như Khoa học máy tính, Sinh học, Tâm lý học, Ngôn ngữ học, Toán học và Kỹ thuật. Một lực đẩy lớn của AI là phát triển các chức năng máy tính liên quan đến trí thông minh của con người, như lý luận, học tập và giải quyết vấn đề.

Để giải thích thêm về các mục tiêu của Trí tuệ nhân tạo, các nhà nghiên cứu đã mở rộng mục tiêu chính của họ sang sáu mục tiêu chính sau:

- Lập kế hoạch, và tối ưu hóa: Cho phép máy tính đặt mục tiêu và đạt được chúng. Họ cần một cách để hình dung về tương lai – đại diện cho tình trạng của thế giới và có thể đưa ra dự đoán về cách hành động của họ sẽ thay đổi nó và có thể đưa ra lựa chọn tối đa hóa tiện ích của các lựa chọn có sẵn [2].

- Ngôn ngữ xử lý tự nhiên: Cung cấp cho máy khả năng đọc và hiểu ngôn ngữ của con người. Một hệ thống xử lý ngôn ngữ tự nhiên đủ mạnh sẽ cho phép giao diện người dùng ngôn ngữ tự nhiên và thu nhận kiến thức trực tiếp từ các nguồn do con người viết, chẳng hạn như các văn bản tin tức [2].

- Xử lý lời nói: là nghiên cứu về tín hiệu lời nói và phương pháp xử lý tín hiệu. Các tín hiệu thường được xử lý trong biểu diễn kỹ thuật số, vì vậy xử lý giọng nói có thể được coi là trường hợp đặc biệt của xử lý tín hiệu số, được áp dụng cho tín hiệu giọng nói [2]. Các khía cạnh của xử lý lời nói bao gồm thu nhận, thao tác, lưu trữ, chuyển và xuất tín hiệu giọng nói. Đầu vào được gọi là nhận dạng giọng nói và đầu ra được gọi là đồng bộ giọng nói.

- Machine Learning: Một khái niệm cơ bản về nghiên cứu AI kể từ khi bắt đầu lĩnh vực, là nghiên cứu về các thuật toán máy tính cải thiện tự động thông qua kinh nghiệm [1].

- Robotics: Vũ khí robot tiên tiến và các robot công nghiệp khác, được sử dụng rộng rãi trong các nhà máy hiện đại, có thể học hỏi kinh nghiệm làm thế nào để di chuyển hiệu quả mặc dù có sự ma sát và trượt bánh răng.

- Vision: Một lĩnh vực nghiên cứu tìm cách phát triển các kỹ thuật để giúp máy tính nhìn thấy và hiểu nội dung của các hình ảnh kỹ thuật số như ảnh và video.

- Expert systems: là một hệ thống máy tính mô phỏng khả năng ra quyết định của một chuyên gia về con người. Các hệ chuyên gia được thiết kế để giải quyết các vấn đề phức tạp bằng cách suy luận thông qua các nhóm kiến thức, được thể hiện chủ yếu như thể là quy tắc chứ không phải thông qua mã thủ tục thông thường [2].

2.3.2 Machine Learning

Machine Learning (ML) là một tập hợp con của Trí tuệ nhân tạo. ML là nghiên cứu khoa học về các thuật toán và mô hình thống kê mà các hệ thống máy tính sử dụng để thực hiện hiệu quả một nhiệm vụ cụ thể mà không sử dụng các hướng dẫn rõ ràng, thay vào đó dựa vào các mẫu và suy luận [1]. Các thuật toán học máy xây dựng một mô hình toán học dựa trên dữ liệu mẫu, được gọi là “dữ liệu huấn luyện”, để đưa ra dự đoán hoặc quyết định mà không được lập trình rõ ràng để thực hiện nhiệm vụ. Các thuật toán học máy được sử dụng trong rất nhiều ứng dụng, chẳng hạn như lọc email và thị giác máy tính, nơi không thể phát triển một thuật toán hướng dẫn cụ thể để thực hiện tác vụ [7]. Machine Learning liên quan chặt chẽ đến thống kê tính toán, tập trung vào việc đưa ra dự đoán bằng máy tính. Nghiên cứu về tối ưu hóa toán học cung cấp các phương pháp, lý thuyết và lĩnh vực ứng dụng cho lĩnh vực học máy.

Mỗi thuật toán học máy có ba thành phần:

Representation: Cách trình bày kiến thức. Các ví dụ bao gồm cây quyết định, bộ quy tắc, trường hợp, mô hình đồ họa, mạng nơron, máy vectơ hỗ trợ, quần thể mô hình và các loại khác.

Evaluation: Cách để đánh giá các chương trình (giả thuyết). Các ví dụ bao gồm độ chính xác, dự đoán và thu hồi, lỗi bình phương, khả năng, xác suất sau, chi phí, tỷ lệ ký quỹ, phân kỳ k-L entropy và các thứ khác.

Optimization: Cách các chương trình được tạo ra được gọi là quá trình tìm kiếm. Ví dụ, tối ưu hóa tổ hợp, tối ưu hóa lồi, tối ưu hóa bị ràng buộc.

Có 4 loại máy học cơ bản:

Học giám sát: Thuật toán học tập sẽ thuộc danh mục này nếu đầu ra mong muốn cho mạng cũng được cung cấp với đầu vào trong khi đào tạo mạng. Bằng cách cung cấp cho mạng thần kinh cả cặp đầu vào và đầu ra, có thể tính toán một lỗi dựa trên đầu ra đích và đầu ra thực tế của nó. Sau đó, nó có thể sử dụng lỗi đó để sửa lỗi cho mạng bằng cách cập nhật trọng số của nó [2].

Học không giám sát: Trong mô hình này, mạng nơ-ron chỉ được cung cấp một bộ đầu vào và trách nhiệm của mạng nơ-ron là tìm một số kiểu mẫu trong các đầu vào được cung cấp mà không cần bất kỳ sự trợ giúp bên ngoài nào. Kiểu mô hình học tập này thường được sử dụng trong khai thác dữ liệu và cũng được sử dụng bởi nhiều thuật toán đề xuất do khả năng dự đoán sở thích của người dùng dựa trên sở thích của những người dùng tương tự khác mà họ đã nhóm lại với nhau [1].

Học bán giám sát: Dữ liệu đào tạo bao gồm một vài đầu ra mong muốn [7]. Học tăng cường: Học tăng cường tương tự như học có giám sát ở chỗ một số phản hồi được đưa ra, tuy nhiên thay vì cung cấp đầu ra mục tiêu, phần thưởng được trao dựa trên mức độ hệ thống hoạt động tốt. Mục đích của học tập củng cố là để tối đa hóa phần thưởng mà hệ thống nhận được thông qua thử và sai. Mô hình này liên quan mạnh mẽ đến cách học tập trong tự nhiên, ví dụ, một con vật có thể nhớ những hành động mà nó đã thực hiện trước đó giúp nó tìm thức ăn (phần thưởng) [2].

Học tập có giám sát là sự trưởng thành nhất, được nghiên cứu nhiều nhất và là kiểu học được sử dụng bởi hầu hết các thuật toán học máy. Học với sự giám sát dễ dàng hơn nhiều so với học mà không có sự giám sát. Học quy nạp là nơi chúng ta được đưa ra các ví dụ về hàm dưới dạng dữ liệu (x) và đầu ra của hàm (f (x)). Mục tiêu của học quy nạp là học hàm cho dữ liệu mới (x) [1].

Classification: khi hàm được học rời rạc. Hồi quy: Khi chức năng được học là liên tục.

Ước tính xác suất: Khi đầu ra của hàm là một xác suất.

2.4 Deep Learning

Deep learning là một kỹ thuật học máy dạy cho máy tính làm những gì tự nhiên đến với con người: học bằng ví dụ. Học sâu là một công nghệ quan trọng đằng sau những chiếc xe không người lái, cho phép họ nhận ra biển báo dừng hoặc phân biệt người đi bộ với cột đèn [5]. Nó là chìa khóa để điều khiển giọng nói trong các thiết bị tiêu dùng như điện thoại, máy tính bảng, Tivi và loa rảnh tay. Học sâu đang nhận được nhiều sự chú ý gần đây và vì lý do tốt. Nó đạt được kết quả mà trước đây không thể có được.

Hình 2.19 Mạng lưới thần kinh, được tổ chức trong các lớp bao gồm một tập hợp các nút liên kết với nhau. Mạng có thể có hàng chục hoặc hàng trăm lớp ẩn

Trong học sâu, một mô hình máy tính học cách thực hiện các nhiệm vụ phân loại trực tiếp từ hình ảnh, văn bản hoặc âm thanh. Các mô hình học tập sâu có thể đạt được độ chính xác hiện đại, đôi khi vượt quá hiệu suất của con người. Các mô hình được đào tạo bằng cách sử dụng một tập hợp lớn dữ liệu có nhãn và kiến trúc mạng thần kinh có chứa nhiều lớp. Hầu hết các phương pháp học sâu sử dụng kiến trúc mạng thần kinh, đó là lý do tại sao các mô hình học sâu thường được gọi là mạng thần kinh sâu [2]. Thuật ngữ Deep Learning thường thường đề cập đến số lượng các lớp ẩn trong mạng lưới thần kinh. Mạng thần kinh nhân tạo truyền thống chỉ chứa 2- 3 lớp ẩn, trong khi mạng học sâu có thể có tới 150.

Mạng nơron là một khái niệm cốt lõi của Deep Learning, có thể được coi là tương tự như một chức năng trong ngôn ngữ lập trình. Đơn vị đơn giản tốt nhất của Mạng thần kinh, Perceptron, nhận các đầu vào (như tham số của hàm), chạy qua quy trình (các bước của hàm) và cuối cùng cung cấp phản hồi (đầu ra của hàm) [1].

Hình 2.20 Mạng thần kinh đơn giản hoặc Perceptron.

Mạng nơ-ron tạo ra các giải pháp có thể phân loại dữ liệu dựa trên các yếu tố ảnh hưởng đến việc phân loại. Ngoài ra, Perceptron chỉ là một mã hóa các giải pháp theo định dạng đồ họa – được mô tả tương tự như các tế bào thần kinh trong não.

Hình 2.21 So sánh hiệu suất giữa Deep Learning với các thuật toán học theo thứ tự Ưu điểm của deep learning và Machine Vision trong Visual Inspection:

- Nhận diện tốt hơn.

- Machine Vision có độ phân giải quang học rất cao phụ thuộc vào công nghệ và thiết bị được sử dụng để thu nhận ảnh.

- So với thị giác của con người, thị giác máy có phổ nhận thức trực quan rộng hơn với khả năng thực hiện các quan sát ở vùng cực tím, Xray và hồng ngoại của quang phổ.

- Nhanh hơn - các quan sát cũng như kết luận được thực hiện cực kì nhanh và kết quả tính toán cực kì chính xác. Hệ thống có tất cả sức mạnh liên quan đến tốc xử lý cao hơn cùng với bộ nhớ vô hạn.

- Đáng tin cậy - Hệ thống không thiên vị và lập trình theo yêu cầu, làm theo hướng dẫn mà không có câu hỏi.

- Chính xác - Một hệ thống tự động có khả năng đo kích thước tuyệt đối theo các tiêu chuẩn.

- Môi trường độc lập - Một hệ thống như vậy có thể được triển khai trong các điều kiện rủi ro hoặc môi trường nguy hiểm, nơi có thể không an toàn cho con người.

2.4.1 Các thư viện và framework cho Deep Learning Scikit-Learn 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

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 39)

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

(104 trang)