2013-01-17 37 views
8

Tôi muốn nhận dạng Phương tiện (Ô tô, Xe đạp, vv) từ một hình ảnh tĩnh. Tôi đã nghĩ đến việc sử dụng SURF để giúp tôi có được các mốc hữu íchmô tả và sau đó đào tạo mạng MLP (Multi Layer Perceptron) Neural. Tuy nhiên tôi không biết đầu vào mạng Neural là gì và đầu ra của nó sẽ là gì để tôi có thể xác định phần nào của hình ảnh một chiếc xe (có lẽ là một hình chữ nhật được vẽ xung quanh nó). Tôi biết rằng SURF có thể trả lại các điểm khóa hữu ích trong hình ảnh cùng với các mô tả của chúng (tôi đã làm điều này). Các điểm chính có các góc là và mỗi điểm chính tương ứng với 64 hoặc 128 Vector dài làm Trình mô tả. Điều tôi không biết chính xác là những điểm chính này là gì và cách chúng có thể được sử dụng như một đầu vào cho Mạng thần kinh.OpenCV Kết hợp SURF với mạng nơron

Tôi đang sử dụng OpenCV với Python.

Tôi mới sử dụng SURF và các phương pháp trích xuất tính năng khác. Bất kỳ trợ giúp nào liên quan đến điều này sẽ rất tốt.

Trả lời

8

Nếu bạn sử dụng các tính năng lướt web, thats có nghĩa là một phao đặt ra vector [128] hoặc [64] phụ thuộc vào bạn lướt web cấu hình bạn sẽ được thiết lập mạng thần kinh như sau

-Tạo một cơ sở dữ liệu với các mô hình:

-bikes 
-cars 
-autobus 
-truck 

-Tham diferents ảnh của từng loại đối tượng như 10 ảnh diferents mô hình tắt ô tô, 10 ảnh diferents mô hình tắt xe đạp 10 ảnh của differents mô hình tắt xe tải ... vv, mỗi ảnh tắt từng đối tượng lớp trích xuất các vectơ tính năng lướt của nó.

-Mỗi loại đối tượng sẽ đại diện cho một lớp học của đối tượng trong mạng neural-net như thế này;

-car ;object class 1 =binary representaation in 4 bits= 0 0 0 1 
-bikes ;obejct class 2 =binary representaation in 4 bits= 0 0 1 0 
-truck ;obejct class 3 =binary representaation in 4 bits= 0 0 1 1 
-ball ;obejct class 4 =binary representaation in 4 bits= 0 1 0 0 

chút -Mỗi trong repesentacion nhị phân sẽ được tương ứng với một tế bào thần kinh trong lớp đầu ra của mạng và đại diện cho một lớp các đối tượng được công nhận

Bây giờ cấu hình của mạng thần kinh sẽ được dựa trên kích thước của vector tính năng và số loại đối tượng mà bạn muốn nhận ra theo cách này;

Các Số nuerons trong đầu vào lớp; 64 hoặc 128 phụ thuộc vào kích thước tắt lướt vector đặc trưng mà bạn đã cấu hình và sử dụng

Số nuerons trong đầu ra lớp trong thần kinh-net sẽ số lượng các lớp đối tượng mà bạn muốn nhận ra trong ví dụ này 4

