Tại sao sử dụng NN tích chập cho một nhiệm vụ kiểm tra trực quan so với khớp mẫu CV cổ điển?


9

Tôi đã có một cuộc thảo luận thú vị được đưa ra dựa trên một dự án mà chúng tôi đang thực hiện: tại sao sử dụng hệ thống kiểm tra trực quan CNN qua thuật toán khớp mẫu?

Bối cảnh: Tôi đã cho thấy bản demo của một hệ thống tầm nhìn CNN đơn giản (webcam + máy tính xách tay) đã phát hiện xem một loại đối tượng cụ thể có bị "hỏng" / bị lỗi hay không - trong trường hợp này là bảng mạch PCB. Mô hình CNN của tôi đã được hiển thị các ví dụ về các bảng mạch thích hợp và bị hỏng (khoảng 100 hình ảnh của mỗi bảng) trên nền tĩnh. Mô hình của chúng tôi đã sử dụng một vài lớp đối lưu / maxpool đầu tiên của VGG16 được đào tạo trước (trên fantenet), và sau đó chúng tôi đã thêm một vài đối tượng / nhóm có thể huấn luyện được, với một vài mật độ, dẫn đến đầu ra được mã hóa theo kiểu dim-3 : (is_empty, has_good_product, has_defective_product).

Mô hình được đào tạo khá dễ dàng và đạt 99% xác nhận acc không có vấn đề gì; chúng tôi cũng được đào tạo với nhiều dữ liệu khác nhau vì chúng tôi biết rằng tập dữ liệu của chúng tôi rất nhỏ. Trong thực tế, nó hoạt động khoảng 9 lần trong số 10, nhưng một vài bản dịch / phép quay ngẫu nhiên của cùng một bảng mạch đôi khi sẽ đưa nó vào lớp đối diện. Có lẽ tăng cường dữ liệu tích cực hơn sẽ có ích. Dù sao, đối với một dự án nguyên mẫu, chúng tôi rất vui.

Bây giờ chúng tôi đã trình bày với một kỹ sư khác và đồng nghiệp của anh ấy, và anh ấy đưa ra lập luận rằng các NN quá mức cho việc này, chỉ nên sử dụng so khớp mẫu, tại sao người ta lại muốn làm CNN?

Chúng tôi không có câu trả lời tuyệt vời cho lý do tại sao phương pháp của chúng tôi có thể tốt hơn trong một số ứng dụng nhất định (ví dụ: các phần khác để kiểm tra). Một số điểm chúng tôi đã đưa ra:

1) Mạnh mẽ hơn đối với bất biến (thông qua việc tăng dữ liệu)

2) Có thể học trực tuyến để cải thiện hệ thống (ví dụ: con người có thể cho phần mềm biết ví dụ nào bị lỗi)

3) Không cần thiết lập các ngưỡng như trong thuật toán thị giác máy tính cổ điển Các bạn nghĩ sao, có nhiều lợi thế hơn cho hệ thống CNN cho loại nhiệm vụ kiểm tra này không? Trong trường hợp nào nó sẽ tốt hơn so với khớp mẫu?

Một vài ý tưởng ngẫu nhiên nữa khi các NN sâu có thể là công nghệ cho công việc: đối với các hệ thống yêu cầu cảm biến độ sâu 3D như một phần của đầu vào, hoặc bất kỳ loại đối tượng nào có thể bị biến dạng / kéo dài / bị cắt xén nhưng vẫn "tốt" và không bị lỗi (ví dụ như thú nhồi bông, dây điện, v.v.). Tò mò muốn nghe suy nghĩ của bạn :)


Tôi thích phương pháp học sâu và tôi biết chúng là tương lai. Tuy nhiên, khi bạn cần kết quả chính xác cao, giả sử xoay chính xác và tỷ lệ chính xác, việc khớp mẫu vẫn cho kết quả tốt hơn. Tôi đang nói về 0,1 độ / lỗi hệ số lỗi hoặc ít hơn. Học sâu giúp bạn có "xác suất" về kết quả có thể là "tốt nhất" nên không đủ khi cần độ chính xác cao, tôi rất muốn tìm cách có được độ chính xác như vậy bằng cách học sâu nhưng tôi vẫn không thể tìm thấy bất kỳ thuật toán nào cho phù hợp với mẫu chính xác cao bằng cách sử dụng học tập sâu. Tôi cởi mở với bất kỳ ý kiến ​​/ đề nghị nào hoặc
Pablo Gonzalez

Câu trả lời:


3

Các kỹ sư trong câu hỏi đề xuất phương pháp CV truyền thống cho ứng dụng của bạn chỉ đơn giản là làm như vậy theo thói quen. Sử dụng so khớp mẫu là vô cùng lỗi thời và đã được chứng minh là hoạt động rất kém. Tuy nhiên, tôi nghĩ rằng một CNN là quá mức cần thiết tùy thuộc vào kích thước tập dữ liệu của bạn.

Làm thế nào để khớp mẫu hoạt động?

Khớp mẫu sẽ trượt một cửa sổ trên hình ảnh của bạn sẽ cung cấp tỷ lệ phần trăm khớp với mẫu. Nếu tỷ lệ phần trăm trùng khớp vượt quá ngưỡng xác định trước nhất định thì nó được coi là khớp. Ví dụ: nếu bạn có hình ảnh của một con chó và bạn muốn xác định xem có một con chó trong hình ảnh hay không, bạn sẽ trượt một mẫu chó xung quanh toàn bộ khu vực hình ảnh và xem liệu có một tỷ lệ phần trăm đủ lớn. Điều này có thể sẽ dẫn đến hiệu suất rất kém vì nó yêu cầu mẫu chồng lên hình ảnh giống hệt nhau . Khả năng của điều đó trong thực tế là gì? Không cao lắm.

