Độ nhạy quy mô mạng nơ-ron


11

Ví dụ, giả sử chúng ta xây dựng một công cụ ước tính tuổi, dựa trên hình ảnh của một người. Bên dưới chúng tôi có hai người mặc com lê, nhưng người thứ nhất rõ ràng trẻ hơn người thứ hai.


(nguồn: tinytux.com )

Có rất nhiều tính năng ngụ ý điều này, ví dụ cấu trúc khuôn mặt. Tuy nhiên, tính năng đáng nói nhất là tỷ lệ kích thước đầu so với kích thước cơ thể :


(nguồn: wikidia.org )

Vì vậy, giả sử chúng tôi đã đào tạo một hồi quy CNN để dự đoán tuổi của người đó. Trong rất nhiều dự đoán về tuổi mà tôi đã thử, hình ảnh trên của đứa trẻ dường như đánh lừa những dự đoán khi nghĩ rằng nó già hơn, vì bộ đồ và có thể vì chúng chủ yếu dựa vào khuôn mặt:

Tôi đang tự hỏi làm thế nào một kiến ​​trúc CNN vanilla có thể suy ra tỷ lệ giữa đầu và thân?

So với một RCNN khu vực, có thể nhận được các hộp giới hạn trên cơ thể và đầu, liệu CNN vanilla luôn hoạt động kém hơn?

Ngay trước khi làm phẳng toàn cầu trong CNN vanilla (tức là ngay sau tất cả các kết luận), mỗi đầu ra có một lĩnh vực tiếp nhận tương ứng, cần có ý nghĩa về quy mô. Tôi biết rằng RCNN nhanh hơn khai thác điều này bằng cách đưa ra các đề xuất hộp giới hạn chính xác ở giai đoạn này, để tất cả các bộ lọc tích chập trước đó tự động đào tạo theo mọi quy mô.

Vì vậy, tôi sẽ nghĩ rằng CNN vanilla sẽ có thể suy ra tỷ lệ đầu với kích thước thân? Thê nay đung không? Nếu vậy, lợi ích duy nhất của việc sử dụng khung RCNN nhanh hơn để khai thác thực tế có thể đã được đào tạo trước về phát hiện người?


1
Bạn có biết chính xác nơi thất bại tuổi của bạn thất bại? Tại sao bạn nghĩ rằng đó là tỷ lệ kích thước đầu? Bạn đã nhìn vào đầu ra của các lớp giữa?
Aksakal

@Aksakal Tôi không nghĩ anh ấy đã thử nghiệm đào tạo một CNN. Từ những gì tôi đã hiểu, anh ấy đã thực hiện các thử nghiệm với các dịch vụ web hiện có: "Trong rất nhiều dự đoán về độ tuổi mà tôi đã thử [..]".
DeltaIV

Câu trả lời:


8

Đầu tiên, cảm ơn bạn đã đăng một câu hỏi rất thú vị.

Để trả lời ngắn gọn, một mạng lưới vanilla được đào tạo từ đầu 2 đến cuối để dự đoán tuổi từ một bức ảnh thường có xu hướng phân loại sai các hình ảnh như ảnh bạn đã đăng . Thứ hai, lưu ý rằng ước tính chính xác tuổi của một người là một nhiệm vụ gần như không thể 1 .

Sự khác biệt chính so với phương pháp đề xuất của bạn bằng cách sử dụng một số trình phát hiện đối tượng (có thể là RCNN, RCNN nhanh hơn, YOLO hoặc SSD) là bạn đang sử dụng thông tin khác nhau để huấn luyện các mô hình. CNN chỉ được đào tạo về hình ảnh và cần tự tìm ra tất cả các tính năng cần thiết. Rất có thể sẽ tìm thấy các đặc điểm khác nhau trên khuôn mặt, nhưng nó cũng sẽ dựa vào quần áo và có lẽ là các đặc điểm của cảnh (trẻ em có thể thường xuyên trong hình với một số đồ chơi, người lớn sẽ có nhiều khả năng trong môi trường văn phòng, v.v.). Các tính năng này sẽ không mạnh mẽ cho ví dụ mẫu của bạn.

Mặt khác, nếu bạn huấn luyện mạng để phát hiện rõ ràng các đối tượng là "thân" và "đầu", bạn đang cung cấp thêm thông tin rằng các đối tượng này rất quan trọng cho nhiệm vụ và do đó đơn giản hóa vấn đề 2 .

