Artificial Intelligence Blog

Giải thích tường tận và code giải thuật Principal Component Analysis

Xin chào các bạn,

Trong bài post này, mình sẽ trình bày về một giải thuật dùng để giảm chiều dữ liệu có tên là Principle Component Analysis (PCA). Đây là một giải thuật khá cổ tuy nhiên những giá trị toán học nó mang lại vẫn trường tồn theo thời gian. Chúng ta hãy cùng khám phá xem nó hoạt động như thế nào nhé.

Image

1. Giới thiệu

Như đã đề cập ở tiêu đề, PCA là một giải thuật dùng để giảm chiều của dữ liệu trong khi tối thiểu thông tin mất mát. Nó có rất nhiều ứng dụng thực tế như:

read more

Giải thích và code các giải thuật data compression - Phần 1

Xin chào các bạn,

Trong bài post này, mình sẽ giới thiệu về nén data (data compression).

1. Giới thiệu

Nếu các bạn dùng máy tính, chắc chắn đã từng thấy từ “Compress file” khi right click vào một folder nào đó. Compress file này tức là mã hóa (encode) folder này lại thành một đoạn code có thể được giải mã với ít bits hơn nhằm giảm dung lượng lưu trữ của chúng để có thể dễ dàng di chuyển.

Vì vậy, nén data là lĩnh vực dùng các giải thuật để có thể mã hóa dữ liệu thành một đoạn dữ liệu có dung lượng nhỏ hơn và có thể giải mã để lấy lại dữ liệu gốc khi ta muốn. Data compression được chia thành 2 nhóm chính: lossy compressionlossless compression. Lossy compression là giải thuật nén ảnh làm mất một phần nào đó của dữ liệu gốc và lossless là giải thuật nén ảnh mà không làm mất dữ liệu gốc.

  Lossy Lossless
Chất lượng Mất mát 1 phần Không mất
Applications Ảnh, videos, nhạc Ảnh, videos, nhạc, text
File types Images: JPEG Images: RAW, BMP, PNG
  Video: MPEG, AVC, HEVC General: ZIP
  Audio: MP3, AAC Audio: WAV, FLAC
The Difference Architecture between AlexNet and VGG16 Models
Hình 1.1. Lossy vs Lossless compression
read more

Giải thích và code Vision Transformer from scratch

Xin chào các bạn,

read more

Wgan

read more

Giải thích và code Variational AutoEncoder

Xin chào các bạn!

Trong bài post này, mình sẽ giới thiệu về mô hình Variational AutoEncoder được công bố trong paper “Auto-Encoding Variational Bayes” của tác giả Diederik P. Kingma và các cộng sự. Đây là một kiến trúc tương tự như AutoEncoder và có thêm thành phần stochastic trong phần bottleneck để khiến cho nó có khả năng tạo ra những data mới lạ (tuy vẫn thuộc distribution của training dataset).

read more

Stable_diffusion

read more

Giải thích và code Generative Adversarial Networks

1. Giới thiệu

GANs (Generative Adversarial Networks) được giới thiệu lần đầu vào năm 2014 trong bài báo “Generative Adversarial Nets” của Ian J. Goodfellow và các cộng sự. Đây là một phương pháp học không giám sát (unsupervised learning) được sử dụng để tạo ra dữ liệu mới mang tính chân thực và đa dạng.

Tất cả gương mặt trên đều được tạo bởi GANs
Hình 1.1. Tất cả gương mặt trên đều được tạo bởi GANs

Mô hình GANs có kiến trúc cực kỳ thú vị, bao gồm hai mạng chính: GeneratorDiscriminator, hoạt động theo cơ chế đối kháng. Generator cố gắng tạo ra dữ liệu giả mạo giống như dữ liệu thật, trong khi Discriminator cố gắng phân biệt giữa dữ liệu thật và dữ liệu giả. Qua quá trình huấn luyện, cả hai mạng này đều cải thiện chất lượng của mình, dẫn đến việc tạo ra dữ liệu giả ngày càng chân thực hơn.

read more

Giải thích Fourier Transform

Xin chào các bạn,

Trong bài post này, mình sẽ giới thiệu về chuỗi Fourier và biến đổi Fourier. Đây là một giải thuật có rất nhiều công dụng trong Vật lý, toán học, kỹ thuật viễn thông, kỹ thuật tự động, … Ngoài ra, biến đổi Fouier có thể có rất rất nhiều ứng dụng ngoài đời thật. Vì nó rất quan trọng và có rất nhiều thứ ta có thể áp dụng nó nên mình sẽ đi sâu vào việc chứng minh nó để có thể giúp các bạn hiểu được giải thuật này hoạt động như thế nào.

Image

read more

Giải thích và code giải thuật Canny Edge Detection

Xin chào các bạn,

Trong bài post về các bộ lọc phần 2, mình đã giới thiệu về các bộ lọc cạnh và cũng như cách hoạt động của chúng. Ở phần này, mình sẽ giới thiệu một giải thuật cho kết quả vượt trội hơn các phương pháp trước có tên là Canny edge detection. Giải thuật này được phát triển bởi John F. Canny vào năm 1986. Nó bao gồm nhiều bước hậu xử lý để có thể cải thiện kết quả so với các phương pháp dựa vào đạo hàm.

