LỜI NÓI ĐẦUNhó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 hoàn toàn FCN cùng với sử
Trang 1 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:
Dương Thị Thu Thủy 17521119 Giáo viên hướng dẫn: Mai Trọng Khang
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
Trang 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
DANH SÁCH HÌNH ẢNH
Hồ Chí Minh, ngày 04 tháng 01 năm 2021
Trang 3LỜ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 hoàn toà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ự đoán của mô hình
Trong quá 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 hoà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
Trang 4NHẬN XÉT CỦA GIÁO VIÊN
………
………
………
………
………
………
………
………
………
………
………
………
Trang 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ự đoán có độ chính xác không cao
Trang 6Vì 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 toá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 toá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 toán chính trong việc nhận diện và phân loại đối tượng
Trang 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 nguyên 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ề toá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
Trang 8Hì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 toá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
Trang 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 hoà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
Trang 10Hì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 toán xử lý trước để dựa vào
nó có thể đưa ra dự đoán chính xác nhất cho bước dự đoá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
Trang 117Digital 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:
Trang 12Hì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
Trang 13cycler==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
Trang 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
Trang 15TÀI LIỆU THAM KHẢO
[1] AUTOMATIC TAGGING USING DEEP CONVOLUTIONAL NEURAL NETWORKS,
Keunwoo Choi, George Fazekas, Mark Sandler (2016)
[2] https://github.com/keunwoochoi/music-auto_tagging-keras
[2] https://github.com/mlachmish/MusicGenreClassification
[2] https://github.com/jsalbert/Music-Genre-Classification-with-Deep-Learning