Camera thông minh, thị giác máy tính, thị giác máy... dù bạn gọi nó là gì, các ứng dụng thị giác đang được tích hợp vào nhiều sản phẩm hơn. Ứng dụng cổ điển mà hầu hết các nhà thiết kế PCB quen thuộc là trong sản xuất, và gần đây hơn là nhận diện khuôn mặt trên điện thoại thông minh của bạn. Những nhà thiết kế am hiểu, thường xuyên làm việc với thiết kế và hệ thống thị giác máy đang chứng kiến nhiều ứng dụng độc đáo trong y tế, ô tô, robot, hàng không vũ trụ, an ninh, và chắc chắn là trong nhiều lĩnh vực khác.
Một điều thú vị xảy ra trong ngành công nghiệp điện tử là sự dễ dàng mà công nghệ mới có thể được tích hợp vào các hệ thống mới khi nó tiếp tục lan rộng. Thị giác máy chắc chắn đã vượt qua ngưỡng để đến mức mà tiêu chuẩn hóa, hỗ trợ nhà phát triển, và một lượng lớn linh kiện sẵn có cho các nhà thiết kế muốn đổi mới trong lĩnh vực này. Ngày nay, có một số nền tảng phần cứng phổ biến là lựa chọn tốt cho những nhà thiết kế mới. Nếu bạn đã vượt qua giai đoạn nguyên mẫu và bạn đang chuẩn bị phần cứng sẵn sàng cho sản xuất, các bộ xử lý mới đang cho phép hệ thống tích hợp cao hơn sử dụng công nghệ tiên tiến như học máy.
Trong hướng dẫn này, chúng tôi sẽ khám phá một số linh kiện cần thiết để xây dựng hệ thống thị giác máy và các nguồn lực có sẵn cho các nhà phát triển nhúng. Hệ thống thị giác máy có một yếu tố quan trọng về kỹ thuật phần cứng và cơ khí vì chúng ta đang đề cập đến camera và quang học. Việc phát triển các hệ thống này rất phong phú, với các nhiệm vụ trải dài qua nhiều lĩnh vực. May mắn thay, các nhà sản xuất linh kiện và các nhà phát triển mã nguồn mở có quyền truy cập vào nhiều nguồn lực để giúp đẩy nhanh thiết kế phần cứng và phát triển hệ thống, và các nhà phát triển quan tâm được khuyến khích xem một số ví dụ mà chúng tôi sẽ trình bày ở đây để bắt đầu.
Về mặt điện tử, hệ thống thị giác máy có một kiến trúc khá chung chung so với các hệ thống khác. Sơ đồ khối dưới đây minh họa một kiến trúc cấp cao chung chung được triển khai trong hệ thống thị giác máy. Các hệ thống này có thể có các mức độ tích hợp và hình dạng khác nhau, với một số khối được hiển thị dưới đây có thể được tích hợp vào một bộ xử lý mạnh mẽ hơn.
Kiến trúc cấp cao của hệ thống thị giác máy
Không có hệ thống thị giác máy nào có thể được coi là tiêu biểu để làm mẫu tham khảo cho các thiết kế khác vì thị giác máy là một khả năng, không phải là một sản phẩm hay một loại thiết kế cụ thể. Hệ thống thị giác máy có các đặc điểm chung như được minh họa trong sơ đồ khối trên, nhưng chúng được triển khai với các bộ linh kiện khác nhau. Thay vì liệt kê danh sách các linh kiện để hỗ trợ hệ thống thị giác máy, chúng ta cần bắt đầu từ cấp độ bộ xử lý để xem các thuật toán xử lý hình ảnh có thể được triển khai hiệu quả như thế nào.
MCUs hoặc SoC dựa trên MCU luôn được ưa chuộng, ngay cả đối với các hệ thống triển khai khả năng nhìn máy. MCU với các giao diện số tiêu chuẩn có thể kết nối với các ASIC chuyên biệt hơn cho việc xử lý hình ảnh, trong khi FPGA có thể đủ lớn để triển khai việc thu thập hình ảnh trực tiếp, các chức năng DSP và các xử lý ở cấp độ hệ thống khác. GPU có thể cung cấp một bộ xử lý hình ảnh bên ngoài chuyên dụng, cung cấp dữ liệu trở lại cho bộ điều khiển chủ. Về mức độ tiên tiến, kiến trúc MPU + FPGA hoặc MPU + GPU được ưa chuộng cho máy nhìn gần thời gian thực. Chúng cũng được ưa chuộng cho việc xử lý hình ảnh độ phân giải cao hơn vì FPGA/GPU có thể thực hiện song song hóa, giảm thời gian xử lý khi cần xử lý hình ảnh độ phân giải cao/độ sâu màu cao. Đây là lợi thế lớn của FPGA vì logic linh hoạt, tuy nhiên việc quản lý và phát triển thuật toán cho xử lý nâng cao khó khăn hơn nếu không có kinh nghiệm trước. Tất cả điều này không có nghĩa là MCU và MPU không thể được sử dụng làm bộ điều khiển chủ trong các ứng dụng nhìn máy. Ví dụ, điện thoại và máy tính của bạn không sử dụng chúng và chúng có thể thực hiện một số tác vụ xử lý hình ảnh đơn giản từ video tốc độ khung hình thấp và hình ảnh tĩnh. Để công bằng, CPU/SoC trong những thiết bị đó có khả năng tính toán nhiều hơn nhiều so với MPU cao cấp. MCU có thể được sử dụng cho việc xử lý hình ảnh độ phân giải thấp, tốc độ khung hình thấp, độ sâu màu thấp hoặc xử lý hình ảnh đen trắng, và khi bạn thêm nhiều khả năng tính toán hơn, bạn có thể xử lý hình ảnh chi tiết hơn. MPU là lựa chọn tốt hơn trong sản xuất vì bạn có thể cần truy cập vào bộ nhớ tốc độ cao bên ngoài, điều này có nghĩa là bạn sẽ cần giao diện RAM DDR và có thể là PCIe cho một số thiết bị ngoại vi, điều mà bạn thường không tìm thấy trên MCU chậm hơn. Ứng dụng Cụ thể vs. Tổng quát Nếu bạn muốn triển khai các thuật toán nhận dạng và phân đoạn hình ảnh nâng cao hơn trong hệ thống của mình, thì bạn có thể chọn SOM, COM, hoặc máy tính đơn bảng làm bộ điều khiển chính cho ứng dụng nhìn máy của mình. Nếu một bộ xử lý có đủ bộ nhớ trên chip và RAM bên ngoài, nó thường có thể thực hiện hầu hết các tác vụ thu thập và xử lý trong khi cũng chạy một ứng dụng để điều khiển phần còn lại của hệ thống của bạn. Các kiến trúc này thường được sử dụng cho các tác vụ phân đoạn hình ảnh dựa trên ngưỡng và phát hiện đối tượng trong các ứng dụng cụ thể từ dữ liệu video tốc độ khung hình thấp đến trung bình. Thách thức trong Thiết kế Nhìn Máy Giống như nhiều thiết kế khác về cơ bản hoạt động với tín hiệu tương tự cấp thấp, hệ thống và thiết kế nhìn máy có bộ thách thức điện tử riêng cần được xem xét. Một số giải pháp nằm ở cấp độ xử lý hình ảnh, số khác ở cấp độ hệ thống và liên quan đến việc chọn lựa linh kiện. Dưới đây là một số thách thức lớn mà các nhà thiết kế cần xem xét trong thiết kế nhìn máy:
Quản lý nhiệt: Các camera độ phân giải cao gắn trên bảng mạch trong các hệ thống nhỏ gọn có thể nhận nhiều nhiệt khi hoạt động, có thể yêu cầu tản nhiệt hoặc luồng không khí qua vỏ để giữ mát. Các hệ thống với bộ xử lý nhỏ hơn và bảng mạch lớn hơn thường có thể tự giữ mát, nhưng các bảng mạch nhỏ hơn với bộ xử lý nhanh hơn có thể yêu cầu một vật liệu giao diện được gắn vào vỏ để loại bỏ nhiệt.
EMI/EMC: Vì các hệ thống thị giác máy thường là hệ thống tín hiệu hỗn hợp, chúng yêu cầu bố trí phù hợp để ngăn chặn sự can thiệp giữa các thành phần số và đầu ra từ cảm biến CMOS hoặc CCD. CMOS có thể là lựa chọn tốt hơn vì việc chuyển đổi dữ liệu được thực hiện ở cấp độ chip. Để đảm bảo khôi phục hình ảnh chính xác trong các hệ thống nhỏ gọn với xử lý nhanh, hãy chắc chắn bạn thực hiện một số phương pháp hay nhất cho việc kiểm soát EMI.
Tính toàn vẹn của nguồn: Các hệ thống thị giác và hệ thống HMI có thể gặp phải vấn đề về tính toàn vẹn nguồn nếu bố trí không được xây dựng đúng cách, ngay cả khi thiết kế không hoạt động với các thành phần hoặc giao thức tốc độ cao. Điều này có vẻ như là một vấn đề có thể được lọc đi, nhưng thực tế không phải vậy. Thay vào đó, giải pháp có thể đơn giản như đảm bảo một mặt đất được đặt để định tuyến tất cả các tín hiệu số đến bảng mạch chủ.
Lắp đặt quang học: Các hệ thống thị giác yêu cầu quang học để xác định mặt phẳng đối tượng và mặt phẳng hình ảnh, và để tạo ra hình ảnh rõ ràng trên cảm biến hình ảnh để có thể thu thập dữ liệu. Các hệ thống thị giác máy hiện đại cần một giá đỡ ổn định với độ trễ thấp và có thể là tự động lấy nét với kiểm soát động cơ tích hợp. Đây là một thách thức thiết kế cơ khí cũng như thiết kế điện tử, nơi mà thách thức sau liên quan đến việc tiêu thụ điện năng trong một mạch kiểm soát động cơ và thời gian.
Rõ ràng, chúng tôi không thể hiển thị mọi thành phần có thể trong bài viết này vì nó sẽ quá dài. Những gì chúng tôi có thể làm là cung cấp cho bạn một danh sách tốt các thành phần bạn có thể sử dụng để bắt đầu xây dựng các phần khác nhau của hệ thống của bạn. Trong danh sách dưới đây, tôi đã bao gồm một số thành phần ví dụ từ mỗi phần của một hệ thống mới mà bạn có thể sử dụng để bắt đầu:
MCU như STM32 và MSP430 là một lựa chọn tuyệt vời để vận hành hệ thống nhìn máy nhẹ và thực hiện một số nhiệm vụ suy luận AI đơn giản.
Đối với những thứ có khả năng tính toán cao hơn, nền tảng Zynq FPGA là một lựa chọn tuyệt vời cho hệ thống nhìn máy. Xilinx cũng cung cấp nhiều hỗ trợ cho nhà phát triển với các hệ thống nhìn máy được xây dựng trên Zynq.
Cảm biến hình ảnh CMOS và cảm biến CCD có thể là đơn sắc hoặc màu, và chúng có sẵn trong một loạt độ phân giải. Một thứ như MT9P031I12STC-DR1 từ ON Semiconductor là một ví dụ tốt về cảm biến CMOS màu cho các ứng dụng nhìn máy độ phân giải cao.
Để phát triển một ứng dụng cấp cao, OpenCV là một bộ thư viện mã nguồn mở xuất sắc bao gồm nhiều chức năng xử lý hình ảnh tiêu chuẩn được sử dụng trong các hệ thống nhìn máy. Có những thư viện mã nguồn mở khác trực tuyến có thể được sử dụng cho việc phát triển ứng dụng chuyên biệt hơn.
Tôi sẽ khuyên dùng GPU hoặc FPGA cho các nhiệm vụ tổng quát hơn như nhận dạng hình ảnh, phân đoạn, và xác định đối tượng với theo dõi trong dữ liệu video mà không cần áp dụng xử lý trước cụ thể cho ứng dụng (tức là, từ hình ảnh thô). Tôi đề cập điều này ở đây bởi vì chúng ta cần xem xét cách giao tiếp với cảm biến hình ảnh, và cảm biến cần được phối hợp với bộ xử lý. Trong FPGA, logic thu thập và xử lý tiếp theo có thể được thực hiện song song cùng với phần còn lại của logic cho ứng dụng.
Một nền tảng phần cứng mở phổ biến có thể được sử dụng cho việc phát triển hệ thống là OpenMV. Những mô-đun camera này tích hợp logic thu thập hình ảnh, phần cứng để lắp đặt các yếu tố quang học, và một PCB để đảm bảo EMI/EMC và SI/PI. Chúng cũng tương thích với MCU STM32 và các nền tảng khác. Đây là một hệ thống tốt cho các nhà phát triển ứng dụng muốn sử dụng một bộ xử lý bên ngoài làm bộ điều khiển chủ cho một ứng dụng lớn hơn trong hệ thống, nhưng không muốn mắc kẹt trong việc phát triển và gỡ lỗi phần cứng.
Mô-đun camera M7 (bên trái) và Mô-đun Adapter FLIR Lepton (bên phải).
Thị giác máy tính rất hữu ích trong mọi hình thức, và chúng ta không nên ngạc nhiên khi các giải pháp dựa trên MCU, MPU, hoặc FPGA tiên tiến được tích hợp với đám mây. Tùy thuộc vào cách tính toán đám mây được tận dụng, bạn có thể chuyển việc xử lý sang trung tâm dữ liệu thay vì thực hiện nó ở biên, vì vậy một MCU hoặc MPU nhẹ có thể được sử dụng. Khi cần xử lý nhanh chóng trên thực địa, các tác vụ xử lý nên được thực hiện trên thực địa với một bộ điều khiển chủ mạnh mẽ hơn (FPGA, MPU + FPGA, hoặc MPU + GPU). Một lần nữa, sự lựa chọn phụ thuộc vào lượng tiền xử lý bạn thực hiện trên thiết bị để làm sạch và nén hình ảnh trước khi gửi chúng vào đám mây để xử lý.
Đối với các ứng dụng AI/ML liên quan đến thị giác máy tính, một số công ty cung cấp SoCs và ASICs như một bổ sung cho các bộ xử lý chậm hơn hoặc như các mô-đun bổ sung cho SBCs. Google Coral là một trong những lựa chọn này, hoạt động như một bộ xử lý chuyên dụng để chạy các mô hình TensorFlow Lite liên quan đến suy luận từ dữ liệu hình ảnh. Các lựa chọn khác đang xuất hiện trên thị trường từ các startup đang nhắm mục tiêu suy luận AI cho nhiều luồng video, lý tưởng thay thế GPU bằng các gói nhỏ hơn.
Hệ thống thị giác máy tính cần phải làm nhiều hơn là chỉ chụp và xử lý hình ảnh. Hệ thống ngày nay được kết nối, chúng giao tiếp với nhiều cảm biến, Một số thành phần khác bạn có thể cần cho hệ thống thị giác máy tính của mình bao gồm:
Thiết kế hệ thống thị giác máy tính đòi hỏi chuyên môn trong nhiều lĩnh vực và sự hợp tác với một nhóm, nhưng việc lựa chọn thành phần cho các hệ thống này không nên khó khăn. Khi bạn cần tìm thành phần cho ứng dụng thị giác máy tính của mình, hãy sử dụng các tính năng tìm kiếm và lọc nâng cao trên Octopart. Khi bạn sử dụng công cụ tìm kiếm điện tử của Octopart, bạn sẽ có quyền truy cập vào dữ liệu giá cả của nhà phân phối cập nhật, hàng tồn kho, và thông số kỹ thuật của bộ phận, và tất cả đều dễ dàng truy cập trong một giao diện thân thiện với người dùng. Hãy xem trang mạch tích hợp của chúng tôi để tìm các thành phần bạn cần.
Hãy cập nhật với các bài viết mới nhất của chúng tôi bằng cách đăng ký nhận bản tin của chúng tôi.