1. Điểm yếu của việc dùng đạo hàm để tìm cạnh

Các bộ lọc như Sobel, Prewitt, Laplacian dựa vào mỗi giá trị gradient của pixel để tìm ra cạnh. Tuy nhiên, trong ảnh thu được từ camera sẽ có rất nhiều nguồn nhiễu từ cả bên ngoài và bên trong, và điều này khiến cho các phương pháp này kém ổn đỉnh.

2. Giải thuật Canny

Giải thuật Canny về cơ bản bao gồm 5 bước. Chúng ta hãy cùng xem giải thuật này hoạt động như thế nào và code nó from scratch nhé.

Bước 1: Giảm nhiễu
Để có thể giảm noise và tìm ra các cạnh đáng tin cậy, một bộ lọc thông thấp với mục đích làm mịn ảnh sẽ được áp dụng.

Bộ lọc có thể tùy ý lựa chọn, các bạn có thể chọn bộ lọc trung bình, trung vị, Gauss, bilateral, … miễn là nó làm mịn ảnh. Ở đây mình sẽ dùng Gaussian filter để demo.

import cv2
import matplotlib.pyplot as plt
import numpy as np

# Read image and turn into gray
# Can be replaced with any image

# Step 1: Gaussian Blur
image = cv2.imread("./lena.png", 0)
blurred = cv2.GaussianBlur(image)

Alt text

Bước 2: Tính gradient và orientation

Ở bước này, ta sẽ dùng các bộ lọc như ở bài này để có tìm ra được các cạnh trong tấm ảnh. Các bạn có thể dùng bất kì bộ lọc gradient-based nào để tìm cạnh cũng được nhé.

Ở bước này, ta cần tính cường độ và hướng gradient tăng nhanh nhất (hướng của cạnh). Và điều này được tính theo công thức sau:

\[G = \sqrt{G_x^2 + G_y ^2}\] \[\theta = arctan(\frac{G_y}{G_x})\]

# Step 2: Find all edges
def sobelFilter(image):
    image_ = image.copy()/255.
    
    Gx = np.array([[-1, 0, 1], [-2, 0, 2], [-1, 0, 1]], dtype = np.float32)
    Gy = np.array([[-1, -2, -1], [0, 0, 0], [1, 2, 1]], dtype = np.float32)
    
    Ix = cv2.filter2D(image_, ddepth=-1, kernel = Gx)
    Iy = cv2.filter2D(image_, ddepth=-1, kernel=Gy)
    
    G = np.hypot(Ix, Iy)
    G = G/G.max()
    theta = np.arctan2(Iy, Ix)
    return G, theta/np.pi * 180

G, theta = sobelFilter(blurred)
read more

Giải thích và implement các bộ lọc trong xử lý ảnh - Phần 2

Xin chào các bạn,

Nối tiếp series phần 1 của bộ lọc, bài post này sẽ giới thiệu thêm một vài bộ lọc nâng cao hơn của phần 1 với trọng tâm chính là tìm cạnh trong ảnh (edge detection).

Image

read more

Giải thích và implement các bộ lọc trong xử lý ảnh - Phần 1

Xin chào các bạn,

Trong phần 1 của series bộ lọc ảnh, mình sẽ giới thiệu về bộ lọc ảnh, ứng dụng, và một vài bộ lọc ảnh cơ bản nhất trong lĩnh vực xử lý ảnh, thị giác máy.

read more

Hướng dẫn tính số lượng params trong các mạng Neural Networks - Phần 1

Xin chào các bạn,

Trong bài post này, mình sẽ hướng dẫn tính thủ công số lượng parameters trong các mạng tích chập.

read more

Giải thích và code paper Very Deep Convolutional Networks for Large-Scale Image Recognition

Xin chào các bạn!

Trong bài post này mình sẽ giới thiệu về kiến trúc VGG, một trong những kiến trúc lâu đời nhất của mạng tích chập. Thật tình cờ, vào thời điểm viết bài blog này cũng là tròn 10 năm ngày ra mắt của mô hình này. Vậy, VGG có gì đặc biệt và có ảnh hưởng đến cách xây dựng các mô hình CNNs sau này như thế nào, chúng ta cùng khám phá nhé.

read more

Giải thích về giải thuật resize ảnh

Xin chào các bạn!

Trong bài post này, mình sẽ giải thích về một vài phương pháp resize ảnh thông dụng nhất trong lĩnh vực computer vision. Chúng ta thường dùng các thư viện có sẵn trong cv2, pytorch, tensorflow, PIL, … để resize ảnh nhưng phương pháp nào phù hợp nhất với nhu cầu cũng như phương pháp nào nhanh nhất, việc này chỉ có thể biết được khi chúng ta hiểu được thuật toáncủa nó và đó cũng chính là mục đích của bài post này.

read more

Giải thích và code Transformers

Xin chào các bạn!

