Mục lục bài viết

Kinh Nghiệm Hướng dẫn Mask RCNN là gì 2022

Cập Nhật: 2022-02-10 01:24:04,You Cần kiến thức và kỹ năng về Mask RCNN là gì. Quý khách trọn vẹn có thể lại phản hồi ở cuối bài để Admin đc lý giải rõ ràng hơn.

739

0

Bài 11: Object detection với Faster R-CNN

| Posted in Deep Learning cơ bản

Nội dung

Tóm lược đại ý quan trọng trong bài

  • Bài 11: Object detection với Faster R-CNN
  • Bài toán object detection
  • Faster R-CNN
  • R-CNN (Region with CNN feature)
  • Faster R-CNN
  • Ứng dụng object detection

  • Bài toán object detection
  • Faster R-CNN
    • R-CNN (Region with CNN feature)
    • Fast R-CNN
    • Faster R-CNN
  • Ứng dụng object detection

Bài toán object detection

Trong bài 7 tôi đã trình làng về ứng dụng quy mô CNN cho bài toán phân loại ảnh, tuy nhiên những ảnh input của bài toán phân loại chỉ gồm có một đối tượng người tiêu dùng rõ ràng như chữ số hay là một trong những loài hoa.

Ví dụ ảnh trong bài toán phân loại ảnh

Tuy nhiên là ảnh trong môi trường sống đời thường thường thì thì không riêng gì có chứa 1 đối tượng người tiêu dùng mà thường gồm có thật nhiều những đối tượng người tiêu dùng. Ta quan tâm đến vị trí của từng đối tượng người tiêu dùng trong ảnh. Bài toán như vậy được gọi là: object detection.

Ví dụ output của object detection. Nguồn:
data-sci.info/2017/06/27/run-faster-rcnn-tensorflow-detection-api/

Bài toán object detection có input là ảnh màu và output là vị trí của những đối tượng người tiêu dùng trong ảnh. Ta thấy nó gồm có 2 bài toán nhỏ:

  • Xác định những bounding box (hình chữ nhật) quanh đối tượng người tiêu dùng.
  • Với mỗi bouding box thì nên phân loại xem đấy là đối tượng người tiêu dùng gì (chó, ngựa, xe hơi,) với bao nhiêu Phần Trăm chứng minh và khẳng định.

Việc lựa chọn có bao nhiêu loại đối tượng người tiêu dùng thì tùy từng bài toán mà ta đang xử lý và xử lý.

Bạn tự hỏi liệu quy mô CNN có xử lý và xử lý được bài toán object detection không? Vấn đề đó là vì không biết trước có bao nhiêu đối tượng người tiêu dùng trong ảnh, nên không thiết kế được output layer hiệu suất cao => quy mô CNN truyền thống cuội nguồn không xử lý và xử lý được => R-CNN (regional convolutional neural network) Ra đời.

Faster R-CNN

R-CNN (Region with CNN feature)

Ý tưởng thuật toán R-CNN khá đơn thuần và giản dị

  • Bước 1: Dùng Selective Search algorithm để lấy ra khoảng chừng 2000 bounding box trong input mà có kĩ năng chứa đối tượng người tiêu dùng.
  • Bước 2: Với mỗi bounding box ta xác lập xem nó là đối tượng người tiêu dùng nào (người, xe hơi, xe đạp điện,)

Selective search algorithm

Input của thuật toán là ảnh màu, output là khoảng chừng 2000 region proposal (bounding box) mà có kĩ năng chứa những đối tượng người tiêu dùng.

Đầu tiên ảnh được segment qua thuật toán Graph Based Image Segmentation, vì thuật toán nhờ vào lý thuyết đồ thị và không vận dụng deep learning nên mình không lý giải rõ ràng, bạn nào muốn tìm hiểu đọc theo link ở trên.

Output sau khoản thời hạn tiến hành graph based image segmentation. Nguồn:
learnopencv/selective-search-for-object-detection-cpp-python/

Nhận xét: Ta không thể dùng mỗi màu trong output để làm 1 region proposal được vì:

  • Mỗi đối tượng người tiêu dùng trong ảnh trọn vẹn có thể chứa nhiều hơn thế nữa 1 màu.
  • Các đối tượng người tiêu dùng bị che mất một phần như cái đĩa dưới cái chén không thể xác lập được.