Khớp mẫu thời gian duy nhất là một kỹ thuật đủ là nếu bạn biết chính xác những gì bạn đang tìm kiếm và bạn tự tin rằng nó sẽ xuất hiện gần như giống hệt nhau trong mọi ví dụ của một lớp nhất định.

Tại sao nên sử dụng máy học thay thế?

Kỹ thuật học máy không cứng nhắc. Không giống như những gì stmax đã nói, CNN có thể khái quát hóa một bộ dữ liệu rất tốt . Đó là lý do tại sao họ rất mạnh mẽ. Sử dụng ví dụ về con chó, CNN không cần phải nhìn thấy hình ảnh của mỗi con chó đang tồn tại để hiểu những gì cấu thành như một con chó. Bạn có thể hiển thị nó có thể 1000 hình ảnh từ một tìm kiếm của Google, và sau đó thuật toán sẽ có thể phát hiện ra rằng con chó của bạn, thực tế là một con chó. Thực tế là các thuật toán học máy khái quát rất tốt là lý do mà chúng thay thế tất cả các kỹ thuật CV cổ xưa. Bây giờ vấn đề là lượng dữ liệu mà bạn cần để đào tạo một CNN. Họ cực kỳ dữ liệu .

Tôi không nghĩ rằng 100 điểm dữ liệu là đủ để đào tạo một CNN mạnh mẽ. Do sự phức tạp sâu sắc của mô hình để hạn chế sự thiên vị, bạn cần tăng số lượng ví dụ của mình. Tôi thường đề xuất 100 ví dụ cho mọi tính năng cho các mô hình sâu và 10 ví dụ cho mọi tính năng cho các mô hình nông. Nó thực sự tất cả phụ thuộc vào không gian tính năng của bạn.

Những gì tôi đề nghị.

Những gì bạn đang thực sự làm là phát hiện bất thường . Bạn có rất nhiều ví dụ sẽ được trình bày về PCB có hình dạng tốt. Bạn muốn phát hiện những cái bị hỏng. Vì vậy, tôi sẽ thử một số phương pháp phát hiện bất thường thay thế. Chúng đơn giản hơn nhiều để thực hiện và bạn có thể nhận được kết quả tốt bằng cách sử dụng các mô hình nông, đặc biệt là trong các bộ dữ liệu sai lệch (1 lớp được đại diện).


Cảm ơn bình luận toàn diện của bạn! Bạn có thể cung cấp các ví dụ về các dự án hoặc giấy tờ giải thích (và có thể là bản demo) phát hiện bất thường không? Chúc mừng
JDS

1
Dưới đây là một đánh giá tài liệu về phát hiện bất thường V. Chandola, A. Banerjee và V. Kumar, "Phát hiện bất thường: một cuộc khảo sát", Khảo sát tính toán ACM, tập. 41, không 3, tr. 15, 2009.
JahKnows

5

Câu trả lời phụ thuộc vào nhiệm vụ. Mẫu phù hợp có thể làm việc cho một số nhiệm vụ nhưng không phải cho tất cả. Các CNN có khả năng tổng quát hóa để không nhìn thấy các đầu vào không khớp với bất kỳ mẫu nào của bạn, do đó có khả năng khái quát hóa tốt hơn.

Nhưng liệu CNN có đánh bại khớp mẫu hay không sẽ phụ thuộc vào nhiệm vụ cụ thể và cụ thể bạn đang cố gắng đạt được điều gì. Đây là một khoa học thực nghiệm; cuối cùng, cách bạn tìm ra cái nào hiệu quả hơn là thử cả hai - hoặc học hỏi từ những người khác đã thử chúng (ví dụ, bằng cách đọc tài liệu). Tôi không nghĩ rằng bạn sẽ tìm thấy một số lý thuyết hoặc phân loại sẽ thay thế cho đánh giá thực nghiệm trên dữ liệu trong thế giới thực.


5

Một vấn đề bạn có thể gặp phải với NN (và các phương pháp phân loại khác) là vì bạn chỉ cho thấy một số khiếm khuyết nhất định, nên có thể không biết cách phản ứng với các khiếm khuyết hoàn toàn mới / chưa thấy có thể xuất hiện trong tương lai.

Bạn muốn NN học "bất cứ thứ gì trông không giống PCB không bị lỗi là PCB bị lỗi". Nhưng điều gì sẽ xảy ra nếu nó đã học được "bất cứ thứ gì trông không giống PCB bị lỗi là PCB không bị lỗi"?

Bạn có thể thử sửa đổi một số hình ảnh của PCB không bị lỗi bằng cách thêm một đốm trắng nhỏ (hoặc một nhiễu loạn nhỏ khác) vào chúng tại các vị trí ngẫu nhiên và mạng lưới thần kinh phân loại các hình ảnh được sửa đổi này. Nó chắc chắn nên phân loại chúng là khiếm khuyết, phải không? Nhưng nó có thể sẽ bỏ lỡ một số (hoặc khá nhiều) bởi vì nó chưa bao giờ thấy những khiếm khuyết như vậy trước đây.

Để phát hiện các lỗi hoàn toàn mới, các phương thức phát hiện bất thường / một trình phân loại lớp có thể nhiều hơn .. tin tưởng, bởi vì chúng nên chọn bất cứ thứ gì chưa từng thấy trước đây.

Như DW đã nói, bạn sẽ phải thử cả hai phương pháp và tìm ra phương pháp nào hoạt động tốt hơn. Chỉ cần đảm bảo có một bộ thử nghiệm thực sự tốt cũng chứa những khiếm khuyết hoàn toàn mới!

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.