Trong bài post này, mình sẽ giới thiệu về kiến trúc transformers. Đây được xem là một trong những model có tính cách mạng nhất trong deep learning vì nó đã tạo tiền đề cho sự ra đời của các mô hình ngôn ngữ lớn hay các mô hình SOTA cho các task như speech recognition, computer vision, …

1. Một chút về lịch sử của transformers

Mô hình này được ra mắt nhằm thay thế cho kiến trúc Recurrent neural networks (RNNs), vốn đã được ra mắt vào những năm 90. Sơ lược thì kiến trúc recurrent này được thiết kế ra nhằm xử lý các loại thông tin có thứ tự như text, speech. Tuy nhiên, kiến trúc này có nhược điểm là vấn đề về exploding/vanishing gradient khi training nên nó không thể xử lý một đoạn thông tin quá dài. Vì những lý do đó mà Large language models không tồn tại trước khi transformer được ra mắt.

Đến năm 2014, một nhóm nghiên cứu ở Google đã nghiên cứu những phương pháp để khắc phục vấn đề trên của RNNs và đề xuất kiến trúc transformers. Chỉ sau 10 năm ra mắt, những thành tựu đạt được từ kiến trúc transformers nhiều không xuể với sự ra mắt của các mô hình ngôn ngữ lớn như ChatGPT, Llama3, Segment Anything, …

read more

Giải thích paper SegFormer: Simple and Efficient Design for Semantic Segmentation with Transformers

Xin chào các bạn!

read more

Giải thích và code các Genetic Algorithm

Xin chào các bạn!

read more

Giải thích và code paper Searching for MobileNetV3

Xin chào các bạn!

Trong bài viết trước mình đã đề cập crawl dữ liệu từ Youtube (các bạn nếu chưa xem có thể tham khảo ở đây nhé). Trong bài này, mình sẽ hướng dẫn các bạn cách crawl Tiktok videos full hd - không che về nha.

Chúng ta bắt tay vào thực hành luôn nhé!

Bước 1: Trích xuất các urls của các videos

Để có thể tải các videos từ Tiktok về, chúng ta phải có urls. Các bạn có thể dùng một vài phương pháp automation của Python để có thể trích xuất đường link của các video về. Một cách đơn giản nhất, thì các bạn có thể dùng script này để lọc ra được các urls (Ngoài ra vẫn có các cách khác hiệu quả hơn nhé).

(Optional) Các bạn có thể dùng đoạn lệnh sau để trích xuất các urls nhé

```python import subprocess import time import clipboard import pandas as pd

read more

Giải thích và code K-Nearest Neighbours from scratch

Xin chào các bạn!

Trong bài viết trước mình đã đề cập crawl dữ liệu từ Youtube (các bạn nếu chưa xem có thể tham khảo ở đây nhé). Trong bài này, mình sẽ hướng dẫn các bạn cách crawl Tiktok videos full hd - không che về nha.

Chúng ta bắt tay vào thực hành luôn nhé!

Bước 1: Trích xuất các urls của các videos

Để có thể tải các videos từ Tiktok về, chúng ta phải có urls. Các bạn có thể dùng một vài phương pháp automation của Python để có thể trích xuất đường link của các video về. Một cách đơn giản nhất, thì các bạn có thể dùng script này để lọc ra được các urls (Ngoài ra vẫn có các cách khác hiệu quả hơn nhé).

(Optional) Các bạn có thể dùng đoạn lệnh sau để trích xuất các urls nhé

```python import subprocess import time import clipboard import pandas as pd

read more

Giải thích và code T-SNE from scratch

Xin chào các bạn!

Trong bài viết trước mình đã đề cập crawl dữ liệu từ Youtube (các bạn nếu chưa xem có thể tham khảo ở đây nhé). Trong bài này, mình sẽ hướng dẫn các bạn cách crawl Tiktok videos full hd - không che về nha.

Chúng ta bắt tay vào thực hành luôn nhé!

Bước 1: Trích xuất các urls của các videos

Để có thể tải các videos từ Tiktok về, chúng ta phải có urls. Các bạn có thể dùng một vài phương pháp automation của Python để có thể trích xuất đường link của các video về. Một cách đơn giản nhất, thì các bạn có thể dùng script này để lọc ra được các urls (Ngoài ra vẫn có các cách khác hiệu quả hơn nhé).

(Optional) Các bạn có thể dùng đoạn lệnh sau để trích xuất các urls nhé

```python import subprocess import time import clipboard import pandas as pd

read more

Giải thích các giải thuật sorting

Xin chào các bạn!

Trong bài viết trước mình đã đề cập crawl dữ liệu từ Youtube (các bạn nếu chưa xem có thể tham khảo ở đây nhé). Trong bài này, mình sẽ hướng dẫn các bạn cách crawl Tiktok videos full hd - không che về nha.

Chúng ta bắt tay vào thực hành luôn nhé!

Bước 1: Trích xuất các urls của các videos

Để có thể tải các videos từ Tiktok về, chúng ta phải có urls. Các bạn có thể dùng một vài phương pháp automation của Python để có thể trích xuất đường link của các video về. Một cách đơn giản nhất, thì các bạn có thể dùng script này để lọc ra được các urls (Ngoài ra vẫn có các cách khác hiệu quả hơn nhé).

(Optional) Các bạn có thể dùng đoạn lệnh sau để trích xuất các urls nhé

```python import subprocess import time import clipboard import pandas as pd

