TRƯỜNG ĐH CÔNG NGHỆ THÔNG TIN – ĐHQG TPHCM
KHOA CÔNG NGHỆ PHẦN MỀM
--------
BÁO CÁO ĐỒ ÁN 2
ĐỀ TÀI
SỬ DỤNG FRAMEWORK KERAS VÀ MILLIONS
SONG DATASET ĐỂ XÂY DỰNG ỨNG DỤNG
NHẬN DIỆN THỂ LOẠI ÂM NHẠC
Thực hiện:
Nguyễn Tấn Phát
17520879
Dương Thị Thu Thủy 17521119
Giáo viên hướng dẫn: Mai Trọng Khang
Lớp
: SE122.L11
TRƯỜNG ĐH CÔNG NGHỆ THÔNG TIN – ĐHQG TPHCM
KHOA CÔNG NGHỆ PHẦN MỀM
-------Hồ Chí Minh, ngày 04 tháng 01 năm 2021
BÁO CÁO ĐỒ ÁN 2
2
ĐỀ TÀI
SỬ DỤNG FRAMEWORK KERAS VÀ MILLIONS
SONG DATASET ĐỂ XÂY DỰNG ỨNG DỤNG
NHẬN DIỆN THỂ LOẠI ÂM NHẠC
Thực hiện:
Nguyễn Tấn Phát
17520879
Dương Thị Thu Thủy 17521119
Giáo viên hướng dẫn: Mai Trọng Khang
Lớp
: SE122.L11
MỤC LỤC
Hồ Chí Minh, ngày 04 tháng 01 năm 2021
DANH SÁCH HÌNH ẢNH
Đồ án 2
SE122.L11
3
LỜI NĨI ĐẦU
Nhóm em xin được trình bày về việc nghiên cứu thuật toán phân loại thể loại âm
nhạc dựa trên nội dung bài hát bằng cách sử dụng mạng nơ-ron tích hợp hồn tồn (FCN)
cùng với sử dụng hai bộ dataset phổ biến Million song dataset và Gtzan dataset với đầu
vào là mel-spectrogram trích xuất từ âm nhạc, nhóm đã và đang tích cực nghiên cứu, áp
dụng mơ hình mạng Convolutional Neural Network (CNN) để cải thiện, nâng cao hiệu
suất dự đốn của mơ hình.
Trong q trình tìm hiểu và xây dựng ứng dụng, nhóm em khơng thể tránh khỏi
nhiều điều thiếu sót nên rất mong nhận được đóng góp ý kiến và nhận xét từ phía thầy cơ
và các bạn để đề tài được hồn thiện hơn. Nhóm em xin chân thành cảm ơn thầy Mai
Trọng Khang đã hướng dẫn chúng em tận tình trong quá trình thực hiện đề tài này!
Hồ Chí Minh, 04/01/2021
Đồ án 2
SE122.L11
4
NHẬN XÉT CỦA GIÁO VIÊN
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
Đồ án 2
SE122.L11
5
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
PHẦN 1: TỔNG QUAN
1.1 Giới thiệu
Thể loại âm nhạc là một tập hợp các từ khóa mơ tả đặc trưng cho các bài hát, như
là cảm xúc (buồn, tức giận, hạnh phúc), thể loại (jazz, cổ điển, pop…) và nhạc cụ (hịa
tấu, guitar, vocal,…). Vì thể loại âm nhạc cung cấp thông tin đặc trưng từ quan điểm của
người nghe nên chúng có thể được sử dụng cho các ứng dụng khám phá và đề xuất âm
nhạc. Phân loại thể loại âm nhạc là một nhiệm vụ nhằm dự đoán các thể loại nhạc bằng
việc sử dụng tín hiệu âm thanh. Việc có thể tự động nhận diện thể loại âm nhạc cho phép
tạo nhiều nội dung thú vị cho người dùng ví dụ như khám phá âm nhạc và sáng tạo danh
sách phát, đồng thời cung cấp cho các nhà phát triển nội dung sắp xếp và gắn nhãn âm
nhạc. Tuy nhiên, điều này cũng gặp nhiều khó khăn bởi việc chồng chéo nhiều thể loại
trong cùng một bài hát và các bài hát có thời lượng khác nhau dẫn đến dự đốn có độ
chính xác khơng cao.
Đồ án 2
SE122.L11
6
Vì thế, việc xây dựng hệ thống này yêu cầu các cơng cụ trích xuất tính năng âm
thanh là những cơng cụ ước tính tốt về thể loại mà chúng ta quan tâm, theo sau là phân
loại đơn hoặc nhiều thể loại trong một số trường hợp. Thơng thường trích xuất tính năng
sẽ dựa vào giao diện người dùng xử lí tính hiệu để tính tốn các tính năng liên quan đến
biểu diễn âm thanh (miền thời gian, tần số). Các tính năng này sau đó được sử dụng làm
đầu vào cho giai đoạn học máy. Tuy nhiên rất khó để biết tính năng nào phù hợp nhất để
thực hiện mỗi tác vụ.
Một cách tiếp cận gần đây hơn đã hợp nhất việc trích xuất tính năng với học máy
để cho phép các tính năng liên quan được học tự động. Cách tiếp cận này được gọi là học
tập tính năng và yêu cầu Mạng thần kinh sâu (DNN). Do đó, bên cạnh việc hệ thống đang
học để phân loại thể loại thì cũng cho phép tìm hiểu các tính năng liên quan cho từng
nhiệm vụ. DNN gần đây đã được sử dụng rộng rãi trong phân tích âm thanh, sau thành
cơng của chúng trong thị giác máy tính, nhận dạng giọng nói và tự động gắn thẻ. Từ góc
độ kĩ thuật, DNN bỏ qua vấn đề tạo hoặc tìm các tính năng âm thanh liên quan một nhiệm
vụ. Cấu trúc chung của nó bao gồm nhiều lớp ẩn với các đơn vị ẩn được huấn luyện để
đại diện cho một số cấu trúc cơ bản trong dữ liệu. Một số thuật toán liên quan đến DNN
cũng đã được đề xuất để gắn thể loại âm nhạc tự động.
1.2 Mục tiêu
- Tiếp cận machine learning, biết sử dụng framework Keras và thuật tốn
Convolutional Neural Network (CNN)
- Tìm hiểu được bộ dữ liệu triệu bài hát Milions song dataset
- Áp dụng framework Keras và Milions song dataset để xây dựng ứng dụng nhận
diện thể loại bài hát.
PHẦN 2: CNN VÀ CRNN CHO NHẬN DIỆN THỂ LOẠI ÂM NHẠC
2.1 Convolutional Neural Network (CNN)
2.1.1 Kiến trúc của CNN
- Trong mạng Neural, mạng Neural tích chập (CNN) là một thuật tốn chính
trong việc nhận diện và phân loại đối tượng.
Đồ án 2
SE122.L11
7
- Về kỹ thuật, mơ hình CNN sẽ thực hiện train và test. Mỗi đầu vào sẽ
chuyển nó qua một loạt các lớp tích chập với các bộ lọc (filter) – (kernel), sau đó đến
Pooling, rồi tiếp theo là các lớp được kết nối hoàn chỉnh (FC – Fully Connected layers) và
sau đó áp dụng hàm softmax để phân loại đối tượng có giá trị xác suất giữa 0 và 1.
Hình 1. Kiến trúc CNNs
Input image Convolutional layer (Conv) + Pooling layer (Pool) Fully
connected layer (FC) Output.
* Convolution Layer:
- Là lớp đầu tiên trích xuất các tính năng từ hình ảnh đầu vào. Convolution
duy trì ràng buộc giữa các pixel bằng cách học các đặc tính của hình ảnh với ngun tắc
học là sử dụng các ơ vuông nhỏ của dữ liệu đầu vào. Đây là một hành động về tốn học
có 2 đầu vào là một ma trận hình ảnh và một ma trận filter hoặc kernel.
Đồ án 2
SE122.L11
8
Hình 2. Cấu trúc Convolution Layer
- Mỗi lớp tích chập có kích thước H x W x D sẽ học D tính năng của H x W,
trong đó H và W lần lượt là chiều cao và chiều rộng của kernel đã học. Chọn đối số, áp
dụng các bộ lọc với các bước nhảy, padding nếu cần. Thực hiện tích chập cho hình ảnh và
áp dụng hàm kích hoạt ReLU cho ma trận hình ảnh. Có thể sử dụng một số hàm phi tuyến
khác như tanh, sigmoid (thường dùng ReLU vì cho hiệu suất tốt).
* Pooling Layer
- Pooling layer thường được dùng giữa các convolutional layer, để giảm
kích thước dữ liệu nhưng vẫn giữ được các thuộc tính quan trọng. Kích thước dữ liệu
giảm giúp giảm việc tính tốn trong model.
- Gọi pooling size kích thước K x K. Input của pooling layer có kích thước
H x W x D, ta tách ra làm D ma trận kích thước H x W. Với mỗi ma trận, trên vùng kích
thước K x K trên ma trận ta tìm maximum hoặc average của dữ liệu rồi viết vào ma trận
kết quả. Quy tắc về stride và padding áp dụng như phép tính convolution trên ảnh.
- Max pooling lấy phần tử lớn nhất từ ma trận đối tượng, hoặc lấy tổng trung
bình. Tổng tất cả các phần tử trong map gọi là sum pooling.
* Fully Connected Layer
Đồ án 2
SE122.L11
9
- Max pooling lấy phần tử lớn nhất từ ma trận đối tượng, hoặc lấy tổng trung
bình. Tổng tất cả các phần tử trong map gọi là sum pooling. Sau đó ta dùng các fully
connected layer để kết hợp các đặc điểm của ảnh để ra được output của model.
2.1.2 CNN trong nhận diện thể loại âm nhạc
- Một số lí do cho việc sử dụng CNN trong nhận diện thể loại âm nhạc:
+ Các thể loại âm nhạc thường được coi là một trong những tính năng high
– level thể hiện thơng tin cấp bài hát trên các tính năng cấp trung gian thay đổi theo thời
gian và tần số như hợp âm, nhịp, âm sắc. Hệ thống phân cấp này rất phù hợp với CNN vì
nó được thiết kế để tìm hiểu các tính năng phân cấp trên cấu trúc nhiều lớp.
+ Các thuộc tính của CNN như translation, distortion và tính bất biến có thể
hữu ích để tìm hiểu các tính năng âm nhạc khi mục tiêu các sự kiện có liên quan đến thẻ
có thể xuất hiện bất kì lúc nào hoặc dải tần số.
Hình 3. CNNs cho nhận diện thể loại âm nhạc
2.2 CRNN
- Gần đây, CNN đã được kết hợp với nơ-ron tái phát mạng (RNN) thường được sử
dụng để lập mơ hình tuần tự dữ liệu như tín hiệu âm thanh hoặc chuỗi từ. Lai này mơ
hình này được gọi là mạng nơ-ron tuần hồn tích tụ (CRNN). CRNN có thể được mơ tả
như một CNN đã sửa đổi bằng cách thay thế các lớp chập cuối cùng bằng một RNN.
Đồ án 2
SE122.L11
10
Hình 4. CRNNs cho nhận diện thể loại âm nhạc
- Recurrent Neural Network (RNNs – Mạng nơ-ron hồi quy) là một trong những
mơ hình Deep Learning trong cơng nghệ trí tuệ nhân tạo. RNN ra đời với ý tưởng chính là
sử dụng một bộ nhớ để lưu lại thông tin từ từ những bước tính tốn xử lý trước để dựa vào
nó có thể đưa ra dự đốn chính xác nhất cho bước dự đốn hiện tại. Cơ bản thì nó là một
mạng neural hồi quy là một mạng neural chứa một vịng lặp bên trong nó.
- CRNN thích hợp với nhiệm vụ phân loại thể loại âm nhạc. RNNs linh hoạt trong
việc chọn cách tóm tắt các đặc trưng hơn CNNs do sử dụng trọng số trung bình và lấy
mẫu con.
PHẦN 3: ỨNG DỤNG KERAS FRAMWORK ĐỂ NHẬN DIỆN THỂ LOẠI
ÂM NHẠC
3.1 Chuẩn bị dataset
3.1.1 Million Song Dataset (MSD)
* Ý tưởng: Sử dụng subset 10000 bài hát và gắn nhãn thể loại dựa theo 50
tag phổ biến cung cấp bởi last.fm bao gồm các thể loại (rock, pop, jazz, funk), thời đại
(thập niên 60 – 00) và tâm trạng (buồn, vui, hạnh phúc). Sau khi có bộ dữ liệu 10000 bài
hát đã được gắn nhãn, vấn đề hiện tại là cần phải có file audio. Nhận thấy rằng mỗi bài hát
từ tập dữ liệu MSD đều chứa Id từ nhà cung cấp có tên 7Digital. 7Digital là một nhà cung
cấp ứng dụng nghe nhạc, về cơ bản nó cho phép bạn phát nhạc trực tuyến kiếm tiền.
Đồ án 2
SE122.L11
11
7Digital cho phép người dùng xem trước 30 giây ngẫu nhiên của một bài hát, do đó việc
tiếp theo là tải xuống mỗi bài hát trong tập dữ liệu MSD bản xem trước 30 giây. Nhưng
điều không may là 7Digital khơng cịn cung cấp API cho phép lấy dữ liệu nên nhóm quyết
định tìm một tập dữ liệu khác phù hợp hơn để thay thế.
3.1.2 Gtzan Dataset
Gtzan là tập dữ liệu được tạo bởi Tzanetakis và cộng sự. Nó là tổng hợp của
1000 trích đoan âm nhạc với thời lượng 30 giây bao gồm 100 bài hát cho mỗi thể loại
khác nhau (tổng 10 thể loại: Blues, Classical, Country, Disco, Hip Hop, Jazz, Metal,
Popular, Reggae và Rock) và tất cả đều là file âm thanh 22050Hz Mono 16-bit ở định
dạng .au.
Tuy nhiên, nó có một hạn chế lớn trong trường hợp nhận diện thể loại âm
nhạc đa khung (multiframe) bởi vì thời lượng mỗi trích đoạn âm nhạc chỉ có 30 giây nên
chỉ có thể trích xuất 1 khung hình (frame) cho mỗi bài hát.
3.2 Xây dựng Model và trainning
Dựa theo bài báo khoa học AUTOMATIC TAGGING USING DEEP
CONVOLUTIONAL NEURAL NETWORKS, Keunwoo Choi, George Fazekas, Mark
Sandler (2016), nhóm em áp dụng mơ hình FCN – 4 như sau:
Đồ án 2
SE122.L11
12
Hình 5. The configuration of FCN – 4
FCN – 4 bao gồm 4 lớp chập (convolutional layer) và 4 lớp gộp tối đa (max
pooling layer). Mạng này lấy một biểu đồ phổ mel-spectrogram kích thước 96 x 1366 làm
đầu vào và dự đoán một vector label 10 chiều.
Đơn vị tuyến tính chỉnh lưu ReLU được sử dụng như một hàm kích hoạt
trong mọi convolution layer, sử dụng sigmoid để ép đầu ra trong khoảng 0 đến 1. Chuẩn
hóa hàng loạt được thêm vào sau mỗi convolution layer và trước khi kích hoạt. Dropout
được thêm vào sau mỗi max pooling layer để làm tăng tốc độ hội tụ.
Các nhân tích chập 2D (3 x 3) đồng nhất được sử dụng trong mọi
convolutional layer, ngoại trừ convolutional layer cuối cùng (1 x 1). Các 2D kernel được
sử dụng để khuyến khích hệ thống học các cấu trúc quang phổ cục bộ.
PHẦN 4: CÀI ĐẶT VÀ THỬ NGHIỆM
4.1 Môi trường
appdirs==1.4.3
Đồ án 2
SE122.L11
13
audioread==2.1.4
cycler==0.10.0
Cython==0.25.2
decorator==4.0.11
functools32==3.2.3.post2
h5py==2.7.0
joblib==0.11
Keras==1.1.0
librosa==0.5.0
matplotlib==2.0.0
numpy==1.12.1
packaging==16.8
pyparsing==2.2.0
python-dateutil==2.6.0
pytz==2017.2
PyYAML==3.12
resampy==0.1.5
scikit-learn==0.18.1
scipy==0.19.0
six==1.10.0
subprocess32==3.2.7
Theano==0.9.0
4.2 Thử nghiệm
Đồ án 2
SE122.L11
14
- Trích xuất feature với Gtzan.
- Nhận diện được thể loại âm nhạc với model weights sẵn có.
PHẦN 5: NHẬN XÉT VÀ KẾT LUẬN
5.1 Thuận lợi:
Tinh thần học tập tốt và làm việc tích cực giữa các thành viên trong nhóm.
Thường xuyên họp nhóm và làm việc chung để giải quyết các vấn đề phức tạp.
Giáo viên hướng dẫn tận tình.
5.2 Khó khăn:
7Digital API khơng public.
Tập dữ liệu Million song dataset chưa thực sự rõ ràng
5.3 Kết quả đạt được:
Tìm hiểu được framework Keras.
Tìm hiểu được Million song dataset, gtzan dataset
Sử dụng Keras framework, gtzan, các mạng neural CNN, CRNN
PHẦN 6: HƯỚNG PHÁT TRIỂN
Tìm cách sử dụng tập dữ liệu Million song kết hợp với mạng CNNs.
Xây dựng ứng dụng đề xuất thể loại âm nhạc.
Đồ án 2
SE122.L11
15
TÀI LIỆU THAM KHẢO
[1] AUTOMATIC TAGGING USING DEEP CONVOLUTIONAL NEURAL NETWORKS,
Keunwoo Choi, George Fazekas, Mark Sandler (2016)
[2] />[2] />[2] />
Đồ án 2
SE122.L11