32

Tôi hiểu cách mạng nơron hoạt động, nhưng nếu tôi muốn sử dụng chúng để xử lý hình ảnh như nhận dạng ký tự thực tế, tôi không thể hiểu làm cách nào để nhập dữ liệu hình ảnh vào mạng neural.Cách nhập hình ảnh vào mạng thần kinh?

Tôi có một hình ảnh rất lớn về một bức thư A. Có lẽ tôi nên cố gắng để có được một số thông tin/thông số kỹ thuật từ hình ảnh và sau đó sử dụng một vector của các giá trị của đặc điểm kỹ thuật đó? Và họ sẽ là đầu vào cho mạng neural?

Ai đã làm một việc như vậy, bạn có thể giải thích cách thực hiện việc này không?

+0

Bạn đã có neuronet chưa? Nếu không - đây là một câu hỏi lạ. Nếu có - đăng giao diện ít nhất. –

+1

Nó không phải là một câu hỏi lạ. Trên thực tế, nếu tôi có một giao diện, sau đó nó có nghĩa là tôi thực hiện đầu tiên một quyết định làm thế nào tôi sẽ đầu vào hình ảnh vào mạng neuro. Câu hỏi đặt ra là - tôi có thể nhập dữ liệu hình ảnh, như chữ A vào một mạng neuro, ngay cả khi nó rất lớn hay nhỏ, hoặc tôi nên chia nó thành một số tham số, để xác định duy nhất chữ cái A! – Dzen

+0

Nếu tôi nên chia nhỏ thông số, loại thông số nào tôi nên sử dụng? – Dzen

Trả lời

7

Tên cho sự cố bạn đang cố giải quyết là "feature extraction". Đó là quyết định không tầm thường và là một chủ đề nghiên cứu tích cực.

Cách ngây thơ để thực hiện điều này đơn giản là ánh xạ từng pixel của hình ảnh tới một nơron đầu vào tương ứng. Rõ ràng, điều này chỉ hoạt động cho các hình ảnh có cùng kích thước và thường có hiệu quả hạn chế.

Ngoài ra, có nhiều thứ bạn có thể làm ... Bộ lọc Gabor, các tính năng giống Haar, PCA và ICA, các tính năng thưa thớt, chỉ để nêu tên một vài ví dụ phổ biến. Lời khuyên của tôi là lấy một cuốn sách giáo khoa trên các mạng thần kinh và nhận dạng mẫu hoặc, đặc biệt là nhận dạng ký tự quang học.

+0

bạn có thể đề xuất một số sách hay về OCR không? – Dzen

+0

Không thực sự là chuyên môn của tôi, nhưng tìm kiếm nhanh chóng bật lên "Phương pháp trích xuất tính năng để nhận dạng ký tự quang học" của Roman Yampolskiy, có vẻ như nó có thể chứa những gì bạn đang theo dõi. –

24

Giải pháp dễ nhất là chuẩn hóa tất cả hình ảnh của bạn, cả về đào tạo và thử nghiệm, để có cùng độ phân giải. Ngoài ra, nhân vật trong mỗi hình ảnh phải có cùng kích thước. Bạn cũng nên sử dụng hình ảnh màu xám, vì vậy mỗi pixel sẽ cung cấp cho bạn chỉ một số. Sau đó, bạn có thể sử dụng từng giá trị pixel làm một đầu vào cho mạng của mình. Ví dụ: nếu bạn có hình ảnh có kích thước 16x16 pixel, mạng của bạn sẽ có 16 * 16 = 256 nơron đầu vào. Tế bào thần kinh đầu tiên sẽ thấy giá trị của điểm ảnh tại (0,0), điểm ảnh thứ hai tại (0,1), v.v. Về cơ bản, bạn đặt các giá trị hình ảnh vào một vector và nạp vectơ này vào mạng. Điều này nên đã làm việc.