=> Cần nhóm những vùng màu với nhau để làm region proposal.

Tiếp theo, những vùng màu được nhóm với nhau dựa vào độ tương tự về sắc tố, hướng gradient, kích thước,

Cuối cùng những region proposal được xác lập dựa vào những nhóm vùng màu.

Tài liệu cho bạn nào muốn đọc thêm ở đây.

Phân loại region proposal

Bài toán trở thành phân loại ảnh cho những region proposal. Do thuật toán selective search cho tới 2000 region proposal nên có thật nhiều region proposal không chứa đối tượng người tiêu dùng nào. Vậy nên ta cần thêm một lớp background (không chứa đối tượng người tiêu dùng nào). Ví dụ như hình dưới ta có 4 region proposal, ta sẽ phân loại mỗi bounding box là người, ngựa hay background.

Nguồn: Rich feature hierarchies for accurate object detection and semantic segmentation

Sau đó những region proposal được resize lại về cùng kích thước và tiến hành transfer learning với feature extractor, tiếp sau đó những extracted feature được cho vào thuật toán SVM để phân loại ảnh.

Bên cạnh đó thì extracted feature cũng rất được vốn để làm tham gia đoán 4 offset values cho từng cạnh. Ví dụ như khi region proposal chứa người nhưng chỉ có phần thân và nửa mặt, nửa mặt còn sót lại không tồn tại trong region proposal đó thì offset value trọn vẹn có thể giúp mở rộng region proposal để lấy được toàn bộ người.

Vấn đề với R-CNN

Hồi mới xuất hiện thì thuật toán hoạt động giải trí và sinh hoạt tương đối tốt cho với những thuật toán về computer vision trước đó nhờ vào CNN, tuy nhiên nó vẫn đang còn quá nhiều hạn chế:

  • Vì với mỗi ảnh ta cần phân loại những class cho 2000 region proposal nên thời hạn train rất mất thời hạn.
  • Không thể vận dụng cho real-time thì mỗi ảnh trong test set mất tới 47s để xử lý.

Fast R-CNN

Khoảng 1.5 năm tiếp sau đó, Fast R-CNN được trình làng bới cùng tác giải của R-CNN, nó xử lý và xử lý được một số trong những hạn chế của R-CNN để cải tổ vận tốc.

Tương tự như R-CNN thì Fast R-CNN vẫn dùng selective search để lấy ra những region proposal. Tuy nhiên là nó không tách 2000 region proposal thoát khỏi ảnh và tiến hành bài toán image classification cho từng ảnh. Fast R-CNN cho toàn bộ tấm hình vào ConvNet (một vài convolutional layer + max pooling layer) để tạo ra convolutional feature map.

Sau đó những vùng region proposal được lấy ra tương ứng từ convolutional feature map. Tiếp này được Flatten và thêm 2 Fully connected layer (FCs) để tham gia đoán lớp của region proposal và giá trị offset values của bounding box.

Nguồn: arxiv/pdf/1504.08083.pdf

Tuy nhiên là kích thước của những region proposal rất khác nhau nên lúc Flatten sẽ ra những vector có kích thước rất khác nhau nên không thể vận dụng neural network được. Thử nhìn lại xem ở trên R-CNN đã xử lý ra làm thế nào? Nó đã resize những region proposal về cùng kích thước trước lúc sử dụng transfer learning. Tuy nhiên ở feature map ta không thể resize được, nên ta phải có cách gì đó để chuyển những region proposal trong feature map về cùng kích thước => Region of Interest (ROI) pooling Ra đời.

Region of Interest (ROI) pooling

ROI pooling là một dạng của pooling layer. Điểm khác so với max pooling hay average pooling là bất kể kích thước của tensor input, ROI pooling luôn cho ra output có kích thước cố định và thắt chặt được định nghĩa trước.

Ta kí hiệu a/b là phần nguyên của a khi chia cho b và a%b là phần dư của a khi chia cho b. Ví dụ: 10/3 = 3 và 10%3 = 1.