read more

Giải thích paper Snapshot Ensembles: Train 1, get M for free

Xin chào các bạn!

Trong bài viết trước mình đã đề cập crawl dữ liệu từ Youtube (các bạn nếu chưa xem có thể tham khảo ở đây nhé). Trong bài này, mình sẽ hướng dẫn các bạn cách crawl Tiktok videos full hd - không che về nha.

Chúng ta bắt tay vào thực hành luôn nhé!

Bước 1: Trích xuất các urls của các videos

Để có thể tải các videos từ Tiktok về, chúng ta phải có urls. Các bạn có thể dùng một vài phương pháp automation của Python để có thể trích xuất đường link của các video về. Một cách đơn giản nhất, thì các bạn có thể dùng script này để lọc ra được các urls (Ngoài ra vẫn có các cách khác hiệu quả hơn nhé).

(Optional) Các bạn có thể dùng đoạn lệnh sau để trích xuất các urls nhé

```python import subprocess import time import clipboard import pandas as pd

read more

Giải thích paper ShuffleNetV2: Practical Guidelines for Efficient CNN Architecture Design

Xin chào các bạn!

Trong bài viết trước mình đã đề cập crawl dữ liệu từ Youtube (các bạn nếu chưa xem có thể tham khảo ở đây nhé). Trong bài này, mình sẽ hướng dẫn các bạn cách crawl Tiktok videos full hd - không che về nha.

Chúng ta bắt tay vào thực hành luôn nhé!

Bước 1: Trích xuất các urls của các videos

Để có thể tải các videos từ Tiktok về, chúng ta phải có urls. Các bạn có thể dùng một vài phương pháp automation của Python để có thể trích xuất đường link của các video về. Một cách đơn giản nhất, thì các bạn có thể dùng script này để lọc ra được các urls (Ngoài ra vẫn có các cách khác hiệu quả hơn nhé).

(Optional) Các bạn có thể dùng đoạn lệnh sau để trích xuất các urls nhé

```python import subprocess import time import clipboard import pandas as pd

read more

Giải thích paper SegNet: A Deep Convolutional Encoder-Decoder Architecture for Image Segmentation

Xin chào các bạn!

Trong bài viết trước mình đã đề cập crawl dữ liệu từ Youtube (các bạn nếu chưa xem có thể tham khảo ở đây nhé). Trong bài này, mình sẽ hướng dẫn các bạn cách crawl Tiktok videos full hd - không che về nha.

Chúng ta bắt tay vào thực hành luôn nhé!

Bước 1: Trích xuất các urls của các videos

Để có thể tải các videos từ Tiktok về, chúng ta phải có urls. Các bạn có thể dùng một vài phương pháp automation của Python để có thể trích xuất đường link của các video về. Một cách đơn giản nhất, thì các bạn có thể dùng script này để lọc ra được các urls (Ngoài ra vẫn có các cách khác hiệu quả hơn nhé).

(Optional) Các bạn có thể dùng đoạn lệnh sau để trích xuất các urls nhé

```python import subprocess import time import clipboard import pandas as pd

read more

Giải thích paper Identity Mappings in Deep Residual Networks

Xin chào các bạn!

Trong bài viết trước mình đã đề cập crawl dữ liệu từ Youtube (các bạn nếu chưa xem có thể tham khảo ở đây nhé). Trong bài này, mình sẽ hướng dẫn các bạn cách crawl Tiktok videos full hd - không che về nha.

Chúng ta bắt tay vào thực hành luôn nhé!

Bước 1: Trích xuất các urls của các videos

Để có thể tải các videos từ Tiktok về, chúng ta phải có urls. Các bạn có thể dùng một vài phương pháp automation của Python để có thể trích xuất đường link của các video về. Một cách đơn giản nhất, thì các bạn có thể dùng script này để lọc ra được các urls (Ngoài ra vẫn có các cách khác hiệu quả hơn nhé).

(Optional) Các bạn có thể dùng đoạn lệnh sau để trích xuất các urls nhé

```python import subprocess import time import clipboard import pandas as pd

read more

Giải thích về p-value và A/B testing

Xin chào các bạn!

Trong bài viết trước mình đã đề cập crawl dữ liệu từ Youtube (các bạn nếu chưa xem có thể tham khảo ở đây nhé). Trong bài này, mình sẽ hướng dẫn các bạn cách crawl Tiktok videos full hd - không che về nha.

Chúng ta bắt tay vào thực hành luôn nhé!

Bước 1: Trích xuất các urls của các videos

Để có thể tải các videos từ Tiktok về, chúng ta phải có urls. Các bạn có thể dùng một vài phương pháp automation của Python để có thể trích xuất đường link của các video về. Một cách đơn giản nhất, thì các bạn có thể dùng script này để lọc ra được các urls (Ngoài ra vẫn có các cách khác hiệu quả hơn nhé).

