ĐẠI HỌC ĐÀ NẴNG KHOA CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG ĐỒ ÁN CƠ SỞ ĐỀ TÀI: NHẬN DẠNG CẢM XÚC

32 18 0
ĐẠI HỌC ĐÀ NẴNG KHOA CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG ĐỒ ÁN CƠ SỞ ĐỀ TÀI: NHẬN DẠNG CẢM XÚC

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

ĐẠI HỌC ĐÀ NẴNG KHOA CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG ĐỒ ÁN CƠ SỞ 5 ĐỀ TÀI: NHẬN DẠNG CẢM XÚC Sinh viên thực hiện : Lê Văn Ánh Giảng viên : Th.S Nguyễn Văn Bình Lớp : 17IT2 Đà nẵng, tháng 7 năm 2020 MỞ ĐẦU Ngày nay với sự phát triển không ngừng của công nghệ thì cụm từ trí tuệ nhân tạo không còn xa lạ với học viên chuyên nghành công nghệ thông tin chúng ta, mà nó ngày càng phát triển mạnh mẽ và có xu hướng phát triển rộng trên thế giới Với một lĩnh vực nhỏ đang được mọi người quan tâm của trí tuệ nhân tạo đó là nhận dạng Trong lĩnh vực này, chúng ta có thể thực hiện các loại nhận dạng khác nhau như: nhận dạng khuôn mặt, cảm xúc, động vật… và nó được ứng dụng vào các mặt của cuộc sống Ở đề tài này, em chọn đề tài nhận diện cảm xúc để thực hiện LỜI CẢM ƠN Trong thời gian làm báo cáo học phần, em đã nhận được nhiều sự giúp đỡ, đóng góp ý kiến và chỉ bảo nhiệt tình của thầy cô và bạn bè Em xin gửi lời cảm ơn chân thành đến Th.S Nguyễn Văn Bình, người đã tận tình hướng dẫn, trực tiếp chỉ bảo và tạo mọi điều kiện giúp đỡ em trong suốt quá trình làm báo cáo Em cũng xin chân thành cảm ơn các thầy cô trong khoa Công Nghệ Thông Tin Và Truyền Thông, những người đã dạy dỗ và trang bị cho em khiến thức đễ hoàn thành báo cáo này Mặc dù trong quá trình nghiên cứu đề tài , bản thân em có những cố gắng nhất định song do trình độ và thời gian có hạn nên đề tài không tránh khỏi những thiếu sót.vậy kinh mong các thầy cô và các bạn đóng góp ý kiến để em được hoàn thiện hơn NHẬN XÉT (Của giảng viên môn học) ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… MỤC LỤC Chương 1 Giới thiệu 1 1.1 Tổng quan .1 1.2 Phương pháp, kết quả .1 1.3 Cấu trúc đồ án 1 Chương 2 Nghiên cứu tổng quan 3 2.1 Giới thiệu hệ thống xữ lý ảnh 3 2.2 Python là gì ? 9 2.3 Tìm hiểu OpenCV ? 10 2.3.1 OpenCV là gì? 10 2.3.2 Ứng dụng của OpenCV 10 2.3.3 Chức năng của OpenCV .11 2.4 Tìm hiểu Keras và mô hình Convolutional Neural Network 12 2.4.1 Keras là gì ? 12 2.4.2 Mô hình Convolutional Neural Network 13 Chương 3 Triển khai xây dựng .20 3.1 Xây dựng tổng quan .20 3.2 Xây dựng chi tiết 21 Chương 4 Kết luận và hướng phát triển 24 4.1 Kết luận 24 4.2 Hướng phát triển 24 DANH MỤC HÌNH Hình 1 :Các bước cơ bản trong xử lý ảnh 4 Hình 2: Sơ đồ phân tích và xử lý ảnh và lưu đồ thông tin giữa các khối 8 Hình 3: Ứng dụng đơn giản của OpenCV 11 Hình 4 : Cấu trúc của Keras .12 Hình 5: Bộ xương cho module của Keras 12 Hình 6: Các lớp layer trong mô hình của Keras 13 Hình 7: Mô hình cơ bản của CNN .14 Hình 8: Mô hình mạng CNN .16 Hình 9 : Tạo ra neuron ẩn đầu tiên trong lớp ẩn 1 17 Hình 10: Dịch filter qua bên phải một cột sẽ tạo được neuron ẩn thứ 2 .18 Hình 11: Xử lý dữ liệu 21 Hình 12: Hàm nhận diện 22 Hình 13: Kết quả 23 DANH MỤC CỤM TỪ VIẾT TẮT STT Cụm từ Viết tắt 1 Convolutional neural network CNN Chương 1 Giới thiệu 1.1 Tổng quan Với sự phát triển nhanh chóng của ngành công nghệ thông tin và khả năng quay của các thiết bị như camera ngày càng tốt, kể cả trong điều kiện thiếu ánh sáng Thì việc áp dụng các hệ thống nhận dạng vào các thiết bị càng dễ dàng Áp dụng kiến thức đã học để phát triển ứng dụng như trên là cần thiết Bởi vì điều này cho phép học thêm các công nghệ mới, rèn luyện kỹ năng lập trình, đồng thời nâng cao kinh ngiệm và học thêm các kỹ năng quan trọng khác Chính vì thế, em chọn đề tài xây dựng ứng dụng nhận dạng số viết tay Xây dựng một ứng dụng nhận dạng số viết tay làm cho người xây dựng có thể nhận dạng được số viết tay thông qua camera 1.2 Phương pháp, kết quả Phương pháp xây dựng ứng dụng sẽ bao gồm các bước sau: - Tìm hiểu về các công nghệ đã và đang được ứng dụng để giải quyết bài toán trên - Nghiên cứu các ứng dụng về nhận dạng khuôn mặt đã có trong thực tế - Nghiên cứu các mã nguồn mở có hỗ trợ để giải quyết vấn đề nhận dạng khuôn mặt có trong một bức ảnh - Ứng dụng thư viện OpenCV và CNN Keras để xây dựng ứng dụng 1.3 Cấu trúc đồ án Phần tiếp theo của báo cáo bao gồm: Chương 2: Nghiên cứu tổng quan Trong chương này, em sẽ giới thiệu tổng quát về OpenCV và Python bao gồm: 1  Giới thiệu về hệ thống xữ lý ảnh  Python là gì?  Tìm hiểu OpenCV?  Tìm hiểu Keras và mô hình CNN Chương 3: Triển khai xây dựng Ở phần này em sẽ trình mô hình tổng quan của ứng dụng và cách thức triển khai nó Chương 4: Kết luận và hướng phát triển Trong chương này, em chia thành 2 phần Phần 1 kết luận sẽ giới thiệu về nhưng gì đã đạt được và hạn chế Phần 2 hướng phát triển đưa ra hướng đi tiếp theo của ứng dụng 2 Chương 2 Nghiên cứu tổng quan 2.1 Giới thiệu hệ thống xữ lý ảnh Xử lý ảnh là một lĩnh vực mang tính khoa học và công nghệ Nó là một ngành khoa học mới mẻ so với nhiều ngành khoa học khác nhưng tốc độ phát triển của nó rất nhanh, kích thích các trung tâm nghiên cứu, ứng dụng, đặc biệt là máy tính chuyên dụng riêng cho nó Xử lý ảnh được đưa vào giảng dạy ở bậc đại học ở nước ta khoảng chục năm nay Nó là môn học liên quan đến nhiều lĩnh vực và cần nhiều kiến thức cơ sở khác Đầu tiên phải kể đến Xử lý tín hiệu số là một môn học hết sức cơ bản cho xử lý tín hiệu chung, các khái niệm về tích chập, các biến đổi Fourier, biến đổi Laplace, các bộ lọc hữu hạn… Thứ hai, các công cụ toán như Đại số tuyến tính, Sác xuất, thống kê Một số kiến thứ cần thiết như Trí tuệ nhân tao, Mạng nơ ron nhân tạo cũng được đề cập trong quá trình phân tích và nhận dạng ảnh Các phương pháp xử lý ảnh bắt đầu từ các ứng dụng chính: nâng cao chất lượng ảnh và phân tích ảnh Ứng dụng đầu tiên được biết đến là nâng cao chất lượng ảnh báo được truyền qua cáp từ Luân đôn đến New York từ những năm 1920 Vấn đề nâng cao chất lượng ảnh có liên quan tới phân bố mức sáng và độ phân giải của ảnh Việc nâng cao chất lượng ảnh được phát triển vào khoảng những năm 1955 Điều này có thể giải thích được vì sau thế chiến thứ hai, máy tính phát triển nhanh tạo điều kiện cho quá trình xử lý ảnh sô thuận lợi Năm 1964, máy tính đã có khả năng xử lý và nâng cao chất lượng ảnh từ mặt trăng và vệ tinh Ranger 7 của Mỹ bao gồm: làm nổi đường biên, lưu ảnh Từ năm 1964 đến nay, các phương tiện xử lý, nâng cao chất lượng, nhận dạng ảnh phát triển không ngừng Các phương pháp tri thức nhân tạo như mạng nơ ron nhân tạo, các 3 Hình 3: Ứng dụng đơn giản của OpenCV 2.3.3 Chức năng của OpenCV  Image/video I/O, xử lý, hiển thị (core, imgproc, highgui)  Phát hiện các vật thể (objdetect, features2d, nonfree)  Geometry-based monocular or stereo computer vision (calib3d, stitching, videostab)  Chụp ảnh tính toán (photo, video, superres)  Học máy & phân cụm (ml, flann)  Tăng tốc CUDA (gpu) 2.4 Tìm hiểu Keras và mô hình Convolutional Neural Network 2.4.1 Keras là gì ? Keras là một library được phát triển vào năm 2015 bởi François Chollet, là một kỹ sư nghiên cứu deep learning tại google Nó là một open source cho neural network được viết bởi ngôn ngữ python keras là một API bậc cao có thể sử dụng chung với các thư viện deep learning nổi tiếng như tensorflow (được 11 phát triển bởi gg), CNTK (được phát triển bởi microsoft), theano (người phát triển chính Yoshua Bengio) keras có một số ưu điểm như: o Dễ sử dụng, xây dựng model nhanh o Có thể run trên cả cpu và gpu o Hỗ trợ xây dựng CNN, RNN và có thể kết hợp cả 2 Hình 4 : Cấu trúc của Keras Hình 5: Bộ xương cho module của Keras 12 Hình 6: Các lớp layer trong mô hình của Keras 2.4.2 Mô hình Convolutional Neural Network Convolutional Neural Network (CNNs – Mạng nơ-ron tích chập) là một trong những mô hình Deep Learning tiên tiến Nó giúp cho chúng ta xây dựng được những hệ thống thông minh với độ chính xác cao như hiện nay Như hệ thống xử lý ảnh lớn như Facebook, Google hay Amazon đã đưa vào sản phẩm của mình những chức năng thông minh như nhận diện khuôn mặt người dùng, phát triển xe hơi tự lái hay drone giao hàng tự động CNN được sử dụng nhiều trong các bài toán nhận dạng các object trong ảnh Để tìm hiểu tại sao thuật toán này được sử dụng rộng rãi cho việc nhận dạng (detection), chúng ta hãy cùng tìm hiểu về thuật toán này 13 Hình 7: Mô hình cơ bản của CNN Convolutional là gì? Convolutional là một cửa sổ trượt (Sliding Windows) trên một ma trận Các convolutional layer có các parameter(kernel) đã được học để tự điều chỉnh lấy ra những thông tin chính xác nhất mà không cần chọn các feature Trong hình ảnh ví dụ trên, ma trận bên trái là một hình ảnh trắng đen được số hóa Ma trận có kích thước 5×5 và mỗi điểm ảnh có giá trị 1 hoặc 0 là giao điểm của dòng và cột 14 Convolution hay tích chập là nhân từng phần tử trong ma trận 3 Sliding Window hay còn gọi là kernel, filter hoặc feature detect là một ma trận có kích thước nhỏ như trong ví dụ trên là 3×3 Convolution hay tích chập là nhân từng phần tử bên trong ma trận 3×3 với ma trận bên trái Kết quả được một ma trận gọi là Convoled feature được sinh ra từ việc nhận ma trận Filter với ma trận ảnh 5×5 bên trái Cấu trúc của mạng CNN Mạng CNN là một tập hợp các lớp Convolution chồng lên nhau và sử dụng các hàm nonlinear activation như ReLU và tanh để kích hoạt các trọng số trong các node Mỗi một lớp sau khi thông qua các hàm kích hoạt sẽ tạo ra các thông tin trừu tượng hơn cho các lớp tiếp theo Mỗi một lớp sau khi thông qua các hàm kích hoạt sẽ tạo ra các thông tin trừu tượng hơn cho các lớp tiếp theo Trong mô hình mạng truyền ngược (feedforward neural network) thì mỗi neural đầu vào (input node) cho mỗi neural đầu ra trong các lớp tiếp theo Mô hình này gọi là mạng kết nối đầy đủ (fully connected layer) hay mạng toàn vẹn (affine layer) Còn trong mô hình CNNs thì ngược lại Các layer liên kết được với nhau thông qua cơ chế convolution Layer tiếp theo là kết quả convolution từ layer trước đó, nhờ vậy mà ta có được các kết nối cục bộ Như vậy mỗi neuron ở lớp kế tiếp sinh ra từ kết quả của filter áp đặt lên một vùng ảnh cục bộ của neuron trước đó Mỗi một lớp được sử dụng các filter khác nhau thông thường có hàng trăm hàng nghìn filter như vậy và kết hợp kết quả của chúng lại Ngoài ra có một số layer khác như pooling/subsampling layer dùng để chắt lọc lại các thông tin hữu ích 15 hơn (loại bỏ các thông tin nhiễu) Trong quá trình huấn luyện mạng (traning) CNN tự động học các giá trị qua các lớp filter dựa vào cách thức mà bạn thực hiện Ví dụ trong tác vụ phân lớp ảnh, CNNs sẽ cố gắng tìm ra thông số tối ưu cho các filter tương ứng theo thứ tự raw pixel > edges > shapes > facial > highlevel features Layer cuối cùng được dùng để phân lớp ảnh Hình 8: Mô hình mạng CNN Trong mô hình CNN có 2 khía cạnh cần quan tâm là tính bất biến (Location Invariance) và tính kết hợp (Compositionality) Với cùng một đối tượng, nếu đối tượng này được chiếu theo các gốc độ khác nhau (translation, rotation, scaling) thì độ chính xác của thuật toán sẽ bị ảnh hưởng đáng kể Pooling layer sẽ cho bạn tính bất biến đối với phép dịch chuyển (translation), phép quay (rotation) và phép co giãn (scaling) Tính kết hợp cục bộ cho ta các cấp độ biểu diễn thông tin từ mức độ thấp đến mức độ cao và trừu tượng hơn thông qua convolution từ các filter Đó là lý do tại sao CNNs cho ra mô hình với độ chính xác rất cao Cũng giống như cách con người nhận biết các vật thể trong tự nhiên Mạng CNN sử dụng 3 ý tưởng cơ bản: 16  các trường tiếp nhận cục bộ (local receptive field)  trọng số chia sẻ (shared weights)  tổng hợp (pooling) Trường tiếp nhận cục bộ (local receptive field) Đầu vào của mạng CNN là một ảnh Ví dụ như ảnh có kích thước 28×28 thì tương ứng đầu vào là một ma trận có 28×28 và giá trị mỗi điểm ảnh là một ô trong ma trận Trong mô hình mạng ANN truyền thống thì chúng ta sẽ kết nối các neuron đầu vào vào tầng ảnh Tuy nhiên trong CNN chúng ta không làm như vậy mà chúng ta chỉ kết nối trong một vùng nhỏ của các neuron đầu vào như một filter có kích thước 5×5 tương ứng (28- 5 + 1) 24 điểm ảnh đầu vào Mỗi một kết nối sẽ học một trọng số và mỗi neuron ẩn sẽ học một bias Mỗi một vùng 5×5 đấy gọi là một trường tiếp nhận cục bộ Một cách tổng quan, ta có thể tóm tắt các bước tạo ra 1 hidden layer bằng các cách sau: Hình 9 : Tạo ra neuron ẩn đầu tiên trong lớp ẩn 1 17 Hình 10: Dịch filter qua bên phải một cột sẽ tạo được neuron ẩn thứ 2 Với bài toán nhận dạng ảnh người ta thường gọi ma trận lớp đầu vào là feature map, trọng số xác định các đặc trương là shared weight và độ lệch xác định một feature map là shared bias Như vậy đơn giản nhất là qua các bước trên chúng ta chỉ có 1 feature map Tuy nhiên trong nhận dạng ảnh chúng ta cần nhiều hơn một feature map Như vậy, local receptive field thích hợp cho việc phân tách dữ liệu ảnh, giúp chọn ra những vùng ảnh có giá trị nhất cho việc đánh giá phân lớp Trọng số chia sẻ (shared weight and bias) Đầu tiên, các trọng số cho mỗi filter (kernel) phải giống nhau Tất cả các nơ-ron trong lớp ẩn đầu sẽ phát hiện chính xác feature tương tự chỉ ở các vị trí khác nhau trong hình ảnh đầu vào Chúng ta gọi việc map từ input layer sang hidden layer là một feature map Vậy mối quan hệ giữa số lượng Feature map với số lượng tham số là gì?  Chúng ta thấy mỗi fearture map cần 25 = 5×5 shared weight và 1 shared bias Như vậy mỗi feature map cần 5×5+1 = 26 tham số Như 18 vậy nếu có 10 feature map thì có 10×26 = 260 tham số Chúng ta xét lại nếu layer đầu tiên có kết nối đầy đủ nghĩa là chúng ta có 28×28=784 neuron đầu vào như vậy ta chỉ có 30 neuron ẩn Như vậy ta cần 28x28x30 shared weight và 30 shared bias Tổng số tham số là 28x28x30+30 tham số lớn hơn nhiều so với CNN Ví dụ vừa rồi chỉ mô tả để thấy được sự ước lượng số lượng tham số chứ chúng ta không so sánh được trực tiếp vì 2 mô hình khác nhau Nhưng điều chắc chắn là nếu mô hình có số lượng tham số ít hơn thì nó sẽ chạy nhanh hơn Tóm lại, một convolutional layer bao gồm các feature map khác nhau Mỗi một feature map giúp detect một vài feature trong bức ảnh Lợi ích lớn nhất của trọng số chia sẻ là giảm tối đa số lượng tham số trong mạng CNN Lớp tổng hợp (pooling layer) Lớp pooling thường được sử dụng ngay sau lớp convulational để đơn giản hóa thông tin đầu ra để giảm bớt số lượng neuron Như vậy qua lớp Max Pooling thì số lượng neuron giảm đi phân nửa Trong một mạng CNN có nhiều Feature Map nên mỗi Feature Map chúng ta sẽ cho mỗi Max Pooling khác nhau Chúng ta có thể thấy rằng Max Pooling là cách hỏi xem trong các đặc trưng này thì đặc trưng nào là đặc trưng nhất Ngoài Max Pooling còn có L2 Pooling Cuối cùng ta đặt tất cả các lớp lại với nhau thành một CNN với đầu ra gồm các neuron với số lượng tùy bài toán 2 lớp cuối cùng của các kết nối trong mạng là một lớp đầy đủ kết nối (fully connected layer) Lớp này nối mọi nơron từ lớp max pooled tới mọi nơron của tầng ra 19 Chương 3 Triển khai xây dựng 3.1 Xây dựng tổng quan  Các bước tổng quan:  Chuyển ảnh màu đưa vào thành ảnh xám và tăng chất lượng ảnh  Chia dữ liệu đầu vào thành dữ liệu trainning, test và validation  Tăng cường dữ liệu đầu vào  Xây dựng mô hình CNN và lưu vào “ model_trained.p”  Đọc ảnh từ camera và đưa vào mô hình so sánh  Hiển thi kết quả ra camera 20 3.2 Xây dựng chi tiết Hình 11: Xử lý dữ liệu 21 Hình 12: Hàm nhận diện 22 23 Hình 13: Kết quả Chương 4 Kết luận và hướng phát triển 4.1 Kết luận Nhìn chung, sau khi kết thúc đề tài em đã đạt được những điều sau đây: Biết được cách hoạt động của một hệ thống xữ lý ảnh Tìm hiểu được Python, OpenCV và Keras là gì là gì Sữ dụng được python, opencv và xây thừng thành công mô hình CNN của Keras Bước đầu thành công cơ bản của ứng dụng “nhận diện khuôn mặt” đã đáp ứng được một số yêu cầu cơ bản như sau:  Xữ lý và đào tạo dữ liệu ảnh đưa vào dựa trên mô hình CNN  Nhận dạng thành công cảm xúc qua camera Bên cạnh đó, nó còn một số hạn chế như sau: 24 - Thời gian đào tạo dữ liệu hơi lâu và phải đào tạo lại từ đầu khi cần thêm dữ liệu mới - Chưa hoàn toàn tự động 4.2 Hướng phát triển Các hướng phát triển mà em có thể hướng đến là:  Ứng dụng vào IoT  Xây dựng thành một ứng dụng hoàn chỉnh 25 ... thuyết nhận dạng, mơ hình tốn học ảnh phân theo hai loại nhận dạng ảnh bản: - Nhận dạng theo tham số - Nhận dạng theo cấu trúc Một số đối tượng nhận dạng phổ biến áp dụng khoa học công nghệ là: nhận. .. nhân tạo nhận dạng Trong lĩnh vực này, thực loại nhận dạng khác như: nhận dạng khn mặt, cảm xúc, động vật… ứng dụng vào mặt sống Ở đề tài này, em chọn đề tài nhận diện cảm xúc để thực LỜI CẢM ƠN... khoa học công nghệ là: nhận dạng ký tự (chữ in, chữ viết tay, chữ ký điện tử), nhận dạng văn (Text), nhận dạng vân tay, nhận dạng mã vạch, nhận dạng mặt người… f) Cơ sở tri thức (Knowledge Base)

Ngày đăng: 20/04/2021, 22:21

Mục lục

  • Chương 1 Giới thiệu

    • 1.1 Tổng quan.

    • 1.2 Phương pháp, kết quả.

    • 1.3 Cấu trúc đồ án.

    • Chương 2 Nghiên cứu tổng quan.

      • 2.1 Giới thiệu hệ thống xữ lý ảnh.

      • 2.2 Python là gì ?

      • 2.3 Tìm hiểu OpenCV ?

        • 2.3.1 OpenCV là gì?

        • 2.3.2 Ứng dụng của OpenCV.

        • 2.3.3 Chức năng của OpenCV.

        • 2.4 Tìm hiểu Keras và mô hình Convolutional Neural Network.

          • 2.4.1 Keras là gì ?

          • 2.4.2 Mô hình Convolutional Neural Network.

          • Chương 3 Triển khai xây dựng.

            • 3.1 Xây dựng tổng quan.

            • 3.2 Xây dựng chi tiết.

            • Chương 4 Kết luận và hướng phát triển.

              • 4.1 Kết luận.

              • 4.2 Hướng phát triển.

Tài liệu cùng người dùng

Tài liệu liên quan