Bằng cách trích xuất các tính năng đầu tiên (ví dụ: cạnh) từ hình ảnh và sau đó sử dụng mạng trên các tính năng đó, bạn có thể tăng tốc độ học tập và cũng giúp phát hiện mạnh mẽ hơn. Những gì bạn làm trong trường hợp đó là kết hợp kiến ​​thức trước. Để nhận dạng ký tự, bạn biết một số tính năng liên quan. Vì vậy, bằng cách giải nén chúng như là một bước tiền xử lý, mạng không phải học các tính năng đó. Tuy nhiên, nếu bạn cung cấp sai, tức là các tính năng không liên quan, mạng sẽ không thể tìm hiểu hình ảnh -> ánh xạ ký tự.

+1

Các bước của tôi để giải quyết câu hỏi này có tốt không? 1. binarize hình ảnh. 2. phân đoạn. tìm các phần được kết nối của hình ảnh. có thể đang sử dụng đường nét. 3. đối với mỗi phân khúc, hãy tiến hành riêng biệt từ các phân khúc khác. 3.1 trích xuất một số thông tin từ phân đoạn hình ảnh. 3.2 so sánh với một số mẫu hoặc nhập nó vào mạng neuro. vì vậy tôi có một số câu hỏi. 1. nếu tôi phân đoạn hình ảnh và tôi nhận được một chữ cái "i" ở đó, dấu chấm sẽ được tách riêng khỏi phân đoạn. Vậy làm thế nào để xử lý tình huống này? Có thể thêm một số trường hợp đặc biệt. 2. Tôi có nên thay đổi kích thước phân khúc nếu nó quá lớn hoặc quá nhỏ không? – Dzen

+0

Tôi có thể nhập các hình ảnh có kích thước khác nhau vào mạng neuro của tôi không? Tôi không nghĩ rằng tôi có thể, nhưng tôi không chắc chắn. Vì vậy, hình ảnh có thể chứa một số chữ cái có kích thước khác nhau, làm thế nào để xử lý nó? – Dzen

+3

Các bước xử lý trước của bạn nghe như thế này có thể hoạt động, tuy nhiên, tôi khuyên bạn nên bắt đầu với những gì tôi đã đề xuất trong đoạn đầu tiên. Nó xuất hiện với tôi rằng bạn không có nhiều kinh nghiệm với các mạng thần kinh hoặc nhận dạng ký tự. Vì vậy, để có được một cảm giác cho những gì làm việc và làm thế nào nó hoạt động, bạn nên bắt đầu với một trường hợp đơn giản. Thêm quá nhiều bước cùng một lúc sẽ làm tăng cơ hội của một số sai lầm và không có ý tưởng thực sự về những gì mong đợi từ từng bước riêng lẻ, bạn sẽ gặp khó khăn khi gỡ lỗi mã của mình. – ahans

1

Bạn có thể sử dụng làm đầu vào pixel thực tế. Đây là lý do tại sao đôi khi nó là thích hợp hơn để sử dụng độ phân giải nhỏ hơn của hình ảnh đầu vào.

Những điều tốt đẹp về ANN là họ là bằng cách nào đó có khả năng lựa chọn tính năng (bỏ qua các điểm ảnh không quan trọng bằng cách gán trọng lượng gần như bằng không đối với những nút đầu vào)

0

Dưới đây là một số bước sau: đảm bảo màu sắc của bạn/hình ảnh tỷ lệ màu xám là một hình ảnh nhị phân. Để thực hiện việc này, hãy thực hiện một số thao tác thresholding. sau đó một số loại tính năng khai thác. Đối với OCR/NN thứ ví dụ này có thể giúp đỡ, mặc dù trong ruby: https://github.com/gbuesing/neural-net-ruby/blob/master/examples/mnist.rb

2

Tất cả những nhận xét về việc áp dụng NNS để hình ảnh được bao phủ trong 2002 review paper của chúng tôi (Feature dựa, điểm ảnh dựa, bất biến quy mô, vv)

Thách thức lớn nhất của bạn là cái gọi là 'lời nguyền kích thước'.

Tôi sẽ so sánh hiệu suất của NN với hiệu suất của máy vectơ hỗ trợ (khó sử dụng hạt nhân nào).

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