(Optional) Các bạn có thể dùng đoạn lệnh sau để trích xuất các urls nhé

```python import subprocess import time import clipboard import pandas as pd

read more

Giải thích và code các optimizers from scratch

Xin chào các bạn!

Trong bài post này, mình sẽ giới thiệu optimizers là gì, công dụng của nó trong việc training deep learning models, và sẽ code from scratch để hiểu rõ hơn nó hoạt động như thế nào nhé. Bài viết này dành cho các bạn đã nắm được cơ bản mạng neural network, loss functions rùi nhé. Nếu các bạn vẫn chưa học qua neural network và loss function thì bài này khá là khoai đấy, thế nhá.

1. Optimizers là gì?

Trong công đoạn training 1 mạng neural network sẽ gồm 3 bước. Bước 1, chúng ta sẽ chạy forward inference. Bước 2, chúng ta sẽ dùng labels để chạy giải thuật backpropagation. Bước 3, sau khi có có được gradients từ backpropagation, chúng ta sẽ cập nhật parameters mới cho mạng. Và optimizer nằm ở khâu này, nó dùng để cập nhật các parameters của mạng neural network (NN), nó sẽ điều khiển cách chúng ta cập nhập parameter mới sau mỗi iteration.

Trong một thập kỉ qua, đã có nhiều researchers và scientists đề xuất nhiều thuật toán optimizers khác nhau, có những ưu và nhược điểm khác nhau. Ở thời điểm hiện tại của bài post, optimizers được tin dùng nhất là Adam, RMSProp, SGD. Nếu các bạn dùng qua các framework của Tensorflow, Pytorch, Keras thì không thể không biết các optimizers này.

Tuy nhiên, việc cứ dùng những giải thuật được viết sẵn trong các ML frameworks mà không hiểu các settings cũng như cách thức hoạt động cũng sẽ khiến chúng ta hơi bất an. Vì vậy, trong bài này mình sẽ giải thích một cách chi tiết các giải thuật optimizers này.

1. Đặt vấn đề

Giả sử chúng ta muốn xây dựng một mạng với hàm có dạng f(x) = ax+b để dự đoán một hàm số từ các điểm đã biết trước như sau:

Dataset            
x 0 1 2 3 4 5
y 1 3 5 7 9 11

Và chúng ta cần dự đoán giá trị f những điểm x = 1.5, 4.2, 6.

Hàm loss là người chấm điểm, còn gradient là người dẫn lối để chúng ta để đạt điểm cao nhất (hoặc điểm thấp nhát ><>).

read more

Giải thích về các phương pháp Normalisation trong Deep Learning

Xin chào các bạn!

Trong bài viết trước mình đã đề cập crawl dữ liệu từ Youtube (các bạn nếu chưa xem có thể tham khảo ở đây nhé). Trong bài này, mình sẽ hướng dẫn các bạn cách crawl Tiktok videos full hd - không che về nha.

Chúng ta bắt tay vào thực hành luôn nhé!

Bước 1: Trích xuất các urls của các videos

Để có thể tải các videos từ Tiktok về, chúng ta phải có urls. Các bạn có thể dùng một vài phương pháp automation của Python để có thể trích xuất đường link của các video về. Một cách đơn giản nhất, thì các bạn có thể dùng script này để lọc ra được các urls (Ngoài ra vẫn có các cách khác hiệu quả hơn nhé).

(Optional) Các bạn có thể dùng đoạn lệnh sau để trích xuất các urls nhé

```python import subprocess import time import clipboard import pandas as pd

read more

Giải thích và code neural networks from scratch

Xin chào các bạn!

Trong bài viết trước mình đã đề cập crawl dữ liệu từ Youtube (các bạn nếu chưa xem có thể tham khảo ở đây nhé). Trong bài này, mình sẽ hướng dẫn các bạn cách crawl Tiktok videos full hd - không che về nha.

Chúng ta bắt tay vào thực hành luôn nhé!

Bước 1: Trích xuất các urls của các videos

Để có thể tải các videos từ Tiktok về, chúng ta phải có urls. Các bạn có thể dùng một vài phương pháp automation của Python để có thể trích xuất đường link của các video về. Một cách đơn giản nhất, thì các bạn có thể dùng script này để lọc ra được các urls (Ngoài ra vẫn có các cách khác hiệu quả hơn nhé).

(Optional) Các bạn có thể dùng đoạn lệnh sau để trích xuất các urls nhé

