Giải Thích Lý Thuyết Của YOLO V3 - Nghịch Code Cho Vui
Có thể bạn quan tâm
Life
- Home
- Life
- CTF
- AI
tdh's blog
20200312
Giải thích lý thuyết của YOLO v3
Các định nghĩa cần biết : Residual Blocks: Skip connections: Upsampling: Bouding box regression: RoI - Region of Interest: Vùng quan tâm, vùng được lựa chọn để xử lý biến đổi. IoU - Intersection over Union: Phần giao của 2 box / Phần hợp của 2 box NMS - Non-maximum suppression: Batch nomarlize: FCN - Full convolutional: Leaky ReLU activation: Softmax: Trong bài hướng dẫn này tôi sẽ giới thiệu YOLO model là gì và cách nó hoạt động 1 cách chi tiết. Nội dung hướng dẫn: - Yolo là gì
- Điều kiện tiên quyết
- Fully Convolutional Neural Network
- Diễn tả đầu ra
- Tạo Boxes và Dự đoán
- Kích thước của Bouding Box
- Điểm của đối tường và niềm tin của class
- Dự đoán kể cả các loại kích thước
- Xử lý đầu ra (Lọc bằng các giới hạn về điểm của class)
- Bạn nên hiểu CNN làm việc ntn. Nó bao gồm hiểu biết về: Residual Blocks, skip connection và Upsampling.
- Nhận diện hình ảnh là gì, hồi quy bouding box, IoU và non-maximum suppression
- Bạn nên có khả năng để tạo ra NN đơn giản khi nhàn rỗi.
YOLO là bất biến đối với kích thước của hình ảnh đầu vào. Tuy nhiên, trong thực tế chúng ta luôn muốn kết hợp các đầu vào hằng số cho nhiều vấn đề chỉ hiển thị phần đầu của chúng khi chúng ta thực hiện các thuật toán (???). Một vấn đề lớn kéo theo những vấn đề này là nếu chúng ta muốn xử lý những hình ảnh trong batch (hình ảnh trong các batch sẽ được xử lý đồng thời bởi GPU, tăng tốc tính toán), chúng ta cần tất cả các ảnh đã fix cứng chiều cao và chiều rộng. Điều này cần ghép nhiều hình ảnh vào 1 batch lớn hơn. Mạng network downsamples hình ảnh bằng yếu tố gọi là stride. Ví dụ: nếu stride của mạng là 32, thì hình ảnh đầu vào 416x416 sẽ đưa ra output là 13x13. Thông thường, stride bất cứ lớp nào trong mạng sẽ cân bằng với yếu tố bởi đầu ra của lớp sẽ nhỏ hơn đầu vào hình ảnh trong mạng. 4. Interpreting the output - Diễn tả đầu ra Điều đầu tiên cần biết: - Đầu vào một lô (batch) hình ảnh sẽ có hình dạng (m,416,416,3)
- Đầu ra là 1 danh sách các bounding boxes kéo theo nhận diện classes. Mỗi bouding box được đại diện bởi 6 con số (pc, bx, by, bh, bw, c). Nếu chúng ta mở rộng c thành một vector 80-chiều, mỗi bouding box là đại diện bởi 85 con số.
Sau đó, cell (trong ảnh đầu vào) chứa trung tâm của box chịu trách nhiệm cho dự đoán đối tượng. Trong hình ảnh, cell được đánh dấu đỏ là trung tâm của hộp vật thể thực sự (màu vàng). Bây giờ, ô màu đỏ sẽ được gọi là ô thứ 7 trên hàng ngang của lưới hình ảnh. Bây giờ chúng ta giao ô thứ 7 ở hàng ngnag của bản đồ đặc trưng (ô tương ứng trên bản đồ đặc trưng) là một trong những ô được dùng để nhận diện đó là con chó. Bây giờ, cái ô này có thể dự đoán 3 bouding boxes. cái nào được đánh dấu nhãn của con chó? Để có thể hiểu được điều đó, chúng ta phải biết ý tưởng của anchors. (Lưu ý rằng cell mà chúng ta nói đến ở đây là một ô trong dự đoán bản đồ đặc trưng). Chúng ta chia hình ảnh đầu vào thành một lưới ô để quyết định cái cell nào trong bản đồ dự đoán đặc trưng sẽ dùng để dự đoán. Để cho dễ hiểu hơn chúng ta phân tích một ví dụ khác với nhiều ảnh : Bây giờ chúng ta sử dụng 5 anchor boxes. Vì vậy chúng ta có nghĩ về cấu trúc YOLO như sau: IMAGE(m,608,608,3) => DEEP CNN => ENCODING (m, 19, 19, 5, 85). Có ai đó sẽ hỏi rằng 19 ở đâu ra ? câu trả lời: giống như 608/32 = 19 Hãy nhìn chi tiết tốt hơn ở việc encoding:
Nếu điểm giữa của đối tượng rơi vào một ô lưới, thì cái ô đó sẽ có trách nhiệm cho việc nhận diện đối tượng. Vì chúng ta đang sử dụng 5 anchor boxes, mỗi ô trong 19x19 ô lưới sẽ mã hóa thông tin khoảng 5 boxes. Anchor boxes được định nghĩa chỉ bởi độ rộng và chiều cao của nó. CHo đơn giản, chúng ta làm phẳng 2 chiều của của mã hóa shape (19, 19, 5, 85). Vì vậy đầu ra của Deep CNN là (19, 19, 425):
Bây giờ, với mỗi box (của mỗi cell) sẽ tính toán theo element-wise product và rút ra kết luận mà hộp có chưa class nào.
Đây là một cách để hình dung YOLO dự đoán trên một hình anhr: - Với mỗi 19x19 lưới ô, tìm vị trí có điểm khả năng cao nhất (lấy tối đa trên cả 5 anchor boxes và trên các lớp khác nhau)
- Tô màu ô lưới theo đối tượng mà ô lưới xem xét có khả năng nhất.
Hình dung ở hình trên không phải phần core của thuật toán YOLO mà bản thân nó dùng cho dự đoán, đó chỉ là một cách tốt để hình dung một kết quả trung gian của thuật toán. Một cách khác để hình dung đầu ra của YOLO là xuất các bouding boxes ra ngoài. Làm như thế ta có kết quả dưới đây :
Trong hình trên, chúng ta đưa những hộp mà mô hình đã có khả năng cao là vật thể, tuy nhiên vẫn có quá nhiều boxes. Chúng ta muốn lọc đầu ra của thuật toán và nhận diện càng nhỏ số lượng đối tượng nhận diện. Để làm điều đó, chúng ta sẽ sử dụng non-max suppresion, sẽ được nói đến ở mục 9. 5. Anchor Boxes và Dự đoán Nó có thể có nghĩa để dự đoán chiều rộng và chiều cao của một bouding box, nhưng trong thực tế, điều đó dẫn đến đạo hàm không ổn định trong quá trình training. thay vào đó, hầu hết các mô hình nhận dạng đối tượng hiện đại dự đoán biến đổi log-space, hoặc đơn giản bù cho định nghĩa trước mặc định bouding boxes gọi là anchors. sau đó, những biến đổi sẽ được dùng cho anchor boxes để bắt buộc cho dự đoán. YOLO v3 có 3 anchors, cái kết quả trong dự đoán 3 bouding boxes mỗi ô. Anchors là sự sắp xếp độ ưu tiên bouding box, mà chúng ta tính toán trên dữ liệu COCO sử dụng k-mean. Chúng ta sẽ dự đoán độ rộng và chiều cao của hộp từ cụm trung tâm. tọa độ điểm trung tâm của hộp liên quan tới vị trí của phần lọc đã được dự đoán sử dụng hàm sigmoid. Theo công thức mô tả cách đầu ra network được biến đổ để bắt buộc dự đoán bouding box: bx=σ(tx)+cx by=σ(ty)+cy bw=pwetw bh=pheth Ở đây bx, by, bw, by là tọa độ trung tâm x,y , chiều rộng và chiều cao của dự đoán. tx, ty, tw, th là đầu ra network. cx và cy là tọa độ top-left của lưới ô. pw và ph là chiều của hộp. Tọa độ trung tâm Chúng ta dự đoán tọa độ trung tâm thông qua hàm sigmoid. Điều này bắt buộc giá trị của đầu ra phải nằm giữa [0,1]. Bình thường YOLO sẽ không dự đoán tọa độ chính xác của trung tâm bouding box. Nó sẽ dự đoán phần dư cái mà : - Liên quan tới góc top-left của lưới ô cái mà đang dự đoàn đối tượng
- Normalised bằng các chiều của ô từ bản đồ đặc trưng , cái là 1.
Đây là dự đoán, bw và bh được chuẩn hoá bằng chiều cao và chiều rộng của ảnh. (nhãn huấn luyện cũng được chọn theo cách này). Vì vậy nếu dự đoán bx và by cho hộp chứa con chó là (0.3, 0.8), sau đó chiều rộng và chiều cao chính xác trên 13x13 là (13x0.3, 13x0.8). 7. Objectness Score và Class confidences Đầu tiên của các object score đại diện cho khả năng mà đối tượng được bao bên trong bouding box. Nó nên gần 1 cho họp đỏ và gần như là ô lưới, bất cứ cái nào gần 0, ô lưới gần góc. Objectness score đồng thời qua hàm sigmoid, nó được hiểu là một xác suât. Nói về class confifences, chúng đại diện cho khả năng nhận diện đối tượng theo class cụ thể (Dog, cat, person, ...). Trong trường hợp của phiên bản YOLO, nó sử dụng softmax để tính điểm class. Trong YOLO, tác giả quyết định dùng sigmoid. Nguyên nhân là softmaxing điểm các clacs giả thiết rằng các class là loại trừ lẫn nhau. Đơn giản là, nếu một đối tượng thuộc 1 class, thì nó sẽ không thuộc về class khác. Nó là đúng với dữ liệu COCO, cái mà chúng ta implement trước. 8. Prediction across different scales YOLO v3 dự đoán thông qua 3 thang đo khác nhau. Lớp nhận diện được sử dụng nhận dạng tại bản đồ đặc trưng của 3 kích cỡ khác nhau, có stride 32, 16, 8 . Điều này có nghĩa là, với đầu vào 416x416, chúng ta dự đoán ở 13x13, 26x26 và 52x52. Khi mà giảm độ lớn của hình ảnh đầu vào đến lớp nhận diện đầu tiên, cái mà được dữ dụng cho bản độ đặc trưng với stride 32. Xa hơn, layers được tăng lên bởi factor 2 và nối với bản độ đặc trưng của layer trước có định dạng kích thước bản đồ đặc trưng. Một nhận diện khác là sử dụng layer với stride 16. upsampling tương tự sẽ được sử dụng lại, và kết quả nhận diện cuối cùng, được tạo với layer với stride 8. Tại mỗi thang đo, mỗi ô dự doán 3 bouding boxes dùng 3 anchors, tổng số 9 anchors được sử dụng. (anchors là khác nhau với mỗi thang đo).
Tác giả của YOLO báo cáo rằng điều này giúp cho việc nhận diện các đối tượng nhỏ tốt hơn, một điều thường bị phàn nàn ở các phiên bản trước của YOLO. Upsampling có thể giúp mạng network học làm mịn đặc trưng là phương tiện nhận diện những vật thể nhỏ. 9. Output Processing (Filtering with a threshold on class scores) Cho hình ảnh có cỡ 416x416, YOLO dự đoán ((52x52) + (26x26) + (13x13)) x 3 = 10647 bouding boxes. Tuy nhiên, trong trường hợp ảnh của chúng ta, chỉ có 1 đối tượng, 1 con chó. Vì vậy, bạn có thể hỏi làm sao chúng ta có thể giảm số lượng dự đoán từ 10647 xuống còn 1? Đầu tiên, chúng ta lọc các box dựa trên điểm objectness score. Nói chung là, boxes có điểm dưới threshold (ví dụ dưới 0.5) sẽ bị loại. TIếp theo, Non-maximum Supperssion (NMS) có xu hướng chữa vấn đề có nhiều dự đoán cùng 1 ảnh. Ví dụ, tất cả 3 bouding boxes của ô màu đỏ có dể nhậ diện một box hoặc ô liền kề có thể nhận diện cùng 1 đối tượng, vì vậy NMS được dùng để xóa nhiều nhận diện trùng nhau. Đặc biệt, chúng ta sẽ làm theo những bước sau đây : - Loại bỏ các hộp các điểm thấp ( có nghĩa là hộp khong tự tin lắm về việc phát hiện một class mới)
- Lựa chọn chỉ 1 box khi nhiều hộp chồng lên với mỗi cái khác và nhận diện cùng 1 vật thể (Non-max suppression)
- box_confidence: tensor của (19x19, 5,1) bao gồm pc (confidence probality của một số đối tượng ) của mỗi trong 5 boxes dự đoán trong mỗi ô 19x19.
- boxes: tensor của (19x19, 5, 4) bao gồm (bx, by, bh, bw) cho mỗi 5 boxes mỗi ô
- box_class_probs: tensor của (19x19,5,80) bao gồm khả năng nhận diện (c1, c2, ... c80) cho mỗi 80 classes cho mỗi 5 boxes mỗi ô
Implementing IoU: - Chúng ta định nghĩa một box sử dụng 2 góc (góc trên trái và góc dưới phair): (x1, y1,x2, y2) hơn là sử dụng điểm giữa và chiều dài/chiều cao
- để tính toàn khu vục của ô vuông chúng ta cần nhân (y2-y1) x (x2-x1)
- CHúng ta cũng cần tìm tòa độ (xi1, yi1, xi2, yi2) của phần giao của 2 hopoj:
- xi1 = tọa độ x1 lớn nhất của 2 hộp
- yi1 = tọa độ y1 lớn nhất của 2 hộp
- xi2 = tọa độ x2 nhỏ nhất của 2 hộp
- yi2 = tọa độ y2 nhỏ nhất của 2 hộp
- lựa chọn box có điểm cao nhất
- tính toàn sự chồng lặp của nó với tất cả hộp khác, và xóa hộp bị chồng chặp có iou_threshold cao hơn
- trở lịa bước 1 và liệt kê đến khi không còn boxes với điểm thấp hơn hộp đang được chọn
10. Implementation YOLO chỉ có thể nhận diện đối tượng dựa theo các classes trong dataset sử dụng cho train network. Tôi sẽ sử dụng các file trọng số chính thức cho hệ thống nhận diện của chúng ta. Những bộ trọng số này có thể bắt buộc trainning trên COCO dataset, và do đó chúng ta có thể nhận diện được 80 đối tượng nhóm. Một lần nữa tôi sẽ trể lại với ví dụ về ô tô, để tổng hợp mô hình của chúng ta : - Ảnh đầu vào (608, 608,3)
- Đầu vào qua CNN, kết quả số chiều đầu ra (19,19,5,85)
- Sau khi làm phẳng 2 chiều cuối, đầu ra (19,19,425)
- Mỗi ô trong 19x19 của đầu vào ảnh cho 425 con số
- 425 = 5x85 bởi vì mỗi ô bao gồm dự đoán 5 boxes, và tương ứng có 5 anchor boxes
- 85 = 5 + 80 trong đó 5 là (pc, bx, by, bh, bw) có 5 số, và 80 là số class mà chúng ta muốn nhận diện
- CHúng ta lựa chọn một số boxes dựa treen:
- Điểm giới hạn : vứt các boxes có điểm nhận diện của class nhỏ hơn threshold
- Non-max suppresion: Tính toán IoU (giao/ hợp của 2 hộp ) và từ chối lựa chọn các hộp chồng lên nhau
- Cho ra đầu ra YOLO
Không có nhận xét nào:
Đăng nhận xét
Trang chủ Đăng ký: Đăng Nhận xét (Atom)Giải thích lý thuyết của YOLO v3
Các định nghĩa cần biết : Residual Blocks: Skip connections: Upsampling: Bouding box regression: RoI - Region of Interest: Vùng quan...
-
Giải thích lý thuyết của YOLO v3 Các định nghĩa cần biết : Residual Blocks: Skip connections: Upsampling: Bouding box regression: RoI - Region of Interest: Vùng quan...
Nhãn
- AI
- DL
- ML
- YOLO
Hi dud3tdh Xem hồ sơ hoàn chỉnh của tôi |
Từ khóa » Darknet Yolo Là Gì
-
Bài Toán Phát Hiện Biển Số Xe Máy Việt Nam - Deep Learning Cơ Bản
-
Bài 25: YOLO - Khoa Học Dữ Liệu
-
[CNN] Tạo Models ùy Chỉnh Cho YOLO V3 | Detect Custom Object With ...
-
Tìm Hiểu Về YOLO Trong Bài Toán Real-time Object Detection - Viblo
-
Tìm Hiểu Mô Hình YOLO Cho Phát Hiện Vật - Từ YOLOv1 đến YOLOv3
-
Hiểu Về Phát Hiện đối Tượng Bằng YOLO - HelpEx - Trao đổi & Giúp đỡ
-
Forum Machine Learning Cơ Bản | Object Detection YOLO V1 , V2, V3
-
Object Detection Với Mô Hình YOLO - Panda ML
-
Mô Hình Phát Hiện đối Tượng YOLO - 123doc
-
BÁO Cáo Lý THUYẾT Nội DUNG Cấu TRÚC Và ỨNG ...
-
Nhận Dạng đối Tượng Trong ảnh Bằng Thư Viện YOLO3 - Techmaster
-
BÁO Cáo Lý THUYẾT Nội DUNG Cấu TRÚC Và ỨNG DỤNG ... - 123doc
-
Series YOLO: #4 Tìm Hiểu Cấu Trúc YOLOv1,v2,v3 Và V4 - Phần 2
-
[Yolo Series] #2 – Cách Train Yolo để Detect Các Object đặc Thù - Mì AI