Trong khi cách tiếp cận phát hiện đầu và thân và sau đó đánh giá tỷ lệ kích thước của các hộp giới hạn nghe có vẻ thú vị, tôi có thể thấy một số trở ngại:

  1. Lấy dữ liệu: Tôi không biết về sự sẵn có của bộ dữ liệu lớn trong đó cả hai hộp tuổi và giới hạn sẽ có mặt.
  2. FOV không hoàn hảo: Trong hầu hết các hình ảnh (ví dụ cả hai ví dụ của bạn), mọi người không được hiển thị toàn bộ. Bạn sẽ phải đối phó với thực tế là các hộp giới hạn thân sẽ không luôn luôn hoàn hảo chỉ vì một phần của người không có trong hình ảnh và mạng sẽ phải đoán phần lớn bị thiếu (và các hộp giới hạn sự thật mặt đất sẽ hầu hết có khả năng không nắm bắt thông tin này). Ngoài ra, các trình phát hiện đối tượng đã nói ở trên không phải lúc nào cũng xử lý các dự đoán của các đối tượng một phần đúng cách. Điều này có thể giới thiệu quá nhiều tiếng ồn trong mô hình.
  3. Nhiều tư thế khác nhau: Tỷ lệ thân trên đầu sẽ rất khác nhau đối với những người nhìn từ phía trước và từ phía bên.
  4. Người lớn: Có vẻ như tỷ lệ này hoạt động tốt để dự đoán độ tuổi từ 0-21, nhưng tôi không thấy nó giúp dự đoán độ tuổi của người lớn như thế nào (tôi cho rằng tỷ lệ này không thay đổi ở độ tuổi cao hơn).

Tất cả những vấn đề này cho thấy cách tiếp cận tỷ lệ từ đầu đến thân cũng sẽ không hoạt động hoàn hảo, mặc dù nó có thể mạnh hơn đối với ví dụ cụ thể của bạn.

Tôi đoán cách tốt nhất để thực hiện nhiệm vụ này là 1) phát hiện khuôn mặt, 2) chỉ dự đoán tuổi từ cây trồng trên khuôn mặt (loại bỏ thông tin có khả năng gây hiểu lầm). Lưu ý rằng một số kiến ​​trúc giống R-CNN sử dụng ROI-pooling có thể được đào tạo để thực hiện kết thúc 2 đầu này.


1 Ngay cả khi sử dụng các phương pháp y tế rất tinh vi (được cho là nhiều thông tin hơn nhiều so với ảnh của người đó), điều này là không thể thực hiện chính xác. Xem chủ đề Quora này để biết thêm thông tin .

2 Kiểm tra bài viết Các vấn đề kiến ​​thức: Tầm quan trọng của thông tin trước để tối ưu hóa cho một ví dụ về cách cung cấp một số kiến ​​thức trung gian về nhiệm vụ có thể đơn giản hóa rất nhiều việc học.


8

CNN là một lớp mô hình quá lớn, để trả lời câu hỏi này. LeNet, AlexNet, ZFNet và VGG16 sẽ hoạt động rất khác so với GoogLeNet, được xây dựng đặc biệt để làm hầu hết những gì R-CNN làm, với kiến ​​trúc CNN (bạn có thể biết GoogLeNet với tên Inception, mặc dù nói đúng là Inception đơn vị cơ bản (mạng con) mà GoogLeNet được xây dựng). Cuối cùng, ResNets sẽ hành xử khác đi. Và tất cả các kiến ​​trúc này không được xây dựng để phân loại các lớp tuổi, mà là 1000 lớp ImageNet, không chứa các lớp tuổi cho con người. Người ta có thể sử dụng học chuyển(nếu bạn có đủ hình ảnh đào tạo) để đào tạo một trong những mô hình được đào tạo rộng rãi ở trên và xem cách chúng thực hiện. Tuy nhiên, nói chung, đặc biệt là các kiến ​​trúc cũ (giả sử VGG16) có một thời gian khó học "các tính năng toàn cầu" đòi hỏi phải tìm hiểu về "đầu" (đã là một tính năng phức tạp), "thân" (một tính năng phức tạp khác) và tỷ lệ (cũng yêu cầu hai tính năng này trong một mối quan hệ không gian nhất định). Loại công cụ này là những gì Capsule Networks nên có thể làm.