```python import subprocess import time import clipboard import pandas as pd

read more

Giải thích và code Non-Maximum Suppression from scratch

Xin chào các bạn!

Trong bài post này, mình sẽ giải ngố về giải thuật non-maximum suppression (NMS) thường được dùng trong khâu post-processing của YOLO models.

read more

Giải thích và code paper mixup: BEYOND EMPIRACAL RISK MINIMIZATION với PyTorch

Xin chào các bạn!

Như tiêu đề của bài post thì hôm nay chúng ta sẽ cùng mổ xẻ paper “mixup: BEYOND EMPERICAL RISK MINIMIZATION” của tác giả Hongyi Zhang nhé. Paper này được published ở hội nghị ICLR 2018 với mục đích là để cải thiện performance của các mô hình classfication.

1. Tóm tắt

Trong paper này, tác giả của bài báo giới thiệu một phương pháp augment ảnh mới được gọi là MixUp dùng cho image classification task. Với các mô hình học sâu thì data là sương sống, là nền móng để build một model tốt, và vì vậy kỹ thuật augment ảnh tốt sẽ là một yếu tố cực kì quan trọng.

2. Vấn đề

read more

Giải thích và code paper Guided Image Filtering

Xin chào các bạn,

Trong bài post này, mình sẽ giới thiệu một thuật toán image filtering mới tên là Guided Image Filtering. Đây là thuật toán làm mịn ảnh tốt nhất tính đến thời điểm bài post này được viết. Phương pháp này được đề xuất bởi Kaiming He (cũng là cha đẻ của mô hình ResNet), Jian Sun, và Xiaoou Tang tại hội nghị ECCV 2010. Cũng đã thấm thoát 14 năm trôi qua, đã có nhiều biến thể của thuật toán này như Fast Guided Image Filtering, Deep Guided Image filtering, … được đề xuất, tuy nhiên chúng đều dựa trên nền của giải thuật gốc. Đây là một giải thuật đạt được cùng một lúc cả hai tiêu chí: nhanh hơn và tốt hơn.

1. Tại sao Guided Image Filtering được ra đời ?

Thuật toán Guided Image Filtering ra đời với mục tiêu giải quyết một số thách thức quan trọng trong xử lý ảnh, đặc biệt là trong việc làm mịn ảnh. Trước đó, các phương pháp truyền thống như bộ lọc trung bình, Gaussian Blur, bilateral filter lọc nhiễu và làm mịn ảnh nhưng đồng thời cũng làm mất các chi tiết trong ảnh. Để khắc phục nhược điểm đó của các bộ lọc trên, bộ lọc Guided filter tích hợp thêm thông tin của ảnh gốc để có thể “hướng dẫn” giải thuật lọc đi đúng hướng và giữ được nhiều chi tiết nhất có thể.

Ngoài ứng dụng làm mịn, Guided filter còn có thể được ứng dụng cho colorisation, image matting, multi-scale decomposition, và haze removal.

Ứng dụng của guided filter trong image matting. Nguồn: claude_ssim.log
read more

Giải thích và code Focal Loss from scratch

Xin chào các bạn!

Trong bài viết trước mình đã đề cập crawl dữ liệu từ Youtube (các bạn nếu chưa xem có thể tham khảo ở đây nhé). Trong bài này, mình sẽ hướng dẫn các bạn cách crawl Tiktok videos full hd - không che về nha.

Chúng ta bắt tay vào thực hành luôn nhé!

Bước 1: Trích xuất các urls của các videos

Để có thể tải các videos từ Tiktok về, chúng ta phải có urls. Các bạn có thể dùng một vài phương pháp automation của Python để có thể trích xuất đường link của các video về. Một cách đơn giản nhất, thì các bạn có thể dùng script này để lọc ra được các urls (Ngoài ra vẫn có các cách khác hiệu quả hơn nhé).

(Optional) Các bạn có thể dùng đoạn lệnh sau để trích xuất các urls nhé

```python import subprocess import time import clipboard import pandas as pd

read more

Giải thích và code paper FastFCN: Rethinking Dilated Covolution in the Backbone for Semantic Segmentation

Xin chào các bạn!

Trong bài viết trước mình đã đề cập crawl dữ liệu từ Youtube (các bạn nếu chưa xem có thể tham khảo ở đây nhé). Trong bài này, mình sẽ hướng dẫn các bạn cách crawl Tiktok videos full hd - không che về nha.

Chúng ta bắt tay vào thực hành luôn nhé!

Bước 1: Trích xuất các urls của các videos

Để có thể tải các videos từ Tiktok về, chúng ta phải có urls. Các bạn có thể dùng một vài phương pháp automation của Python để có thể trích xuất đường link của các video về. Một cách đơn giản nhất, thì các bạn có thể dùng script này để lọc ra được các urls (Ngoài ra vẫn có các cách khác hiệu quả hơn nhé).

(Optional) Các bạn có thể dùng đoạn lệnh sau để trích xuất các urls nhé

```python import subprocess import time import clipboard import pandas as pd

read more

Giải thích về Concurrency trong lập trình

Xin chào các bạn!

Trong bài viết trước mình đã đề cập crawl dữ liệu từ Youtube (các bạn nếu chưa xem có thể tham khảo ở đây nhé). Trong bài này, mình sẽ hướng dẫn các bạn cách crawl Tiktok videos full hd - không che về nha.

Chúng ta bắt tay vào thực hành luôn nhé!

Bước 1: Trích xuất các urls của các videos

Để có thể tải các videos từ Tiktok về, chúng ta phải có urls. Các bạn có thể dùng một vài phương pháp automation của Python để có thể trích xuất đường link của các video về. Một cách đơn giản nhất, thì các bạn có thể dùng script này để lọc ra được các urls (Ngoài ra vẫn có các cách khác hiệu quả hơn nhé).

(Optional) Các bạn có thể dùng đoạn lệnh sau để trích xuất các urls nhé

```python import subprocess import time import clipboard import pandas as pd

