(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 ().
3.4.3. Mạng Convolution neuron network và ứng dung trong việc phân loại linhkiện. kiện.
E. Mạng Convolution neuron network.
Với sự phát triển mạnh mẽ của phần cứng máy tính trong những năm gần đây, đặc biệt là những hệ thống máy tính với sự hỗ trợ của GPU, rất nhiều những mạng Deep Learning đã ra đời và được ứng dụng trong việc xử lý ảnh. Các model nổi tiếng
có thể kể đến như là: VGG-16[4], VGG-19[4], Inception net[6], Mobilenet[7] … Điểm chung của những model này là đều ứng dụng Convolution neuron network.
Mạng Convolution neuron network bao gồm lớp đầu vào, các lớp ẩn bên trong và lớp đầu ra. Lớp đầu vào ở đây thông thường là ảnh RGB. Các lớp ẩn bao gồm các lớp tính toán tích chập. Các lớp này thực hiện các phép nhân hoặc phép tích chập cùng với đó là các hàm kích hoạt VD: Relu[1], Sigmoid[1], Tanh[1]…Tiếp sau đó là các lớp bổ trợ như: lớp pooling, lớp fully connected và lớp normalization.
Trong một lớp mạng CNN, đầu vào là một tensor với kích thước: (số lớp đầu vào) x (chiều cao đầu vào) x (chiều rộng đầu vào) x (số kênh đầu vào). Sau khi chạy qua lớp convolution, ảnh đầu vào sẽ chiết xuất ra các feature map với kích thước: (số lớp đầu vào) x ( chiều cao feature map) x (chiều rộng feature map) x (số kênh feature map).
Nhìn chung, một lớp mạng CNN tiêu biểu có các đặc trưng sau:
Các bộ lọc tích chập/kernel được định nghĩa bằng chiều dài và chiều rộng.
47
Hình 3- 29: Sơ đồ mạng CNN
Hình 3- 30: Trích xuất đặc trưng qua cáclớp của mạng CNN lớp của mạng CNN
Số lượng kênh đầu vào và kênh đầu ra. Các kênh đầu vào của một lớp phải bằng số lượng kênh đầu ra (còn gọi là độ sâu) của đầu vào của nó.
Các siêu tham số bổ sung của phép toán tích chập, chẳng hạn như: padding, stride và độ dilation.
F. Mạng Convolution neuron network Resnet-50.
ResNet (Residual Network)[5] được giới thiệu vào năm 2015. Mô hình đã giành được vị trí thứ 1 trong cuộc thi ILSVRC 2015 với tỉ lệ lỗi top 5 chỉ 3.57%. Không những thế nó còn đứng vị trí đầu tiên trong cuộc thi ILSVRC and COCO 2015 với ImageNet Detection, ImageNet localization, Coco detection và Coco segmentation. Hiện tại, nhiều tác giả đã phát triển mô hình ResNet lên với nhiều biến thể của kiến trúc ResNet với số lớp khác nhau như ResNet-18, ResNet-34, ResNet-50, ResNet-101, ResNet-152,...Với tên là ResNet theo sau là một số chỉ kiến trúc ResNet với số lớp nhất định.
Mạng ResNet (R) là một mạng CNN được thiết kế để làm việc với hàng trăm hoặc hàng nghìn lớp chập. Một vấn đề xảy ra khi xây dựng mạng CNN với nhiều lớp chập sẽ xảy ra hiện tượng Vanishing Gradient dẫn tới quá trình học tập không tốt. Cho nên giải pháp mà ResNet đưa ra là sử dụng kết nối "tắt" đồng nhất để xuyên qua một hay nhiều lớp. Một khối như vậy được gọi là một Residual Block.
ResNet có kiến trúc tương đồng với các mạng gồm có convolution, pooling, activation và fully-connected layer. Ảnh bên trên hiển thị khối dư được sử dụng trong mạng. Xuất hiện một mũi tên cong xuất phát từ đầu và kết thúc tại cuối khối dư. Với H(x) là giá trị dự đoán, F(x) là giá trị thật (nhãn), chúng ta muốn H(x) bằng hoặc xấp xỉ F(x).
Trong đề tài thực hiện, nhóm thực hiện đã sử dụng mô hình Resnet-50 với 50 lớp khác nhau giúp tăng khả năng học những đặc trưng khó và mới, mô hình Resnet- 50 được thể hiện ở hình dưới:
Hình 3- 32: Mô hình mạng Resnet-50
F. Mạng Moblienet
Kể từ khi ra đời, MobileNetV2 là một trong những kiến trúc được ưa chuộng nhất khi phát triển các ứng dụng AI trong computer vision. Rất nhiều các kiến trúc sử dụng backbone là MobileNetV2 như SSDLite trong object detection và DeepLabV3 trong image segmentation.
MobileNetV2 có một số điểm cải tiến so với MobileNetV1 giúp cho nó có độ chính xác cao hơn, số lượng tham số và số lượng các phép tính ít hơn mà chúng ta sẽ tìm hiểu ngay sau đây.
MobileNetV2 cũng sử dụng những kết nối tắt như ở mạng ResNet. Các khối ở layer trước được cộng trực tiếp vào layer liền sau. Nếu coi layer liền trước là x, sau khi đi qua các xử lý tích chập hai chiều ta thu được kết quả F(x) thì output cuối cùng là một residual block có giá trị x+F(x).
Tuy nhiên kết nối tắt ở MobileNetV2 được điều chỉnh sao cho số kênh (hoặc chiều sâu) ở input và output của mỗi block residual được thắt hẹp lại. Chính vì thế nó được gọi là các bottleneck layers (bottleneck là một thuật ngữ thường được sử dụng trong deep learning để ám chỉ các kiến trúc thu hẹp kích thước theo một chiều nào đó).
Cụ thể hơn chúng ta theo dõi hình minh họa bên dưới:
50
Kiến trúc residual này ngược lại so với các kiến trúc residual truyền thống vì kiến trúc residual truyền thống có số lượng kênh ở input và output của một block lớn hơn so với các layer trung gian. Chính vì vậy nó còn được gọi là kiến trúc inverted residual block.
Tác giá cho rằng các layer trung gian trong một block sẽ làm nhiệm vụ biến đổi phi tuyến nên cần dày hơn để tạo ra nhiều phép biến đổi hơn. Kết nối tắt giữa các block được thực hiện trên những bottleneck input và output chứ không thực hiện trên các layer trung gian. Do đó các layer bottleneck input và output chỉ cần ghi nhận kết quả và không cần thực hiện biến đổi phi tuyến.
Ở giữa các layer trong một block inverted residual block chúng ta cũng sử dụng những biến đổi tích chập tách biệt chiều sâu để giảm thiểu số lượng tham số của mô hình. Đây cũng chính là bí quyết giúp họ các model MobileNet có kích thước giảm nhẹ.
G. Mạng U2-NET
Trong hai năm qua, các mạng phức hợp sâu đã hoạt động tốt hơn trạng thái nghệ thuật trong nhiều nhiệm vụ nhận dạng trực quan. Trong khi mạng phức hợp đã tồn tại trong một thời gian dài và thành công của họ bị hạn chế do kích thước của các tập huấn luyện có sẵn và kích thước của các mạng được xem xét. Các đột phá của Krizhevsky et al là do đào tạo có giám sát của một mạng với 8 lớp và hàng triệu tham số trên tập dữ liệu ImageNet với 1 triệu hình ảnh đào tạo. Kể từ đó, các mạng lớn hơn và sâu hơn đã được đào tạo .
Việc sử dụng điển hình của mạng phức hợp là trong các nhiệm vụ phân loại, trong đó đầu ra cho một hình ảnh là một nhãn lớp đơn. Tuy nhiên, trong nhiều tác vụ trực quan, đặc biệt là trong xử lý hình ảnh y sinh, đầu ra mong muốn phải bao gồm bản địa hóa, tức là, một nhãn lớp phải được gán cho mỗi pixel. Hơn nữa, hàng ngàn hình ảnh đào tạo thường nằm ngoài tầm với trong các nhiệm vụ y sinh. Do đó, các nhà khoa học đã tạo mạng trong thiết lập cửa sổ trượt để dự đoán nhãn lớp của mỗi pixel bằng cách cung cấp một vùng cục bộ (bản vá) xung quanh pixel đó
Hình 3- 35: Kiến trúc U-net (ví dụ cho 32x32 pixel ở độ phân giải thấp nhất)
Mỗi màu xanh hộp tương ứng với một bản đồ tính năng đa kênh. Số lượng kênh được biểu thị trên đầu hộp. Kích thước x-y được cung cấp ở mép dưới bên trái của hộp. trắng các hộp đại diện cho bản đồ đối tượng đã sao chép. Các mũi tên biểu thị các hoạt động khác nhau.
Cấu trúc mạng u2-net:
Kiến trúc mạng được minh họa trong hình trên. Nó bao gồm một hợp đồng đường dẫn (bên trái) và một đường mở rộng (bên phải). Đường dẫn hợp đồng theo sau kiến trúc điển hình của một mạng phức hợp. Nó bao gồm sự lặp lại ứng dụng của hai tập hợp 3x3 (các tập hợp không được đánh dấu), mỗi phần tiếp theo là một đơn vị tuyến tính được điều chỉnh (ReLU) và hoạt động gộp tối đa 2x2 với bước 2 để lấy mẫu xuống. Ở mỗi bước lấy mẫu xuống, chúng tôi tăng gấp đôi số lượng tính năng kênh truyền hình. Mỗi bước trong con đường mở rộng bao gồm việc lấy mẫu ngược bản đồ đối tượng theo sau là tích chập 2x2 làm giảm một nửa số lượng kênh tính năng, một đoạn nối với các kênh được cắt tương ứng bản đồ tính năng từ đường dẫn hợp đồng và hai tập hợp 3x3, mỗi tập hợp theo sau là một ReLU. Việc cắt xén là cần thiết do mất các pixel đường viền trong mọi tích chập. Ở lớp cuối cùng, một phép chập 1x1 được sử dụng để ánh xạ mỗi 64-vectơ đặc trưng thành phần với số lớp mong muốn. Tổng cộng mạng lưới có 23 lớp chập. Để cho phép xếp lớp liền mạch của bản đồ phân đoạn đầu ra (xem Hình 2), nó điều quan trọng là chọn kích thước ô đầu vào sao cho tất cả các hoạt động gộp tối đa 2x2 được áp dụng cho một lớp có kích thước x- và y chẵn.
Trainning:
Hình ảnh đầu vào và bản đồ phân đoạn tương ứng của chúng được sử dụng để đào tạo mạng với sự triển khai dốc nghiêng ngẫu nhiên của Caffe. Do các chập không có đệm, hình ảnh đầu ra nhỏ hơn hình ảnh đầu vào bởi chiều rộng đường viền không đổi. Để giảm thiểu chi phí và sử dụng tối đa của bộ nhớ GPU, chúng tôi ưu tiên các ô đầu vào lớn hơn kích thước lô lớn và do đó giảm hàng loạt thành một hình ảnh duy nhất. Theo đó, chúng tôi sử dụng một động lượng cao (0,99) sao cho một số lượng lớn các mẫu đào tạo đã thấy trước đây xác định cập nhật trong bước tối ưu hóa hiện tại. Hàm năng lượng được tính toán bằng soft-max theo pixel thông qua giá trị cuối cùng bản đồ đặc trưng kết hợp với hàm mất entropy chéo.
Soft-max là được định nghĩa là pk(x)=exp(ak(x))/¿
Trong đó ak(x) biểu thị kích hoạt trong kênh đặc trưng k ở vị trí pixel x ∈ Ω với Ω ⊂Z2. K là số lớp và pk(x) là hàm cực đại gần đúng.
I.e.pk(x) ≈ 1 cho k có kích hoạt lớn nhất ak(x) và pk(x) cho tất cả các k khác. Sau đó, entropy chéo sẽ phạt tại mỗi vị trí độ lệch của pl(x)(x) bằng công thức sau:
E=∑
x∈Ω⍵(x)log(¿pl(x)(x))¿
Tăng cường dữ liệu:
Tăng cường dữ liệu là điều cần thiết để dạy cho mạng sự bất biến mong muốn và đặc tính mạnh mẽ khi chỉ có một số mẫu đào tạo. Trong trường hợp của hình ảnh vết xước trên bo mạch, chúng ta chủ yếu cần sự bất biến dịch chuyển và quay cũng như độ bền đối với các biến dạng và các biến thể giá trị xám. Đặc biệt là các biến dạng đàn hồi ngẫu nhiên của các mẫu huấn luyện dường như là khái niệm chính để huấn luyện một mạng phân đoạn với rất ít hình ảnh được chú thích. Chúng tôi tạo ra suôn sẻ biến dạng sử dụng vectơ dịch chuyển ngẫu nhiên trên lưới thô 3 x 3. Các chuyển vị được lấy mẫu từ phân phối Gaussian với tiêu chuẩn 10 pixel sự lệch lạc. Sau đó, các dịch chuyển trên mỗi pixel được tính toán bằng cách sử dụng phép nội suy hai chiều. Các lớp thả ra ở cuối đường dẫn hợp đồng hoạt động ngầm hơn nữa.
3.4.4. Quá trình huấn luyện mô hình
A.Cấu hình máy tính.
Qúa trình huấn luyện mô hình nhận diện linh kiện được thực hiện trên Google Colab. Đây là hệ thống được xây dựng bởi Google cho phép việc huấn luyện mô hình diễn ra online.
Ưu điểm:
Cho phép việc huấn luyện dữ liệu online với RAM 8Gb và GPU 2Gb. So với những máy tính thông thường, cấu hình này cho phép tăng tốc quá trình huấn luyện và đánh giá mô hình.
Tiết kiệm chi phí training.
Cho phép upload và dowload file huấn luyện một cách dễ dàng. Nhược điểm:
Thời gian huấn luyện sử dụng GPU bị hạn chế. Cho phép tối đa 12h. Độ bảo mật dữ liệu không cao.
B.Thu thập dữ liệu và training.
Để huấn luyện mô hình nhận diện linh kiện, 2300 ảnh linh kiện với 13 loại linh kiện khác nhau được thu thập. Ảnh được thu thập bởi camera có độ phân giải 2 Mpx. Tập ảnh được chia ra thành file train và file test với số ảnh tương ứng là 2070 và 230 ảnh. Các ảnh được tinh chỉnh kích thước về 300x300 pixel sao cho phù hợp với đầu vào của mô hình Resnet-50.
Tập dữ liệu nhận diện linh kiện, tập dữ liệu nhận diện linh kiện ngược chiều bao gồm 3500 ảnh với 3200 ảnh train và 300 ảnh test.
55
Hình 3- 37: Tập dữ liệu ảnh huấn luyện nhận diện linh kiện
Tập dữ liệu kiểm tra viết xước trên chip và trên mạch 1500 ảnh với 1350 ảnh train và 150 ảnh test
Để giảm thiểu thời gian huấn luyện cũng như gia tăng độ chính xác cho mô hình, file weight ban đầu của mô hình được cập nhật từ “Imagenet”. Đây là file weight đã được huấn luyện qua các bộ dữ liệu cực lớn, do đó nó cho phép mô hình hội tụ nhanh hơn và tối ưu hơn. Do đó tổng thời gian để huấn luyện mô hình chỉ mất 30 phút với độ chính xác cao nhất là 98.34% trên tập test như thể hiện ở hình (3-38).
B.Kiểm chứng kết quả:
Ảnh từ camera sẽ được quay cùng hướng với ảnh mẫu ta thu được ảnh (b), sau đó chuyển ảnh sang không gian màu YUV ảnh (c), lấy kết quả đó thực hiện phép trừ ảnh với ảnh mẫu ta được ảnh (d), tiếp đó ta lọc nhiễu để bỏ các vùng lỗi nhỏ ảnh (e). Với các vùng nhiễu thỏa mãn các điều kiện về độ lớn, độ đặc, tỉ lệ dài và rộng ta sẽ lưu lại tọa độ để thực hiện các bước tiếp theo.
57
(a) (b) (c)
Kiểm tra model resnet50:
Với các tọa độ vùng lỗi thu được ở phần A ta sẽ resize về kích thước 300x300x3 để đưa vào mạng resnet50 để nhận diện linh kiện bị thiếu hoặc thừa.
Kiểm tra model mobilenet.
Tương tự ta cũng lấy dữ liệu các vùng lỗi ở phần A sau khi resize về kích thước 300x300x3 để đưa vào mạng mobilenet để kiểm tra chiều linh kiện.
Kiểm tra model U2net tương tự ta cũng lấy dữ liệu các vùng lỗi ở phần A sau khi resize về kích thước 256x256x3 để đưa vào mạng U2-net để kiểm tra vết xước
3.5 Đánh giá tổng quan đồ án:
Hệ thống đã được kiểm tra 200 lần với mỗi loại mạch và linh kiện bị hỏng trong 2 điều kiện thiếu sáng cũng như ngược sáng với 2 loại mạch là đúng hay sai. Biểu đồ được vẽ trong dựa vào file CSV sau khi xử lý mạch bao gồm độ chính xác của mỗi