Convnets được sinh ra để làm điều ngược lại: nhạy cảm với các tính năng cục bộ và tương đối không nhạy cảm với vị trí / quy mô tương đối của chúng. Một Convnet tốt sẽ nhận ra "con mèo trắng" cho dù bức ảnh là ảnh cận cảnh hay ảnh Mỹ. Kết hợp các lớp chập (nhạy cảm với các tính năng cục bộ) với các lớp gộp (loại bỏ một phần độ nhạy đối với sự thay đổi tỷ lệ hoặc dịch của hình ảnh) mang lại cho bạn một kiến ​​trúc mà ở dạng cơ bản nhất của nó không tuyệt vời khi học loại không gian mối quan hệ giữa các đối tượng mà bạn đang tìm kiếm. Có một ví dụ ở đâu đó (nhưng tôi không thể tìm thấy nó nữa), sau khi chia một hình ảnh con mèo trong các ô không chồng chéo hình chữ nhật khác nhau và đặt chúng lại với nhau theo thứ tự ngẫu nhiên, CNN sẽ tiếp tục xác định hình ảnh làcat. Điều này chỉ ra rằng CNN nhạy cảm hơn với các tính năng cục bộ (kết cấu hoặc một cái gì đó tương tự) so với mối quan hệ không gian giữa các tính năng cấp cao. Xem thêm giấy mạng Capsule cho một số thảo luận về điều này. Hinton cũng cho thấy một ví dụ về điều này trong một video về giới hạn của convnets .

Tôi đoán là một trong những kiến ​​trúc gần đây sẽ có khả năng hoàn hảo (được cung cấp đủ dữ liệu) của những người đàn ông sành điệu từ trẻ em, nhưng không phải vì "ngưỡng" về mối quan hệ số liệu giữa các tính năng cấp cao như "đầu" và "thân" . Nó sẽ học được một số tính đều đặn thống kê, có thể hoàn toàn không được chú ý đối với con người, phân tách hình ảnh người lớn với hình ảnh trẻ em trong tập huấn luyện.


Tôi đánh giá cao câu trả lời của bạn, nhưng, tôi gặp khó khăn khi đồng ý. Các kiến ​​trúc RCNN về cơ bản có cùng cấu trúc của các bộ lọc như các convnets đối tượng, ví dụ VGG và Resnet. Và vì RCNN có thể phát hiện tỷ lệ và vị trí tương đối, do đó VGG và Resnet cũng có thể phát hiện quy mô. Tuy nhiên, kiến ​​trúc RCNN dựa trên các đề xuất hộp, trong đó họ thực hiện hàng nghìn mỗi hình ảnh, sau đó mỗi đề xuất hộp được đánh giá. Vì vậy, có vẻ như nếu tôi kết hợp ít nhất một số đề xuất hộp này, một CNN vanilla sẽ phát hiện quy mô tốt hơn. Tôi chỉ không chắc có cần thiết phải làm như vậy không.
Alex R.

RCNN không phải là CNN. Bạn không chỉ bỏ lỡ tìm kiếm chọn lọc cho các hộp giới hạn, mà bạn còn bỏ lỡ các giai đoạn hồi quy tuyến tính SVM và hộp giới hạn. Ngoài ra, có một sự khác biệt lớn giữa khả năng phát hiện thang đo của AlexNet (là CNN được sử dụng trong bài viết RCNN gốc), hoặc VGG, và khả năng của GoogLeNet hoặc ResNet: GoogLeNet được phát triển chính xác để làm những gì RCNN làm. Tôi nghĩ rằng cả GoogLeNet và ResNet đều có thể phân loại độ tuổi, nhưng không có cách nào để biết liệu họ có làm điều đó hay không bằng cách sử dụng một tính năng có ý nghĩa với chúng tôi (tỷ lệ đầu người) hoặc bằng cách tìm một số thống kê 1 /
DeltaIV

2 / thường xuyên mà một con người sẽ không bao giờ nhận thấy. Tôi khuyên bạn nên thử nghiệm và thử, nhưng thật không may, chỉ xây dựng cơ sở dữ liệu hình ảnh sẽ là một dự án nghiên cứu (trừ khi bạn làm việc trong một công ty thời trang).
DeltaIV

1
Tôi xin lỗi về sự hiểu lầm. Tôi biết có 20 kiến ​​trúc RCNN khác nhau, mỗi kiến ​​trúc khác đều lỗi thời.
Alex R.

1
blog.piekniewski.info/2016/12/29/can-a-deep-net-see-a-cat Ngoài ra, một vấn đề khác, nhưng vẫn liên quan đến kết hợp kết cấu và từ các nhà nghiên cứu đáng kính hơn, arxiv.org/pdf/ 1703.06857
DeltaIV

0

Vâng, tất cả phụ thuộc vào cách dữ liệu của bạn được xây dựng. Từ kinh nghiệm của tôi, mạng lưới thần kinh có xu hướng giải thích đơn giản nhất. Và suy ra tuổi từ trang phục thực sự đơn giản hơn so với sử dụng tỷ lệ giữa đầu và cơ thể. Nếu bạn có thể mở rộng tập dữ liệu của mình, hãy nhớ rằng CNN của bạn sẽ hoạt động như mong đợ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.