read more

Giải thích và code phương pháp augment ảnh FancyPCA

Xin chào các bạn!

Trong bài viết trước mình đã đề cập crawl dữ liệu từ Youtube (các bạn nếu chưa xem có thể tham khảo ở đây nhé). Trong bài này, mình sẽ hướng dẫn các bạn cách crawl Tiktok videos full hd - không che về nha.

Chúng ta bắt tay vào thực hành luôn nhé!

Bước 1: Trích xuất các urls của các videos

Để có thể tải các videos từ Tiktok về, chúng ta phải có urls. Các bạn có thể dùng một vài phương pháp automation của Python để có thể trích xuất đường link của các video về. Một cách đơn giản nhất, thì các bạn có thể dùng script này để lọc ra được các urls (Ngoài ra vẫn có các cách khác hiệu quả hơn nhé).

(Optional) Các bạn có thể dùng đoạn lệnh sau để trích xuất các urls nhé

```python import subprocess import time import clipboard import pandas as pd

read more

Giải thích paper Robust High-Resolution Video Matting with Temporal Guidance

Xin chào các bạn!

Trong bài viết trước mình đã đề cập crawl dữ liệu từ Youtube (các bạn nếu chưa xem có thể tham khảo ở đây nhé). Trong bài này, mình sẽ hướng dẫn các bạn cách crawl Tiktok videos full hd - không che về nha.

Chúng ta bắt tay vào thực hành luôn nhé!

Bước 1: Trích xuất các urls của các videos

Để có thể tải các videos từ Tiktok về, chúng ta phải có urls. Các bạn có thể dùng một vài phương pháp automation của Python để có thể trích xuất đường link của các video về. Một cách đơn giản nhất, thì các bạn có thể dùng script này để lọc ra được các urls (Ngoài ra vẫn có các cách khác hiệu quả hơn nhé).

(Optional) Các bạn có thể dùng đoạn lệnh sau để trích xuất các urls nhé

```python import subprocess import time import clipboard import pandas as pd

read more

Hướng dẫn crawl Youtube Videos tự động với Python

Xin chào các bạn!

Trong bài post lần này mình sẽ giới thiệu một phương pháp để có thể tự động tải các videos/shorts/livestream từ Youtube về để có thêm nguồn data cho mô hình AI/ML.

Trong lĩnh vực AI/ML, data chiếm 80% công việc của các kĩ sư nên việc biết tận dụng các nền tảng trực tuyến để có thể kiếm thêm nhiều data sẽ rất có ích cho việc xây dựng một mô hình tốt. Có thể kể đến một vài nền tảng nổi tiếng để chúng ta scrape dữ liệu như Instagram, Tiktok, Reddit, Twitter (X), …

Chúng ta bắt tay vào thực hành luôn nhé!

Bước 1: Install thư viện scrapetube, youtube-dl với pip

Cho bạn nào chưa biết, pip là một package manager của Python, nó giúp cho việc cài cắm đơn giản hơn rất nhiều so với việc ta tự download và install thủ công.

Package đầu tiên chúng ta sẽ cài là scrapetube, thư viện này sẽ giúp chúng ta trích xuất urls của các videos/shorts một cách tự động mà không cần phải mở một trình duyệt phụ như thư viện Selenium. Vì vậy, việc dùng thư viện này sẽ tiết kiệm khá nhiều thời gian và băng thông mạng của các bạn 😄. Package thứ hai và cũng là package cuối cùng là youtube_dl, thư viện này sẽ giúp chúng ta tải về các Youtube urls đã được trích xuất dùng.

read more

Giải thích phương pháp Naive Bayes

1. Đặt vấn đề

Giả sử bạn có

read more

Quantisation có thực sự khiến model nhanh hơn ?

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

Curabitur pretium tincidunt lacus. Nulla gravida orci a odio. Nullam varius, turpis et commodo pharetra, est eros bibendum elit, nec luctus magna felis sollicitudin mauris. Integer in mauris eu nibh euismod gravida. Duis ac tellus et risus vulputate vehicula. Donec lobortis risus a elit.

read more

Markdown examples

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

Curabitur pretium tincidunt lacus. Nulla gravida orci a odio. Nullam varius, turpis et commodo pharetra, est eros bibendum elit, nec luctus magna felis sollicitudin mauris. Integer in mauris eu nibh euismod gravida. Duis ac tellus et risus vulputate vehicula. Donec lobortis risus a elit.

read more

Giải thích và code paper U-Net: Convolutional Networks for Biomedical Image Segmentation

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

Curabitur pretium tincidunt lacus. Nulla gravida orci a odio. Nullam varius, turpis et commodo pharetra, est eros bibendum elit, nec luctus magna felis sollicitudin mauris. Integer in mauris eu nibh euismod gravida. Duis ac tellus et risus vulputate vehicula. Donec lobortis risus a elit.

read more

Giải thích và code Term Frequency - Inverse Document Frequency

Xin chào các bạn,

