Làm thế nào để chuẩn bị / tăng cường hình ảnh cho mạng lưới thần kinh?


41

Tôi muốn sử dụng một mạng lưới thần kinh để phân loại hình ảnh. Tôi sẽ bắt đầu với CaffeNet được đào tạo trước và đào tạo nó cho ứng dụng của mình.

Làm thế nào tôi nên chuẩn bị các hình ảnh đầu vào?

Trong trường hợp này, tất cả các hình ảnh là của cùng một đối tượng nhưng có các biến thể (nghĩ: kiểm soát chất lượng). Chúng ở các tỷ lệ / độ phân giải / khoảng cách / điều kiện ánh sáng khác nhau (và trong nhiều trường hợp tôi không biết tỷ lệ). Ngoài ra, trong mỗi hình ảnh có một khu vực (được biết) xung quanh đối tượng quan tâm cần được bỏ qua bởi mạng.

Tôi có thể (ví dụ) cắt trung tâm của mỗi hình ảnh, được đảm bảo chứa một phần của đối tượng quan tâm và không có khu vực nào bị bỏ qua; nhưng có vẻ như nó sẽ vứt bỏ thông tin và kết quả sẽ không thực sự giống nhau (có thể là 1,5 lần thay đổi).

Tăng cường dữ liệu

Tôi đã nghe nói về việc tạo thêm dữ liệu đào tạo bằng cách cắt ngẫu nhiên / gương / vv, có phương pháp chuẩn nào cho việc này không? Bất kỳ kết quả về mức độ cải thiện nó tạo ra độ chính xác phân loại?

Câu trả lời:


35

Ý tưởng với Mạng nơ-ron là họ cần xử lý trước rất ít vì việc nâng hạng nặng được thực hiện bằng thuật toán, nhiệm vụ phụ trách tìm hiểu các tính năng.

Những người chiến thắng của Data Science Bowl 2015 có một bài viết tuyệt vời về cách tiếp cận của họ, vì vậy hầu hết nội dung câu trả lời này được lấy từ: Phân loại sinh vật phù du với mạng lưới thần kinh sâu . Tôi đề nghị bạn đọc nó, đặc biệt là phần về tiền xử lý và tăng dữ liệu .

- Thay đổi kích thước hình ảnh

Đối với các kích cỡ, độ phân giải hoặc khoảng cách khác nhau, bạn có thể làm như sau. Bạn chỉ có thể thay đổi cạnh lớn nhất của mỗi hình ảnh theo một độ dài cố định.

Một lựa chọn khác là sử dụng openCV hoặc scipy. và điều này sẽ thay đổi kích thước hình ảnh để có 100 cols (chiều rộng) và 50 hàng (chiều cao):

resized_image = cv2.resize(image, (100, 50)) 

Tuy nhiên, một tùy chọn khác là sử dụng mô-đun scipy, bằng cách sử dụng:

small = scipy.misc.imresize(image, 0.5)

- Tăng dữ liệu

Dữ liệu Augmented luôn cải thiện hiệu suất mặc dù số lượng phụ thuộc vào bộ dữ liệu. Nếu bạn muốn tăng dữ liệu để tăng kích thước của tập dữ liệu một cách giả tạo, nếu bạn áp dụng trường hợp này (ví dụ: không áp dụng nếu là hình ảnh của ngôi nhà hoặc người mà nếu bạn xoay chúng 180 độ thì họ sẽ mất tất cả thông tin nhưng không phải nếu bạn lật chúng như một tấm gương):

  • xoay: ngẫu nhiên với góc giữa 0 ° và 360 ° (đồng nhất)
  • dịch: ngẫu nhiên với sự thay đổi giữa -10 và 10 pixel (đồng nhất)
  • thay đổi tỷ lệ: ngẫu nhiên với hệ số tỷ lệ giữa 1 / 1.6 và 1.6 (thống nhất log)
  • lật: có hoặc không (bernoulli)
  • cắt: ngẫu nhiên với góc giữa -20 ° đến 20 ° (đồng nhất)
  • kéo dài: ngẫu nhiên với hệ số kéo dài từ 1 / 1.3 đến 1.3 (thống nhất log)

Bạn có thể xem kết quả trên hình ảnh bát dữ liệu Khoa học.

Hình ảnh được xử lý trước

Hình ảnh được xử lý trước

phiên bản tăng cường của cùng một hình ảnh

nhập mô tả hình ảnh ở đây

-Các kỹ thuật khác

Chúng sẽ xử lý các thuộc tính hình ảnh khác như ánh sáng và đã liên quan đến thuật toán chính giống như một bước xử lý trước đơn giản. Kiểm tra danh sách đầy đủ trên: Hướng dẫn UFLDL


1
Màu sắc cũng đáng để xem xét để tăng dữ liệu.
David C. Giám mục

Bạn cũng có thể chia sẻ mã cho vòng quay và cắt vv ?? @wacax
Arsenal

Các bạn có thể sử dụng một gói như máy ảnh để tăng dữ liệu.
Ricardo Cruz

2
Đối với bất kỳ ai có vấn đề với việc nhập mô-đun scipy.misc. Bạn cần phải import scipy.misc. stackoverflow.com/questions/13531593/ cường
eleijonmarck

Đối với thay đổi kích thước hình ảnh, phương pháp nào thường được sử dụng ở trạng thái của các phương thức nghệ thuật, ví dụ: phương pháp được sử dụng trên ImageNet?
HelloGoodbye

2

Trong khi câu trả lời của wacax là đầy đủ và thực sự giải thích, tôi muốn thêm một vài điều trong trường hợp bất cứ ai vấp phải câu trả lời này.

Trước hết, hầu hết các scipy.mischình ảnh chức năng có liên quan ( imread, imsave, imresizeERC) đã trở nên phản đối ủng hộ hoặc ImageIO hoặc skimage .

Thứ hai, tôi rất muốn giới thiệu thư viện python imgaug cho bất kỳ nhiệm vụ gia tăng nào. Nó thực sự dễ sử dụng và có hầu như tất cả các kỹ thuật tăng cường mà bạn có thể muốn sử dụng.

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.