Hàm kích hoạt neecesary cho mỗi nơron là hàm sigmoid hoặc tanh (http://www.learnartificialneuralnetworks.com/), vì các đặc tính lướt được biểu diễn bằng số float, nếu bạn sử dụng fetaures quái dị hoặc một bộ mô tả tính năng địa phương nhị phân khác (Brisk, ORB, BRief) thì bạn sẽ sử dụng một hàm kích hoạt nhị phân cho mỗi nơron như hàm bước o sigm fun ction

Các thuật toán sử dụng để huấn luyện mạng là lan truyền ngược

trước khi tiếp tục, bạn cần phải thiết lập và chuẩn bị dữ liệu thiết lập để đào tạo mạng lưới thần kinh

dụ

-all feature vector extracted from picture belong a car will be label or asociated to class 1    
-all feature vector extracted from picture belong a bike will be label or asociated to class 2 
-all feature vector extracted from picture belong a truk will be label or asociated to class 3 
-all feature vector extracted from picture belong a ball will be label or asociated to class 4 

ví dụ này bạn sẽ có 4 tế bào thần kinh ở lớp ngoài và 128 0r 64 tế bào thần kinh trong lớp đầu vào.

-Các đầu ra của mạng neural trong chế độ nhận dạng sẽ là các tế bào thần kinh có giá trị cao nhất của 4 nuerons này.

việc sử dụng bình thường của nó trong khoảng thời gian [0,1] cho tất cả các tính năng trong tập dữ liệu, trước khi bắt đầu giai đoạn đào tạo, bởi vì mạng lưới thần kinh xuất hiện là xác suất có vectơ đầu vào một lớp đối tượng trong tập dữ liệu.

dữ liệu thiết lập để đào tạo mạng đã được chia như sau:

-70% off the data used to train 
-15% off the data used to validate the network arquitecture (number of neurons in the hidden layyer) 
-15% off the data used to test the final network 

khi đào tạo mạng lưới thần kinh, tiêu chí dừng là tỷ lệ recognittion, khi nó là gần 85-90%

Tại sao sử dụng net neural chứ không phải máy svm, máy svm hoạt động tốt, nhưng nó không thể tạo bản đồ phân lớp tốt nhất không có vấn đề phân loại tuyến tính như thế này hoặc khi bạn có nhiều loại đối tượng hoặc loại đối tượng là aprecciate trong kết quả giai đoạn nhận dạng

tôi khuyến cáo bạn đọc một số về lý thuyết mạng thông minh để hiểu cách họ làm việc

http://link.springer.com/chapter/10.1007%2F11578079_10

opencv có lớp học máy cho lưới thần kinh MLP mô-đun

hy vọng điều này có thể giúp bạn

+0

Cảm ơn bạn đã giải thích cho tôi cách tôi có thể sử dụng Mạng thần kinh để nhận dạng đối tượng. Tuy nhiên, trong kịch bản của tôi có thể phải đối phó với các đối tượng tương tự gần nhau (ví dụ: hai taxi liền kề nhau). Tôi cần có khả năng Nhận dạng riêng chúng. Có cách nào mà Neural Networks có thể giúp tôi với điều này không? Tôi cảm thấy rằng việc sử dụng kỹ thuật mà bạn đã đề cập sẽ cho phép tôi nhận ra Xe nhưng không tách riêng chúng (Giống như vẽ hình chữ nhật xung quanh hai xe taxi) –

2

Đề xuất của tôi là quan sát BOW thay vì mạng thần kinh. Xem ở đây ví dụ về sử dụng SURF với mô hình Bag Of Words để phân loại đối tượng (first part, second part). Để cải thiện hiệu suất phân loại, bạn có thể thử thay thế Phân loại Naive Bayes bằng SVM. Ngoài ra, tác giả cung cấp tốt source code example. Tôi nghĩ rằng đó là một điểm tốt để bắt đầu.

+0

Tôi đã kiểm tra kỹ thuật BOW mà bạn chỉ định. Nó có vẻ khá hứa hẹn, tuy nhiên tôi đã tìm kiếm một quá trình học tập có thể được lưu và nạp từ đĩa (học tập tiếp tục) như là trường hợp với mạng thần kinh. Tôi đã quản lý để trích xuất các tính năng mô tả bằng cách sử dụng lướt web, dữ liệu là đa chiều ('N' keypoints vs 128 feature vectors) câu hỏi mới của tôi là làm thế nào tôi có thể nhập dữ liệu đa chiều vào mạng Neural? –

2

Một cách dễ dàng để separte đối tượng phát hiện là chạy một máy dò đường viền trong hình ảnh đầu vào như that.

Sau khi nó bạn có thể sử dụng x, coords y từ mỗi cộng điểm then chốt cho mỗi vector đặc trưng công nhận bởi các mạng thần kinh, và kiểm tra có bao nhiêu trong số những điểm then chốt là ở bên mỗi đường viền của mỗi đối tượng,

Đồng thời nó cho phép bạn đặt một ngưỡng để xác nhận một phát hiện xe đúng, ví dụ nếu bạn có 2 xe taxi, 2 đường viền thuộc về mỗi xe và kiểm tra xem có bao nhiêu ponits chính nằm trong mỗi đường bao;

  • đường viền thuộc taxi 1 có 20 ponits chìa khóa bên trong
  • đường viền thuộc taxi 1 có 5 ponits chìa khóa bên trong

bạn có thể cho như taxi 1 o xe 1 là đối tượng được công nhận

On thời gian bạn có một đối tượng xác nhận hợp lệ và đường bao của nó, bạn có thể calcuialte hộp xếp chồng đã đóng đối tượng

Một cách khác để làm điều đó là cho mỗi khóa đào tạo hình ảnh trích xuất đường nét của nó thuộc về từng đối tượng, tính toán của nó bounding hộp sử dụng này như hình ảnh tinh khiết để trích xuất các tính năng và làm cho nó để al picures en trainin đặt

Các vấn đề liên quan