Gọi input của ROI pooling kích thước m*n và output có kích thước h*k (thường thì h, k nhỏ ví dụ 7*7).

  • Ta chia chiều rộng thành h phần, (h-1) phần có kích thước m/h, phần cuối có kích thước m/h + m%h.
  • Tương tự ta chia chiều dài thành k phần, (k-1) phần có kích thước n/k, phần cuối có kích thước n/k + n%k.

Ví dụ m=n=10, h=k=3, do m/h = 3 và m%h = 1, nên ta sẽ chia chiều rộng thành 3 phần, 2 phần có kích thước 3, và một phần có kích thước 4.

Sau đó với mỗi khối được tạo ra bằng những đường đỏ và cạnh, ta tiến hành max pooling lấy ra 1 giá trị.

Thực hiện ROI pooling

Ta trọn vẹn có thể thấy là kích thước sau khoản thời hạn tiến hành ROI pooling về đúng h*k như ta mong ước.

Đánh giá Fast R-CNN

So sánh thời train train và test giữa R-CNN và Fast R-CNN. Nguồn:
towardsdatascience/r-cnn-fast-r-cnn-faster-r-cnn-yolo-object-detection-algorithms-36d53571365e

Fast R-CNN khác với R-CNN là nó tiến hành feature map với cả ảnh tiếp sau đó với lấy những region proposal ra từ feature map, còn R-CNN tiến hành tách những region proposal ra rồi mới tiến hành CNN trên từng region proposal. Do đó Fast R-CNN nhanh hơn đáng kể nhờ tối ưu việc tính toán bằng Vectorization.

Tuy nhiên nhìn hình trên ở phần test time với mục Fast R-CNN thì thời hạn tính region proposal rất mất thời hạn và làm chậm thuật toán => Cần thay thế thuật toán selective search. Giờ người ta nghĩ đến việc dùng deep learning để tạo ra region proposal => Faster R-CNN Ra đời.

Faster R-CNN

Faster R-CNN không dùng thuật toán selective search để lấy ra những region proposal, mà nó thêm một mạng CNN mới gọi là Region Proposal Network (RPN) để tìm những region proposal.

Kiến trúc mới Faster R-CNN. Nguồn:
arxiv/pdf/1506.01497.pdf

Đầu tiên cả tấm hình được cho qua pre-trained model để lấy feature map. Sau đó feature map được sử dụng cho Region Proposal Network để lấy được những region proposal. Sau khi lấy được vị trí những region proposal thì tiến hành tương tự Fast R-CNN.

Region Proposal Network (RPN)

Input của RPN là feature map và output là những region proposal. Ta thấy những region proposal là hình chữ nhật.

Mà một hình chữ nhật được xác lập bằng 2 điểm ở cả 2 góc, ví dụ A(x_min, y_min) và B(x_max, y_max). Nhận xét:

  • Khi RPN Dự kiến ta phải rằng buộc x_min < x_max và y_min < y_max.
  • Hơn nữa những giá trị x,y khi Dự kiến trọn vẹn có thể ra ngoài khỏi tấm hình

=> Cần một kĩ thuật mới để màn biểu diễn region propsal => Anchor Ra đời.

Ý tưởng là thay vì Dự kiến 2 góc ta sẽ Dự kiến điểm TT (x_center, y_center) và width, height của hình chữ nhật. Như vậy mỗi anchor được xác lập bằng 4 tham số (x_center, y_center, width, height).

Vì không sử dụng Selective search nên RPN ban sơ cần xác lập những anchor box trọn vẹn có thể là region proposal, tiếp sau đó qua RPN thì chỉ ouput những anchor box chứng minh và khẳng định chứa đối tượng người tiêu dùng.

Nguồn: sách deep learning for computer vision.

Ảnh bên trái kích thước 400 * 600 px, tác tâm của anchor box màu xanh, cách nhau 16 px => có tầm khoảng chừng (400*600)/(16*16) = 938 tâm. Do những object trong ảnh trọn vẹn có thể có kích thước và tỉ lệ rất khác nhau nên với mỗi tâm ta định nghĩa 9 anchors với kích thước 64 × 64, 128 × 128, 256×256, mỗi kích thước có 3 tỉ lệ tương ứng: 1 : 1, 1 : 2 và 2 : 1.

