Posts

Showing posts from October, 2017

Intersection over Union (IoU) cho object detection

Image
    Nếu bạn từng đọc những tài liệu liên quan đến Object detection, ắt hẳn bạn đã bắt gặp khái niệm Intersection over Union (IoU). Hôm nay chúng ta sẽ cùng tìm hiểu thêm về nó.     Bài viết này được lược dịch từ blog post của  Adrian Rosebrock . Khuyến khích bạn nên đọc bài gốc để ủng hộ và đặt câu hỏi (nếu muốn) cho tác giả. INTERSECTION OVER UNION (IOU) LÀ GÌ?    (Đầu tiên, Intersection là phần Giao, trong khi Union là phần ...Hợp, nên trong bài viết này sẽ không dịch khái niệm IoU sang tiếng Việt, mong các bạn thông cảm!)    Intersection over Union là chỉ số đánh giá được sử dụng để đo độ chính xác của Object detector trên tập dữ liệu cụ thể. Chúng ta hay gặp chỉ số này trong các Object Detection Challenge, dạng như  PASCAL VOC challenge .     Bạn sẽ thường thấy IoU được sử dụng để đánh giá performance của các bộ object detector HOG + Linear SVM và Convolutional Neural Network (R-CNN, FasterR-CNN, YOLO, v.v...). Tuy nhiên hãy ghi nhớ rằng đối với IoU thì sử dụ

YOLO: You Only Look Once

Image
“You only live once, but if you do it right, once is enough.” ― Mae West     Sự phát triển của mạng neural đang dần làm hiện thực hoá khái niệm chúng ta vẫn thường gọi là Computer Vision -  Thị giác máy tính . Tuy nhiên, tại thời điểm ban đầu, việc sử dụng Neural Network vẫn còn gặp nhiều khó khăn. Khi bạn muốn phát hiện ra object trong một bức ảnh, sau đó đánh nhãn cho object đó, các phương pháp lúc bấy giờ quá chậm để phục vụ trong real-time, hoặc đòi hỏi thiết bị mạnh mẽ, đắt đỏ...     ... cho đến khi YOLO ra đời. YOLO và sau này là YOLOv2 có khả năng gán nhãn cho toàn bộ object trong khung hình với chỉ duy nhất một operation. Có thể nói YOLO đã xây dựng một hướng tiếp cận đầu tiên giúp đưa Object detection thực sự khả thi trong cuộc sống. You only look once, but if your network does it right, once is enough. YOLO - YOU ONLY LOOK ONCE     Original paper:  https://arxiv.org/abs/1506.02640     Những lợi thế của YOLO : "Hiểu" được khái quát về đại di

Cơ bản về Backpropagation

Image
Nội dung bài viết này được tham khảo chủ yếu từ:  https://leonardoaraujosantos.gitbooks.io/artificial-inteligence/content/backpropagation.html 1. Giới thiệu     Backpropagation (Truyền ngược) là một thuật toán mà ta rất hay gặp trong các mô hình mạng học sâu (Deep Learning), nó tính toán đạo hàm thành phần phần trên các nút của mô hình (Ví dụ: Convnet, Neural Network). Các đạo hàm thành phần này được sử dụng trong suốt quá trình huấn luyện mạng. Để hiểu rõ hơn các định nghĩa và các cơ chế đi kèm, bạn đọc có thể tham khảo tại: https://en.wikipedia.org/wiki/Backpropagation . Trong bài viết này, chúng ta sẽ cùng nhau xem xét cách thực hiện backpropagation trực quan và đơn giản nhất.     Để thực hiện backpropagation một cách đơn giản,  ta sẽ biểu diễn mô hình như một đồ thị tính toán.  Sau đó, ta sẽ tính forward propagation (Truyền xuôi) và đạo hàm trên mỗi block (khối). 2. Các block cơ bản     Các hình dưới đây minh họa cách tính forward và backward propagation trên bl

Within Convolutional Layer - Phần 2 (Kết): Backpropagation

Image
Ở bài viết trước, chúng ta đã nói đến Connections cutting, Weights sharing và Convolution tại Forward pass. Trong phần này sẽ chủ yếu diễn giải các công thức, thuật toán được sử dụng để thực hiện Backpropagation tại Convolutional Layer. Nhắc lại về Forward pass Như đã nói ở phần I về Convolution operator, công thức tính output Y sau bước convolution input X với kernel W (kích thước $2k+1$) có thể viết thành: $\Large Y = X \star W + b$ $ b$ là bias. Tại mỗi điểm $ y_{i,j} \in Y$: $\LARGE y_{i,j} = \sum\limits_{m=-k}^{k}\sum\limits_{n=-k}^{k}x_{i-m,j-n}w_{i,j} + b$ hay: $\LARGE y_{i,j} = \sum\limits_{m=i-k}^{i+k}\sum\limits_{n=j-k}^{j+k}x_{m,n}w_{i-m,j-n} + b$ BACKPROPAGATION Nếu các bạn đã biết về Backpropagation ở Linear layer, thì cách tiếp cận với Convolutional layer cũng hoàn toàn tương tự.  Mục tiêu của quá trình lan truyền ngược là tính toán sự tham gia đóng góp lỗi vào hàm mất mát $L$ của mỗi layer, từ đó tối ưu các trọng số của những layer này nhằm giảm

Within Convolutional Layer - Phần 1: Connections cutting, Weights sharing

Image
Convolutional Neural Network (CNN) là một biến thể dựa trên cảm hứng về sinh học của mô hình Multilayer Perceptron (MLP), được thiết kế mô phỏng hành vi của phần vỏ não điều khiển thị giác. CNN gần như đã khắc phục những khuyết điểm của kiến trúc MLP bằng cách khai thác sự tương quan không gian địa lý mạnh mẽ hiện diện trong các hình ảnh tự nhiên. - Wikipedia . Series này sẽ đề cập chủ yếu đến một số vấn đề của layer quan trọng nhất trong CNN - Convolutional Layer và đôi điều vài người vẫn còn hiểu lầm. Nếu bạn chưa biết về CNN, bạn được khuyến khích nên tìm hiểu tại đây trước khi bắt đầu bài viết này. Từ Multilayer Perceptron đến Convolutional Neural Network Tất nhiên là CNN phức tạp với nhiều loại layer, activation function hơn hẳn so với MLP, và cũng "sinh học" hơn. Tuy nhiên có rất nhiều sự tương đồng giữa các layer của MLP với Convolutional Layer. Multilayer Perceptron Convolutional layer Nhìn có vẻ không giống nhau lắm nhỉ, nhưng Conv-layer là p