Posts

Showing posts from 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: 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 Y...

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 ...

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 ...

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...

Giới thiệu về Generative Adversarial Networks (GANs)

Image
“… (GANs) and the variations that are now being proposed is the most interesting idea  in the last 10 years in ML…”  Tạm dịch: “… GAN cùng các biến thể của nó được đề xuất là ý tưởng thú vị nhất  về Machine Learning trong vòng mười năm qua...”  - Yann LeCun, giám đốc Facebook AI Research.  Nếu bạn chưa từng nghe về Generative Adversarial Networks, thì bạn đã bỏ qua chủ đề (có lẽ vẫn còn là) hot nhất của Deep Learning trong những năm gần đây. Nhưng yên tâm vì hôm nay bạn sẽ được lướt qua vài điều về nó. Đôi nét giới thiệu Neural Network đã tạo ra một bước tiến vượt bậc, cung cấp khả năng nhận diện hình ảnh và âm thanh ở một cấp độ có thể so sánh với con người . Cùng với đó là việc hiểu được ngôn ngữ tự nhiên với độ chính xác khá tốt. Các model sử dụng Neural Network trước đây có thể ngay lập tức nhận dạng một chú mèo trong một bức ảnh, thông qua việc học và phân tích hàng trăm, thậm chí hàng ngàn, chục ngàn bức ảnh về loài mèo. Nhưng...