Trong bài post này, mình sẽ giới thiệu một phương pháp để xác định độ quan trọng của từng từ trong một câu.

Image

Vậy mức độ quan trọng của một từ là gì? Mức độ quan trọng ở đây là một con số cụ thể nào đó và nếu nó lớn thì tức là tư đó quan trọng và ngược lại. Giả sử, bài phát biểu nhậm chức của tổng thống Mỹ như sau: “Tôi sẽ tập trung vào y tế”, thì trong câu sau từ “y tế” nên có mức độ quan trọng lớn hơn các từ như “Tôi”, “sẽ”, “tập”, “trung”, “vào”.

1. Giới thiệu TF-IDF

Như tiêu đề thì TF-IDF là từ viết tắt của cụm Term Frequency - Inverse Document Frequency. Giả thuật này được hai nhà khpa học máy tính Hans Peter Luhn và Karen Spärck Jones tìm ra. Cụ thể hơn, Hans là người phát triển phần term frequency và Karen là người thêm phần Inverse Document Frequency vào giải thuật.

Image

read more

Giải thích và code paper Encoder-Decoder with Atrous Separable Convolution for Semantic Image Segmentation

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

Curabitur pretium tincidunt lacus. Nulla gravida orci a odio. Nullam varius, turpis et commodo pharetra, est eros bibendum elit, nec luctus magna felis sollicitudin mauris. Integer in mauris eu nibh euismod gravida. Duis ac tellus et risus vulputate vehicula. Donec lobortis risus a elit.

read more

Giải thích và code from scratch chuỗi Taylor (Taylor Series)

References

  1. Derivation of the Taylor Series Part 1

  2. Derivation of Taylor Series Expansion

  3. Taylor Series

read more

Hướng dẫn và code kiến trúc Recurrent Neural Networks from scratch

read more

Hướng dẫn và code kiến trúc Recurrent Neural Networks from scratch

read more

Giải thích và code thuật toán HOG (Histogram of oriented gradient)

read more

Giải thích Liquid Neural Networks

read more

Giải thích và code Label smoothing

read more

Hướng dẫn và code paper 'Distilling the Knowledge in a Neural Network'

read more

Giải thích và code giải thuật Grad Cam - Visualising What conv nets learn

read more

Giải thích và code from scratch các thuật toán chuyển đổi màu (Color Transformation)

read more

Giải thích các phép biến đổi màu trong xử lý ảnh - thị giác máy

read more

Hướng dẫn cách tính độ phức tạp của thuật toán - Big O Notation

read more

Advanced examples

Swiss Alps

read more

Giải thích và code thuật toán HOG (Histogram of oriented gradient)

read more

Giải thích và code các phương pháp Image Compression - Phần 1

read more

Giải thích và code thuật toán HOG (Histogram of oriented gradient)

Xin chào các bạn,
Trong bài post này, mình sẽ giới thiệu một phương pháp “cổ điển” để extract features của một bức ảnh. Ở thời đại Deep Learning phát triển vượt bậc như hiện nay, các mạng CNN thường được dùng để trích xuất các đặc trưng của bức ảnh. Tuy nhiên, trước khi Yan LeCun đề xuất kiến trúc CNN thì cũng đã có nhiều nghiên cứu về phương pháp để trích xuất features của một bức ảnh và một trong những phương pháp phổ biến nhất đó là Histogram of Oriented Gradients (HOG). Chúng ta hãy cùng tìm hiểu xem HOG là gì và hoạt động như thế nào nhé.

Image

1. Giới thiệu về HOG

HOG là một giải thuật trích xuất những điểm đặc trưng trong một bức ảnh và những đặc trưng này có thể được dùng để đưa vào các mô hình phân loại như SVM, Decision Tree, … cho các task classification, detection, hay thậm chí segmentation.

Điểm chính trong nguyên lý hoạt động c ủa HOG là mô tả hình dạng của một vật thể cục bộ thông qua hai ma trận: magnitude gradient*orientation gradient. Để tạo ra hai ma trận này, ảnh được chia thành một lưới ô vuông, trên mỗi ô vuông, ta tính toán biểu đồ histogram thống kê độ lớn gradient. Mỗi ô vuông thường có kích thước 8x8 pixels và bao gồm nhiều ô cục bộ. HOG descriptor được tạo thành bằng cách nối liền 4 vector histogram từ mỗi ô cục bộ. HOG descriptor được tạo thành bằng cách nối liền 4 vector histogram từ mỗi ô cục bộ thành một vector tổng hợp. Để cải thiện độ chính xác, mỗi giá trị của vector histogram trên mỗi vùng cục bộ được chuẩn hóa theo Norm 2 hoặc Norm 1. Ưu điểm của HOG là nó bao gồm tính bất biến đối với biến đổi hình học và thay đổi độ sáng, cũng như khả năng loại bỏ chuyển động cơ thể trong phát hiện con người nếu họ duy trì tư thế đứng thẳng.

2. Cách hoạt động của HOG

Ở mục 1, mình đã giới thiệu tổng quan về HOG. Giờ thì hãy cùng đào sâu xem nó được hoạt động như thế nào nhé.

read more