3.3.2.5. Máy tính nhúng NVIDIA Jetson Nano Developer Kit B01
NVIDIA Jetson Nano Developer Kit B01 là một máy tính nhỏ, mạnh mẽ cho phép chạy nhiều Neural Networks song song cho các ứng dụng như phân loại hình ảnh, phát hiện đối tượng, phân đoạn và xử lý giọng nói. Tất cả đều nằm trong một nền tảng dễ sử dụng, chạy với công suất ít nhất là 5W.
Jetson Nano cung cấp 472 GFLOPS để chạy các thuật toán AI hiện đại nhanh chóng, với CPU ARM 64-bit lõi tứ, GPU NVIDIA 128 lõi tích hợp, cũng như bộ nhớ LPDDR4 4GB. Nó chạy song song nhiều mạng nơ-ron và xử lý đồng thời một số cảm biến có độ phân giải cao.
Jetson Nano cũng được hỗ trợ bởi NVIDIA JetPack, bao gồm gói hỗ trợ bo mạch (BSP), thư viện phần mềm CUDA, cuDNN và TensorRT cho Deep Learning thị giác máy tính, tính toán GPU, xử lý đa phương tiện, v.v. SDK cũng bao gồm khả năng cài đặt các source mở của Machine Learing (ML) phổ biến như TensorFlow, PyTorch, Caffe / Caffe2, Keras và MXNet, cho phép các nhà phát triển tích hợp AI Model/ AI Frameworks yêu thích của họ vào các sản phẩm một cách nhanh chóng và dễ dàng.
CHI TIẾT CẤU HÌNH:
Model: Jetson Nano Developer Kit Carrier Board B01 (2 camera CSI ports) GPU: 128-core Maxwell
CPU: Quad-core ARM A57 @ 1.43 GHz Memory: 4 GB 64-bit LPDDR4 25.6 GB/s Storage: microSD (not included)
Video Encode: 4K @ 30 | 4x 1080p @ 30 | 9x 720p @ 30 (H.264/H.265)
33
Video Decode: 4K @ 60 | 2x 4K @ 30 | 8x 1080p @ 30 | 18x 720p @ 30 (H.264/H.265)
Camera: 2 x MIPI CSI-2 DPHY lanes Connectivity: Gigabit Ethernet, M.2 Key E Display: HDMI 2.0 and eDP 1.4
USB: 4x USB 3.0, USB 2.0 Micro-B Others: GPIO, I2C, I2S, SPI, UART Mechanical: 100 mm x 80 mm x 29 mm
3.3.2.6. Mạch Arduino
Mạch Arduino được xem như là bộ não của cả hệ thống, nó có nhiệm vụ kết nối các thiết bị khác lại với nhau để điểu khiển hoạt động của hệ thống. Nhóm nghiên cứu sử dụng 1 arduino mega để điều khiển hoạt động của hệ thống.
Thông số kĩ thuật: Arduino Mega 2560 R3
Vi điều khiển chính: ATmega2560.
IC nạp và giao tiếp UART: ATmega16U2.
Nguồn nuôi mạch: 5VDC từ cổng USB hoặc nguồn ngoài cắm từ giắc tròn DC (khuyên dùng 6~9VDC để đảm bảo mạch hoạt động tốt, nếu cắm 12VDC thì IC ổn áp rất dễ chết và gây hư hỏng mạch).
Số chân Digital: 54 (15 chân PWM). Số chân Analog: 16.
Giao tiếp UART: 4 bộ UART. Giao tiếp I2C: 1 bộ.
Ngắt ngoài: 6 chân.
Bộ nhớ Flash: 256 KB, 8KB sử dụng cho Bootloader. SRAM: 8 KB.
EEPROM: 4 KB. Xung clock: 16 MHz.
Cảm biến
Trong mô hình đồ án sử dụng cảm biến cảm biến khoảng cách với số lượng 4 chiếc với nhiệm vụ:
- Cảm biến phát hiện bản mạch để khởi động băng tải.
- Cảm biến phát hiện bản mạch vào vùng camera để dừng băng tải 1. - Cảm biến bản mạch đến băng tải 2.
- Cảm biến nhận biết mạch đến để tác động dừng băng tải 2 đồng thời tác động xilanh cốt đôi hạ xuống hút bản mạch lên.
Thông số kĩ thuật:
- Nguồn điện cung câp: 5VDC. - Khoảng cách phát hiện: 5 ~ 80cm.
- Có thể điều chỉnh khoảng cách qua biến trở.
- Tín hiệu ra PNP (tín hiệu kích dương), khi không có tác động thì ngõ ra mức không còn khi tác động thì ngõ ra mức 1 (áp ra bằng nguồn VCC). Kí hiệu chân:
- Dây nâu: VCC. - Dây xanh: GND. - Dây đen: Tín hiệu ra.
35
Hình 3- 16: Mạch Arduino Mega 2560 R3
3.4. Thiết kế hệ thống nhận diện linh kiện điện tử
3.4.1. Calibration camera
Hiện nay những camera lỗ kim giá rẻ được sử dụng rộng rãi. Nhược điểm của những camera giá rẻ này là chúng tạo ra nhiều sự biến dạng trong ảnh. Hai loại biến dạng chính là biến dạng méo xuyên tâm và biến dạng méo tiếp tuyến.
Với biến dạng xuyên tâm, nhưng đường thẳng của đối tượng sẽ chuyển thành đường cong trong ảnh. Càng xa tâm ảnh, biến dạng càng lớn. Ví dụ ảnh bàn cờ dưới đây:
Hình 3- 18: Lưu đồ thuật toán hệ thống nhận diện linh kiện điện tử
yes no
Chúng ta có thể dễ dàng thấy rằng đường biên của bàn cờ không phải là đường thẳng. Để khắc phục nhược điểm này của camera, ta cần đi thực hiện một quá trình gọi là camera calibration:
Đầu tiên, các biến dạng được viết dưới dạng các hàm toán học mô tả sự sai lệch về vị của các pixel trong ảnh.
Với radial distortion[1]:
(3-25) (3-26) Với rectangle distortion[1]:
(3-27) (3-28) Trong đó:
Ngoài ra chúng ra cần tìm một vài thông số khác như các intrinsic[1] và extrinsic[1] parameters của camera. Intrinsic maxtric là một ma trận hệ số cung cấp
37
các thông số của camera như focal length , tâm quang học ,… Chúng được gọi là camera matrix. Chúng chỉ phụ thuộc vào camera và có thể được tính toán trước.
(3-29 )
Extrinsic parameters phụ thuộc vào các vector quay và tịnh tiến giúp chuyển dịch toạ độ các điểm 3D sang hệ toạ độ ảnh.
3.4.2. Thuât toán ORB và kĩ thuât Bruce Force matching
A. Thuật toán ORB
Thuật toán ORB[3] đươc xây dựng bởi Ethan Rublee, Vincent Rabaud, Kurt Konolige và Gary R. Bradski. Đây là một phương pháp hiệu quả nhằm tối ưu việc tìm kiếm các đặc trưng nổi bật của các đối tượng có trong ảnh.
So với các thuật toán tìm kiếm đặc trưng trước đó như thuật toán SIFT[1] hay thuật toán SURF[1], thuật toán ORB có ưu thế hơn rất nhiều về thời gian xử lý, do đó đem đến hiệu suất cao hơn trong việc triển khai thuật toán trong các dự án thực tế.
Thuật toán ORB được xây dựng dựa trên thuật toán tìm kiếm đặc trưng FAST[1] và bộ mô tả đặc trưng BRIEF[1] với một số cải tiến để nâng cấp hiệu năng. Đầu tiên thuật toán ORB tìm kiếm các đặc trưng bằng việc sử dụng thuật toán FAST. Sau đó bằng việc sử dụng thuật toán Harris corner, N điểm tốt nhất sẽ được dữ lại. Để tối ưu hóa việc tìm kiếm đặc trưng trên với nhiều kích thước khác nhau, thuật toán Pyramid được triển khai.
Bộ miêu tả đặc trưng của thuật toán ORB được xây dựng dựa trên việc xử dụng bộ miêu tả BRIEF. Để cho ra bô miêu tả đặc trưng tốt hơn, các tác giả đã cải tiến thuật toán bằng việc sử dụng kĩ thuật “steer” xung quanh theo hướng chiều của đặc trưng. Với mỗi một đặc trưng tại vị trí , n mã nhị phân được định nghĩa bởi ma trận 2xn. Sau đó với việc sử dụng góc quay của điểm kí hiệu bởi , ma trận 2xn sẽ được quay theo chiều góc quay . Thuật toán ORB sau đó sẽ phân tích góc quay của điểm đặc trưng và tăng giá trị góc lên và xấy dựng một bảng miêu tả đặt trưng BRIEF.
B. Kỹ thuật matching keypoint sử dung Bruce-Force matching.
Sau khi tìm kiếm các đặc trưng ORB trên cả ảnh gốc và ảnh tham chiếu. Vấn đề đặt ra là cần phải nối các điểm đặc trưng tương đồng lại với nhau sao cho nhiều nhất có thể và chỉ giữ lại các cặp điểm tốt nhất để đưa vào các tiến trình tiếp theo. Do vậy, kĩ thuật Bruce –Force matching[] được sử dụng tại đây. Kĩ thuật này dựa trên việc tính toán tổng sai số vùng lân cận giữa hai cặp điểm. Gỉa sử trên ảnh gốc và ảnh tham chiếu, ta tìm được N điểm đặc trưng, để đánh giá xem điểm nào trên ảnh gốc tương ứng với điểm nào trên ảnh tham chiếu, thuật toán sẽ lấy từng điểm trên ảnh gốc và tính giá trị Error với từng điểm trên ảnh tham chiếu. Sau đó cặp điểm nào có trị số error nhỏ nhất sẽ được giữ lại.
Gỉa sử là vị trí của điểm đặc trưng trên ảnh gốc, là vị trí của điểm đặc trưng trên ảnh tham chiếu. Bằng việc lấy một khu vực xung quanh các điểm đặc trưng với kích thước mxn, ta có thể tính được sai số giữa các khu vực của đặc trưng điểm ảnh gốc tương ứng trên ảnh tham chiếu:
(3-30)
(3-31)
(3-32)
(3-33) Với R, G, B lần lượt là giá trị độ lớn pixel tương ứng trên các kênh ảnh Red, Green và Blue.
(b) (a)
C. Thuât toán RANSAC và ứng dụng để căn chỉnh board mạch
Các bo mạch khi đưa vào quá trình xử lý nhận diện lỗi có thể bị quay khác hướng so với ảnh gốc dùng để tham chiếu bo mạch chuẩn. Do đó yêu cầu đặt ra là phải xử lý sao cho góc quay và kích thước của ảnh mạch cần phân tích lỗi hoàn toàn trùng khớp với ảnh tham chiếu ban đầu. Gỉa sử là tọa độ các pixel ảnh gốc và
là tọa độ các pixel của ảnh cần phân tích. H là ma trận 3x3 điều chỉnh hướng xoay và tỉ lệ sao cho hai ảnh khớp hoàn toàn với nhau. Ta có phương trình biến đổi trong không gian Hormorgraphy như sau:
(3-25)
Với:
41
Để tính được ma trận H, ta cần vận dụng ít nhất 9 điểm tương ứng đã biết ở hai bức ảnh. Bằng cách sử dụng các điểm đặc trưng với thuật toán ORB trước đó, ta có thể tính toán ra các hệ số của ma trận. Tuy nhiên một vấn đề nảy sinh khi sử dụng trực tiếp các cặp điểm này, đó là bên cạnh những cặp điểm được tìm chính xác ăn khớp với nhau thì có những cặp điểm bị matching sai. Khi sử dụng những điểm matching sai này có thể dẫn đến việc tính toán ra sai ma trận.
quay và gây ra kết quả không như mong muốn. Do đó để khắc phục vấn đề do những điểm ngoại lai này gây ra, thuật toán RANSAC[2] được sử dụng.
Thuật toán RANSAC dựa trên việc lấy mẫu dữ liệu và đánh giá để tìm ra một hàm tối ưu trên bộ dữ liệu. Tối ưu ở đây có nghĩa là tổng sai số giữa các điểm dữ liệu và hàm số đạt giá trị nhỏ nhất. Gỉa sử với n điểm dữ liệu trước , ta mong muốn tìm được một mô hình biểu diễn bởi m điểm (nhỏ nhất có thể) sao cho
. Để ước lượng được hàm f thuật toán được thực hiện qua các bước như sau: Thiết lập số vòng lặp tìm kiếm K, khởi tạo giá trị k = 1.
Chọn ngẫu nhiên m cặp điểm từ tập X và tính toán hàm ước lượng cho mô hình. Lựa chọn giá trị khoảng sai số , xác định xem có bao nhiêu điểm dữ liệu thuộc tập X khớp với mô hình với sai số trong khoảng . Nếu số lượng điểm không thỏa mãn lớn hơn ngưỡng T thì thuật toán sẽ dừng lại.
Tiếp tục lặp lại vòng lặp với k = k+1. Nếu k < K mà thuật toán tìm được hàm tối ưu thì dừng lại, còn không thuật toán sẽ tiếp tục chạy và lấy bộ số tối ưu nhất.
Áp dụng trong trường hợp ở đây, thuật toán RANSAC được sử dụng để tìm ra ma trận tối ưu H sao cho loại bỏ được các điểm matching lỗi gây nhiễu. Do hàm ma trận H bao gồm có 9 tham số, do đó cần lựa chọn ngẫu nhiên 9 cặp điểm. Với 9 cặp điểm đó, ta tính ra được bộ tham số cho H và áp dụng vào công thức (1) để xoay ảnh tham chiếu về vị trí ảnh gốc. Sau đó sai số giữa vị trí của các cặp điểm đưuọc tính để tính ra tổng sai số, hàm tính tổng sai số được tính như sau:
Sau khi lặp lại thuật toán 100 lần với 100 bộ điểm khác nhau, bộ điểm nào cho ra sai số nhỏ nhất sẽ được áp dụng để tính ra ma trận H hoàn chỉnh cho thuật toán.
D. Thuât toán trừ ảnh và môt số kĩ thuật lọc nhiễu ảnh.
Không gian màu YUV
Mô hình YUV quy định một không gian màu được tạo bởi một độ sáng và hai thành phần màu (chrominance). Mô hình YUV giúp tạo ra màu đúng với nhận thức của con người hơn chuẩn RGB, là loại được dùng trong các thiết bị đồ hoạ máy tính, nhưng không chuẩn bằng không gian màu HSB. Y đại diện cho thành phần độ sáng, U và V là đại diện cho các thành phần màu. Các tín hiệu YUV đều xuất phát từ các nguồn RGB. Các giá trị trọng số của R, G và B được cộng lại với nhau để tạo ra một tín hiệu Y đơn, để biểu diễn độ sáng chung tại một điểm đó. Tín hiệu U sau đó được tạo ra bằng các trừ Y khỏi tín hiệu lam (B của RGB), và được nhân với một tỉ lệ có sẵn; còn V được tính bằng cách trừ Y khỏi màu đỏ (R của RGB), và nhân tỉ lệ với một hệ số khác.
Các công thức sau có thể dùng để tính toán Y, U và V từ R, G và B:
(3-36) (3-37) (3-38) Thuật toán trừ ảnh
43
Hình ảnh biến đổi sau đó được so sánh với ảnh mạch gốc để tìm ra các khiếm khuyết trong bo mạch PCB. Hình ảnh đã biến đổi thu được ở bước trước ở dạng ảnh màu RGB. Gọi I là ảnh đầu vào sau biến đổi và R là ảnh gốc của board mạch, E là ảnh RGB sai số giữa I và B, ta có thể tính toán được ảnh sai số tuyệt đối giữa hai ảnh trên với công thức:
(3-39 )
Để làm rõ hơn các vị trí vùng lỗi, ảnh E được chuyển sang ảnh xám. Từ ảnh xám, sau khi phân ngưỡng ta thu được ảnh nhị phân với tương ứng với hai mức là 0 và 255. Với những vùng hiển thị màu đen là những vùng không bị lỗi, còn những vùng có màu trắng là vùng hiển thị những vị trí bị thiếu linh kiện, vết xước hoặc những vị trí bị nhiễu.Thuật toán lọc bỏ nhiễu.
Ảnh sau khi trừ còn xuất hiện rất nhiều những vùng nhiễu không mong muốn, do đó một số bộ lọc cần được áp dụng nhằm giảm bớt ảnh hưởng của yếu tố nhiễu. Kĩ thuật OPENING[1] được sử dụng ở đây để giải quyết vấn đề đó. Kĩ thuật OPENING được dựa trên hai thuật toán sử dụng liên tiếp là Erosion và thuật toán Dilation.
Thuật toán Dilation[1]
Thuât toán Dilation, X ⊕ B là tập hợp điểm của tất cả các phép cộng vectơ có thể có của các cặp phần tử, một từ mỗi phần tử bộ X và B sao cho:
(3-27)
Như vậy thuật toán Dilation cho phép dãn nở những vùng ảnh trắng trong ảnh nhị phân dựa trên việc sử dụng một ma trận kernel có kích thước tùy chọn. Kích thước kernel càng lớn ảnh vùng ảnh dãn nở ra càng rộng qua đó giúp làm giảm đi hiện tượng phân mảnh trong ảnh.
Thuật toán Erode[1]:
Trái ngược với thuật toán Dilation, thuật toán Erode cho phép tthu nhỏ vùng trắng trong ảnh nhị phân. Thuật toán Erode, X-B là tập hợp điểm của tất cả các phép trừ vectơ có thể có của các cặp phần tử, một từ mỗi phần tử bộ X và B sao cho:
(3-28)
Thuật toán Erode cho phép thu nhỏ lại vùng trắng trong ảnh nhị phân. Với ma trận kernel càng lớn thì vùng trắng sẽ thu nhỏ lại càng nhiều. Phối hợp với phép Dilation, phép Erode ngăn không cho Dilation dãn nở quá mức làm mất thông tin.
Loại bỏ nhiễu bằng tiêu chí ngưỡng.
45
Hình 3- 26: Mô tả thuật táon Erode
Ảnh sau khi qua phép OPENING về cơ bản đã loại bỏ được khá nhiều nhiễu, tuy nhiên vẫn còn xuất hiện nhiễu trong ảnh. Để loại bỏ hoàn toàn nhiễu, một số tiêu chí đánh giá vùng trắng dựa trên các hệ số sau:
.Trong đó: là hệ số diện tích,
là hệ số đậm đặc, là hệ số tỉ lệ. Gọi w,h lần lượt là kích thước chiều dài và rộng của vùng trắng trong ảnh, s là diện tích vùng trắng. Để vùng trắng thỏa mãn thì:
Sau khi áp dụng các tiêu chí ngưỡng kết quả thu được hiển thị ở Hình ().