Giống như hình bên phải với tâm ở giữa 3 kích thước ứng với màu da cam, xanh lam, xanh lục và với mỗi kích thước có 3 tỉ lệ.

=> Số lượng anchor box giờ là 938 * 9 = 8442 anchors. Tuy nhiên sau RPN ta chỉ giữ lại khoảng chừng 1000 anchors box để tiến hành như trong Fast R-CNN.

Việc của RPN là lấy ra những region proposal tựa như selective search thôi chứ không phải là phân loại ảnh.

Mô hình RPN khá đơn thuần và giản dị, feature map được cho qua Conv layer 3*3, 512 kernels. Sau đó với mỗi anchor lấy được ở trên, RPN tiến hành 2 bước:

  • Dự đoán xem anchor đấy là foreground (chứa object) hay background (không chứa object)
  • Dự đoán 4 offset value cho x_center, y_center, width, height cho những anchor.

Nhận xét: có thật nhiều anchor bị chồng lên nhau nên non-maxima suppression được vốn để làm vô hiệu những anchor chồng lên nhau.

Sau cùng nhờ vào Phần Trăm Dự kiến background RPN sẽ lấy N anchor (N trọn vẹn có thể 2000, 1000, thậm chí còn 100 vẫn chạy tốt) để làm region proposal.

Intersection over Union (IoU)

IoU được xử dụng trong bài toán object detection, để định hình và nhận định xem bounding box Dự kiến đối tượng người tiêu dùng khớp với ground truth thật của đối tượng người tiêu dùng.

Nguồn:
pyimagesearch/năm nay/11/07/intersection-over-union-iou-for-object-detection/

Ví dụ về thông số IoU, nhận xét:

  • Chỉ số IoU trong tầm [0,1]
  • IoU càng gần 1 thì bounding box Dự kiến càng gần ground truth

Nguồn: sách deep learning for computer vision.

Ngoài ra thì thông số IoU cũng rất được vốn để làm định hình và nhận định độ khớp của 2 hình chữ nhật.

Non-maxima suppression

Ở trong Region Proposal Network thứ nhất ta có tầm khoảng chừng 9000 anchor box (tập Input) tuy nhiên ta chỉ muốn giữ lại 100 anchor (tập Ouput) làm region proposal. Ta sẽ làm như sau:

  • Bước 1: Chọn ra anchor box (A) có xác xuất là foreground lớn số 1 trong tập Input
  • Bước 2: Thêm A vào tập Ouput.
  • Bước 3: Loại bỏ A và những anchor box trong tập Input mà có thông số IoU với A to nhiều hơn 0.5 thoát khỏi tập Input.
  • Bước 4: Kiểm tra nếu tập Input rỗng hoặc tập Output đủ 100 anchor thì tạm ngưng, nếu không xoay trở lại bước 1.

Kết quả của Faster R-CNN

Nhìn ở hình trên ta thấy Faster R-CNN nhanh hơn nhiều những dòng R-CNN trước đó, vì vậy trọn vẹn có thể dùng cho real-time objec detection

Ứng dụng object detection

  • Tự động điểm danh: Xác định được vị trí mặt của những học viên và phân loại những học viên trong lớp.
  • Hỗ trợ xe hơi tự lái: Xác định được vị trí và phân loại được những phương tiện đi lại giao thông vận tải, người đi dạo.
  • Dự đoán hành vi: Xác định được vị trí và phân loại người => track được người => dùng RNN để tự đoán hành vi.

Bài 12: Image segmentation với U-NetBài 10: Các kĩ thuật cơ bản trong deep learning

Tags: Deep learningfast rcnnfaster-rcnnobject detectionrcnnregion of interest poolingregion proposal network

Reply
3
0
Chia sẻ

Review Chia Sẻ Link Download Mask RCNN là gì ?

– Một số từ khóa tìm kiếm nhiều : ” đoạn Clip hướng dẫn Mask RCNN là gì tiên tiến và phát triển nhất , Share Link Download Mask RCNN là gì “.

Thảo Luận vướng mắc về Mask RCNN là gì

Bạn trọn vẹn có thể để lại Comments nếu gặp yếu tố chưa hiểu nhé.
#Mask #RCNN #là #gì Mask RCNN là gì