Đăng ký Đăng nhập
Trang chủ Xây dựng công cụ nâng cao chất lượng ảnh dựa trên Keras...

Tài liệu Xây dựng công cụ nâng cao chất lượng ảnh dựa trên Keras

.PDF
41
84
81

Mô tả:

TRƯỜNG ĐẠI HỌC LẠC HỒNG KHOA CÔNG NGHỆ THÔNG TIN  ----- ----            BÁO CÁO NGHIÊN CỨU KHOA HỌC ĐỀ TÀI: XÂY DỰNG CÔNG CỤ NÂNG CAO CHẤT LƯỢNG ẢNH DỰA TRÊN KERAS Nguyễn Đăng Khoa BIÊN HÒA, THÁNG 11/2018 TRƯỜNG ĐẠI HỌC LẠC HỒNG KHOA CÔNG NGHỆ THÔNG TIN ----- ----- BÁO CÁO NGHIÊN CỨU KHOA HỌC     ĐỀ TÀI:   CỤ NÂNG CAO CHẤT XÂY DỰNG CÔNG  LƯỢNG ẢNH DỰA TRÊN KERAS       Sinh viên thực hiện: Nguyễn Đăng Khoa Giáo viên hướng dẫn: Th.S Tạ Nguyễn BIÊN HÒA, THÁNG 11/2018 I LỜI CẢM ƠN Sau khoảng thời gian học tập và rèn luyện ở trường Đại Học Lạc Hồng. Em đã học được rất nhiều thứ bổ ích cũng như cách sống bên cạnh những kiến thức mà thầy cô đã chỉ dậy. Bằng sự biết ơn và kính trọng, em xin gửi lời cảm ơn chân thành đến ban giám hiệu, các thầy cô trong trường và đặc biệt là các thầy cô trong khoa Công Nghệ Thông Tin đã luôn tạo cho em một môi trường học tập tốt nhất. Em xin gửi lời cảm ơn đến Th.S Tạ Nguyễn, là giáo viên hướng dẫn cho em. Thầy đã luôn theo sát, hướng dẫn cũng như động viên em trong quá trình làm đề tài. Ngoài ra em cũng xin gửi lời cảm ơn đến gia đình và bạn bè của em, những người đã luôn theo sát và động viên em trong quá trình học tập. Mặc dù đã cố gắng rất nhiều, nhưng bài luận không tránh khỏi những thiếu sót. Em rất mong nhận được sự thông cảm, chỉ dẫn, giúp đỡ và đóng góp ý kiến của ban giám hiệu và các quý thầy cô. Em xin chân thành cảm ơn Biên Hòa, tháng 11 năm 2018 Sinh viên thực hiện Nguyễn Đăng Khoa II MỤC LỤC LỜI CẢM ƠN ................................................................................................................................ I MỤC LỤC ..................................................................................................................................... II DANH MỤC HÌNH ...................................................................................................................... V PHẦN MỞ ĐẦU ............................................................................................................................ 1 1. Lý do chọn đề tài ............................................................................................... 1 2. Tình hình nghiên cứu ......................................................................................... 1 2.1. Ngoài nước ..................................................................................................... 1 2.2. Trong nước ..................................................................................................... 2 3. Mục tiêu nghiên cứu .......................................................................................... 2 4. Đối tượng và phạm vi nghiên cứu ..................................................................... 2 4.1. Đối tượng nghiên cứu ..................................................................................... 2 4.2. Phạm vi nghiên cứu ........................................................................................ 3 5. Phương pháp nghiên cứu ................................................................................... 3 6. Những đóng góp mới của đề tài và những vấn đề mà đề tài chưa thực hiện được ........................................................................................................................ 3 6.1. Những đóng góp mới ...................................................................................... 3 6.2. Những vấn đề chưa thực hiện được ................................................................ 3 7. Kết cấu của đề tài............................................................................................... 3 Chương 1 : Cơ sở lý thuyết ..................................................................................... 5 1.1. Tổng quan về học máy ................................................................................ 5 1.1.1. Học máy là gì? ..................................................................................... 5 1.1.2. Các phương pháp học máy................................................................... 5 1.1.3. Tại sao phải học máy ........................................................................... 6 1.1.3.1. Trường hợp không ai biết câu trả lời ........................................... 6 1.1.3.2. Trường hợp chúng ta biết cách thực hiện nhưng không thể diễn giải để máy tính có thể thực hiện lại được......................................................... 6 1.1.3.3. Trường hợp dữ liệu thay đổi liên tục, ta không thể thường xuyên lập trình lại chức năng đó .................................................................................. 7 1.1.3.4. Trường hợp ta không thể lập trình cụ thể cho từng người dùng do giới hạn về nhân lực .......................................................................................... 7 1.1.4. Ứng dụng của học máy hiện nay.......................................................... 7 1.2. Thư viện Keras ............................................................................................ 8 III 1.2.1. Thư viện Keras là gì? ........................................................................... 8 1.2.2. Tại sao lại sử dụng Keras ..................................................................... 8 1.2.3. Một số thuật ngữ trong học máy và trong Keras ................................. 9 1.2.3.1. Deep Learning.............................................................................. 9 1.2.3.2. Layer ............................................................................................ 9 1.2.3.3. Model ........................................................................................... 9 1.2.3.4. Train ............................................................................................. 9 1.2.3.5. Data ............................................................................................ 10 1.2.3.6. Sequential model........................................................................ 10 1.2.3.7. Custom model ............................................................................ 10 1.2.3.8. Fit ............................................................................................... 10 1.2.3.9. Compile ...................................................................................... 10 1.2.3.10. Predict ...................................................................................... 10 1.2.3.11. Test........................................................................................... 10 1.2.3.12. Overfitting ................................................................................ 11 1.2.3.13. Features .................................................................................... 11 1.2.3.14. Convolution ............................................................................. 11 1.2.4. Một số layer chính trong Keras .......................................................... 12 1.2.4.1. Convolution Layer ..................................................................... 12 1.2.4.2. Conv2D Transpose .................................................................... 13 1.2.4.3. Pooling Layer ............................................................................. 13 1.2.4.4. Fully-Connected Layer .............................................................. 13 1.2.5. Quy trình làm việc của Keras: ........................................................... 13 1.3. Ngôn ngữ lập trình và các thư viện khác dùng trong đề tài ...................... 14 1.3.1. Python 3.6.3 ....................................................................................... 14 1.3.2. Thư viện OpenCV .............................................................................. 14 1.3.3. Thư viện Tensorflow .......................................................................... 14 1.3.4. Thư viện Numpy ................................................................................ 15 1.4. Mô hình CNN ............................................................................................ 15 1.4.1. Tầng Convolution (Conv) .................................................................. 15 1.4.2. Tầng Pooling ...................................................................................... 16 1.4.3. Tầng Relu ........................................................................................... 17 1.4.4. Tầng Fully-connected ........................................................................ 18 IV 1.4.5. Kết luận .............................................................................................. 18 1.5. Mô hình SRCNN ....................................................................................... 19 1.6. Tiểu kết ...................................................................................................... 20 Chương 2 : Xây dựng công cụ cải thiện chất lượng ảnh dựa trên Keras .............. 21 2.1. Tìm hiểu .................................................................................................... 21 2.2. Chọn phương pháp học máy...................................................................... 21 2.3. Thu thập kiến thức từ nhiều nguồn ........................................................... 22 2.4. Cài đặt môi trường làm việc và một số thư viện cần thiết ........................ 22 2.4.1. Cài đặt chương trình Atom ................................................................ 22 2.4.2. Cài đặt Python .................................................................................... 22 2.4.3. Cài đặt thư viện OpenCV ................................................................... 22 2.4.4. Cài đặt thư viện Tensorflow trên windows ........................................ 23 2.4.5. Cách cài đặt Keras trên windows: ...................................................... 23 2.4.6. Cài đặt thư viện numpy ...................................................................... 23 2.5. Xử lý data và xây dựng mô hình học máy ................................................ 23 2.5.1. Vài nét về data.................................................................................... 23 2.5.2. Xử lý data ........................................................................................... 23 2.5.3. Xây dựng mô hình học máy ............................................................... 25 2.5.4. Quá trình học máy .............................................................................. 26 2.5.5. Giao diện của công cụ ........................................................................ 27 2.6. Tiểu kết ...................................................................................................... 27 Chương 3 : Thử nghiệm và đánh giá kết quả ........................................................ 28 3.1. Kiểm chứng mô hình ................................................................................. 28 3.2. Đánh giá công cụ ....................................................................................... 31 3.3. Tiểu kết ...................................................................................................... 31 KẾT LUẬN .................................................................................................................................. 32 TÀI LIỆU THAM KHẢO ............................................................................................................ 33 V DANH MỤC HÌNH Hình 1-1: Phân loại học máy. ........................................................................6 Hình 1-2: Keras đứng thứ 2 trong bảng xếp hạng về độ phổ biến trên GibHub. .................................................................................................................................8 Hình 1-3: Minh họa về lớp convolution 2D. ................................................12 Hình 1-4: Quy trình làm việc của Keras. .....................................................13 Hình 1-5: Phép tính trong tầng convolution. ...............................................16 Hình 1-6: Kết quả thu được sau khi tính toán. .............................................16 Hình 1-7: Phép tính trong tầng Pooling. ......................................................17 Hình 1-8: Kết nối các neural. .......................................................................18 Hình 1-9: Hình ảnh minh họa về mô hình CNN. .........................................19 Hình 1-10: Minh họa về tăng kích thước ảnh vẫn giữ được độ nét. ............20 Hình 2-1: Mô hình học máy có giám sát......................................................22 Hình 2-2: Cách trích xuất data. ....................................................................24 Hình 2-3: Mô hình học máy của đề tài. .......................................................25 Hình 2-4: Quá trình học máy của Keras. .....................................................26 Hình 2-5: Giao diện của công cụ. ................................................................27 Hình 3-1: Kết quả kiểm chứng. ....................................................................30 1 PHẦN MỞ ĐẦU 1. Lý do chọn đề tài Photoshop hiện nay có lẽ là công cụ được đề cập đến đầu tiên trong vấn đề xử lý nâng cao chất lượng ảnh. Việc nâng cao chất lượng một tấm ảnh là việc khá dễ dàng đối với những những ai đã thành tạo photoshop. Tuy nhiên với những người chưa biết gì về công cụ này cũng như họ không muốn mất thời gian để tìm hiểu và sử dụng nó thì phải làm sao. Đó chính là lý do tác giả xây dụng một công cụ giúp nâng cao chất lượng ảnh tự động dựa vào học máy. Những bài báo cáo và nghiên cứu hiện nay về Computer Vision hay cụ thể hơn là Image Super-Resolution đều đang rất được quan tâm ở trên thế giới. Việc cải thiện chất lượng ảnh có thể giúp nhiều vấn đề như: giúp những cơ quan điều tra, kiểm soát bằng camera tốt hơn, cải thiện hình ảnh từ những ảnh chất lượng thấp trong điện thoại của bạn hay tuyệt vời hơn là cải thiện chất lượng của những tấm ảnh đã quá hạn sử dụng. Ở Việt Nam các trường đại học cũng đã bắt đầu đưa xử lý ảnh làm môn học chuyên ngành của sinh viên các ngành công nghệ thông tin. 2. Tình hình nghiên cứu 2.1. Ngoài nước Việc nâng cao chất lượng ảnh hiện đang là một bài toán rất được chú ý trên toàn thế giới, bằng chứng cho điều đó là vào năm 2017 cuộc thi “New Trends in Image Restoration and Enhancement workshop and challenge on Image superresolution” được tổ chức cùng với The Conference on Computer Vision and Pattern Recognition – CVPR 2017 (đây là một trong những hội nghị lớn nhất cho Machine learning và Computer Vision) đã cho thấy tiềm năng đầy hứa hẹn trong tương lai của mình. Trong đề tài của các tác giả Yifan Wang, Lijun Wang, Hongyu Wang, Peihua Li có tên “End-to-End Image Super-Resolution via Deep and Shallow Convolutional Networks” đã sử dụng keras để tạo model học máy giúp cho việc tăng kích thước ảnh lên nhưng vẫn giữ được độ nét của hình ảnh [13]. 2 Ngoài ra bài toán về nâng cao chất lượng ảnh còn được ứng dụng trong một trang website khá nổi tiếng là trang letsenhance.io: là một trong những website miễn phí cho phép người dùng tận dụng mạng nơ-ron, hoặc nói cách khác là AI để cải thiện và nâng cao chất lượng hình ảnh mà các công cụ như Photoshop không thể làm được. 2.2. Trong nước So với các nước phát triển khác thì tình hình nghiên cứu trong nước ta có thể nói là ít sôi động hơn. Dưới đây là một vài đề tài nổi bật liên quan đến xử lý và nâng cao chất lượng ảnh. Đề tài của tác giả Nguyễn Xuân Cường về nghiên cứu các kỹ thuật xử lý ảnh phục vụ việc nâng cao chất lượng nhận dạng tiếng Việt. Ở đề tài này tác giả sử dụng OpenCV để tăng độ nét, tăng độ tương phản, loại bỏ phông nền, loại bỏ nhiễu… [14]. Đề tài của tác giả Phạm Ngọc Quảng về các phương pháp dùng để nâng cao chất lượng ảnh sử dụng trong y học như tăng giảm độ sáng, tách ngưỡng, bó cụm, cân bằng histogram… [15]. 3. Mục tiêu nghiên cứu Đề tài thực hiện với các mục tiêu:  Nghiên cứu về thư viện Keras và thư viện OpenCV.  Tìm hiểu và tạo ra một mô hình học máy phù hợp.  Tìm và xây dựng tập data dành cho quá trình học.  Xây dựng công cụ giúp tăng gấp đôi kích thước ảnh và cải thiện được độ nét so với phóng to gấp đôi bình thường.  Kiểm tra và đánh giá công cụ. 4. Đối tượng và phạm vi nghiên cứu 4.1. Đối tượng nghiên cứu  Phương pháp học máy.  Thư viện học máy Keras. 3  Thư viện xử lý ảnh OpenCV. 4.2. Phạm vi nghiên cứu Phạm vi nghiên cứu là những tấm ảnh có độ phân giải thấp (Vd: 300x200, 400x205) 5. Phương pháp nghiên cứu  Sử dụng mô hình CNN (Convolutional Neural Network) để cải thiện chất lượng ảnh và giảm thiểu việc vỡ điểm ảnh khi phóng to lên.  Ngôn ngữ lập trình được sử dụng là Python phiên bản 3.6.3.  Sử dụng thư viện Keras để xây dựng mô hình.  Sử dụng Tensorflow làm nền tảng cho Keras.  Sử dụng tập Dataset của DIV2K gồm 900 ảnh độ phân giải lớn (800 Train, 100 Valid). 6. Những đóng góp mới của đề tài và những vấn đề mà đề tài chưa thực hiện được 6.1. Những đóng góp mới  Đơn giản hóa quá trình nâng cao chất lượng ảnh.  Giúp phổ biến các bài toán về học máy cũng như xử lý ảnh ở Việt Nam. 6.2. Những vấn đề chưa thực hiện được  Chưa tạo được một công cụ thân thiện nhất với người sử dụng.  Không xử lý được các tấm ảnh có độ phân giải cao. 7. Kết cấu của đề tài Luận văn được chia làm ba phần: phần mở đầu, phần nội dung và phần kết luận. Phần mở đầu Nêu lý do chọn đề tài, tổng quan tình hình phát triển trong nước lẫn ngoài nước, mục tiêu nghiên cứu đề tài, đối tượng, phạm vi, phương pháp nghiên cứu 4 cũng như những đóng góp mới của đề tài. Cũng chỉ ra mặt hạn chế mà đề tài chưa thực hiện được để có thể tiếp tục phát triển đề tài. Phần nội dung chính: gồm 3 chương  Chương 1: Cơ sở lý thuyết Trong chương này tác giả sẽ trình bày tổng quan về Machine Learning và Deep Learning, các phương pháp đào tạo học máy giám sát, học máy không giám sát…. Đồng thời sẽ giới thiệu về thư viện học máy Keras và một số thư viện mà tác giả đã sử dụng trong đề tài cùng với chức năng của những thư viện đó.  Chương 2: Xây dựng công cụ cải thiện chất lượng ảnh dựa trên Keras Trong chương này tác giả trình bày chi tiết về các bước mà tác giả đã làm để hoàn thành được đề tài này.  Chương 3: Thử nghiệm và đánh giá kết quả Trong chương này tác giả đã nêu ra phương pháp để thử nghiệm và đánh giá được kết quả mà công cụ này đem lại. Phần kết luận Đưa ra những kết luận và kiến nghị về chương trình đã xây dựng. Commented [TMD1]: Viết hoa tên riêng 5 Chương 1 : CƠ SỞ LÝ THUYẾT 1.1. Tổng quan về học máy 1.1.1. Học máy là gì?  Machine Learning là hướng nghiên cứu trong AI, tập trung vào việc tạo ra các cỗ máy có khả năng học hỏi mà không cần phải được lập trình một cách cụ thể. Học hỏi là một kỹ năng quan trọng bậc nhất đối với sự hình thành trí tuệ con người, do đó nếu chúng ta muốn xây dựng các hệ thống AI có trí tuệ như con người thì chúng ta trước hết phải tạo ra các cỗ máy có khả năng tự học hỏi dựa trên các kinh nghiệm mà chúng thu thập được trong suốt quá trình hoạt động.  Machine Learning khác với hướng nghiên cứu cổ điển về AI, trong đó các lập trình viên sẽ tạo ra các quy tắc để máy móc từng bước làm theo thay vì cho phép chúng tự nghiên cứu, khám phá để bổ sung kiến thức cho chính mình. Tất nhiên, Machine Learning vẫn bao gồm phương thức lập trình cổ điển nêu trên, và còn kết hợp các quy tắc cổ điển với kiến thức mà máy móc thu thập được để trở nên thông minh hơn [2]. 1.1.2. Các phương pháp học máy Có 4 phương pháp học máy như bên dưới:  Học có giám sát (supervised learning) cần có các dữ liệu dùng để "học", và phải đưa ra được một kết quả nhất định.  Học không giám sát (unsupervised learning) cũng cần có các dữ liệu dùng để "học", nhưng không phải đưa ra các kết quả cụ thể nào.  Học bán giám sát (semi-supervised learning) cũng cần có các dữ liệu dùng để "học", và có thể đưa ra được một vài kết quả khác nhau.  Học củng cố (reinforcement learning) là một cách "học" đang trở nên vô cùng phổ biến hiện nay. Trong học củng cố, AI sẽ được thưởng dựa trên những gì nó làm được. Học củng cố có thể giúp máy móc đạt được những khả năng như hiểu được làm sao để chơi một game máy tính thông qua một quá trình thử và lỗi (trial-and-error), dựa trên việc nghiên cứu làm cách nào để tăng điểm số của mình. 6 Hình 1-1: Phân loại học máy. 1.1.3. Tại sao phải học máy Dưới đây là 4 trường hợp khiến chúng ta phải cần dùng đến học máy [3]: 1.1.3.1. Trường hợp không ai biết câu trả lời Đây là trường hợp con người không thể nhưng máy tính có thể. Trong ngành y học, các nhà khoa học đã tiến hành hàng trăm cuộc thí nghiệm để tìm ra loại thuốc có khả năng kháng lại virus HIV. Nhưng cho đến hiện nay, chúng ta vẫn chưa thể tìm ra được câu trả lời vì giới hạn thời gian không cho phép chúng ta tiến hành tất cả hàng triệu phép thử để tìm ra loại thuốc hữu hiệu nhất. Thật là tốt biết mấy, nếu chúng ta có thể sử dụng sức mạnh của máy tính. Ta sẽ lấy tất cả dữ liệu của các loại thuốc hiện có. Sau đó, xác định xem đâu là loại thuốc có khả năng kháng lại virus HIV. Nhờ vậy mà ta đã thu hẹp và giới hạn lại thí nghiệm của mình giúp tiết kiệm rất nhiều thời gian. 1.1.3.2. Trường hợp chúng ta biết cách thực hiện nhưng không thể diễn giải để máy tính có thể thực hiện lại được Đây là trường hợp con người có thể nhưng máy tính không thể. Cho một tấm hình có kí tự viết tay, xác định xem tấm hình đó chứa kí tự gì nằm trong bảng chữ cái ABC. Quả thật với khả năng của con người, ta có thể nhận biết ngay đó là kí tự gì chỉ trong vài giây. Nhưng ngược lại, đối với máy tính, ta khó có thể diễn giải được tại sao chúng ta có thể làm được như vậy. 7 1.1.3.3. Trường hợp dữ liệu thay đổi liên tục, ta không thể thường xuyên lập trình lại chức năng đó Trong chứng khoán, ta luôn muốn phân tích dữ liệu 10 ngày trước đó, để có thể đưa ra quyết định cho giá trị chứng khoán ngày hiện tại. Do dữ liệu thay đổi liên tục, ta cần một hệ thống có thể tự cập nhật và phân tích để hỗ trợ đưa ra quyết định có độ chính xác cao nhất. 1.1.3.4. Trường hợp ta không thể lập trình cụ thể cho từng người dùng do giới hạn về nhân lực Làm sao ta biết được thói quen của từng người dùng khi mua sản phẩm online để có thể gợi ý họ mua những sản phẩm tương ứng với những sản phẩm họ đã mua trước đó. Amazon hay Youtube là những ví dụ cho các hệ thống có khả năng xác định thói quen và xu hướng của người dùng để có thể đưa ra những gợi ý chính xác giúp nâng cao trải nghiệm của người dùng. 1.1.4. Ứng dụng của học máy hiện nay Học máy hiện diện trong các bộ lọc thư rác (spam) mà các hệ thống email sử dụng để phân loại email hữu ích và email rác. Để thực hiện việc lọc thư, các bộ lọc sẽ được các lập trình viên trang bị những quy tắc ban đầu, sau đó trong quá trình hoạt động nó sẽ tự động học để thêm vào các quy tắc khác mà nó nghĩ sẽ giúp lọc ra được những email hữu ích cho người dùng. Ngoài ra học máy còn được ứng dụng vào các trường hợp sau:  Phát hiện gian lận.  Các kết quả tìm kiếm trên web.  Quảng cáo theo thời gian thực trên các trang web và các thiết bị di động.  Phân tích tình cảm dựa trên văn bản.  Điểm số tín dụng và lời mời chào tiếp theo tốt nhất.  Dự đoán những hư hỏng của thiết bị.  Những mô hình định giá mới. 8  Phát hiện xâm nhập mạng.  Nhận dạng qua pattern (mẫu) và hình ảnh. 1.2. Thư viện Keras 1.2.1. Thư viện Keras là gì? Keras là một Framework Machine Learning được viết bằng Python nhằm giảm thiểu thời gian giữa việc lên các ý tưởng và giai đoạn thực hiện chúng. Nó bao gồm hai API high-level: Keras Sequential và Keras Functional [16]. Ngoài ra Keras cũng cho phép người dùng linh hoạt thay đổi Tensorflow và Theano (C++) làm backend. Như đã nêu trên, sức mạnh của Keras nằm ở việc dễ dàng triển khai các mô hình học sâu cấp cao, nên đó là lý do tôi sẽ sử dụng Keras với Tensorflow backend để phát triển mô hình của đề tài này. Commented [TMD2]: Tham khảo ở đâu? Commented [TMD3]: Nguồn tham khảo? Hình 1-2: Keras đứng thứ 2 trong bảng xếp hạng về độ phổ biến trên GibHub (17). 1.2.2. Tại sao lại sử dụng Keras Phổ biến: Là thư viện được khá nhiều người dùng nên các tài liệu hướng dẫn rất chi tiết và dễ dàng tìm được. Ngôn ngữ Python: Dù thư viện Caffe hay Theano cũng có cú pháp sử dụng khá đơn giản nhưng ở Keras lại có một ưu điểm khá quan trọng đó chính là được viết bằng ngôn ngữ Python. Python hỗ trợ khá nhiều thư viện giúp lập trình dễ dàng và nhanh chóng. 9 1.2.3. Một số thuật ngữ trong học máy và trong Keras 1.2.3.1. Deep Learning Deep Learning là một chi của ngành máy học dựa trên một tập hợp các thuật toán để cố gắng mô hình dữ liệu trừu tượng hóa ở mức cao bằng cách sử dụng nhiều lớp xử lý với cấu trúc phức tạp, hoặc bằng cách khác bao gồm nhiều biến đổi phi tuyến. Học sâu là một phần của một họ các phương pháp học máy rộng hơn dựa trên đại diện học của dữ liệu. Một quan sát (ví dụ như, một hình ảnh) có thể được biểu diễn bằng nhiều cách như một vector của các giá trị cường độ cho mỗi điểm ảnh, hoặc một cách trừu tượng hơn như là một tập hợp các cạnh, các khu vực hình dạng cụ thể, vv. Một vài đại diện làm khiến việc học các nhiệm vụ dễ dàng hơn (ví dụ, nhận dạng khuôn mặt hoặc biểu hiện cảm xúc trên khuôn mặt) từ các ví dụ. Một trong những hứa hẹn của học sâu là thay thế các tính năng thủ công bằng các thuật toán hiệu quả đối với học không có giám sát hoặc nửa giám sát và tính năng phân cấp. [18] 1.2.3.2. Layer Là các lớp xử lý dữ liệu trong model. Khi đi qua các lớp này giá trị output sẽ thay đổi theo các tham số truyền vào. Có thể có nhiều layer trong model càng nhiều layer, model càng phức tạp. Các layer được sử dụng trong đề tài này: Convolutional Layer, Activation Layer. 1.2.3.3. Model Hiểu đơn giản thì nó là kết quả của quá trình training. Bạn có thể tưởng tượng nó như một hộp đen sẽ cung cấp cho một đầu ra nhất định khi bạn đưa một đầu vào vào, và quá trình training chỉ là một số phương pháp để điều chỉnh hộp đen đó sao cho tìm được kết quả đầu ra mong muốn. 1.2.3.4. Train Là quá trình dạy cho chương trình cách tạo ra một số đầu ra dựa trên đầu vào và đầu ra đã biết, cũng có thể tưởng tượng giống như con người khi học cách chơi Commented [TMD4]: Nguồn tham khảo? 10 cờ vua từ kinh nghiệm vì vậy mà ta có thể đánh bại đối thủ tiếp theo dựa vào kinh nghiệm đã thắng đối thủ trước đó. Đối với máy tính, quá trình này thường được gọi là training và kinh nghiệm chính là từ bộ dữ liệu đã có sẵn. 1.2.3.5. Data Data là dữ liệu có được sau khi thu tập có thể là dữ liệu hình ảnh, dãy số... 1.2.3.6. Sequential model  Là một cách để tạo model trong Keras.  Có thể tạo các lớp của mô hình bằng cách truyền vào danh sách các lớp hoặc cũng có thể dùng phương pháp add để thêm các lớp vào model.  Sequential model dữ liệu sẽ được đi tuần tự qua các lớp của model. 1.2.3.7. Custom model  Custom model cũng là một cách để tạo model trong Keras.  Custom model cho phép người dùng có thể tùy chỉnh được luồng đi của dữ liệu. 1.2.3.8. Fit Dùng để đưa data vào training để tìm tham số model. 1.2.3.9. Compile Sau khi xây dựng model xong thì compile có tác dụng là biên tập lại toàn bộ model mà chúng ta đã xây dựng. 1.2.3.10. Predict Predict là thuật ngữ chỉ hàm mà ta sử dụng để chạy model. 1.2.3.11. Test Quá trình đánh giá kết quả training tốt thế nào bằng cách sử dụng tập dữ liệu bên ngoài tập dữ liệu đã biết được sử dụng trong quá trình training. Giống như trong thực tế, mục đích của một người tập chơi cờ vua là để đối mặt với một đối thủ mới chứ không chỉ là đối thủ đã gặp trong quá trình training. Mục tiêu chính là đánh bại bất kỳ ai ngay cả khi không được tập chơi với họ, do đó để kiểm tra 11 những gì mà bạn đã training thì cần phải dùng bộ dữ liệu hoàn toàn không có trong bộ dữ liệu training, Đó là lý do tại sao chúng tôi lại chia dữ liệu thành bộ test và bộ train. vì chúng ta cần phải biết là mô hình học máy tốt thế nào khi nó đối mặt với đầu vào bên ngoài dữ liệu đã biết. 1.2.3.12. Overfitting Giống như một người đánh bại mọi người trong quá trình training nhưng nực cười là lại không đánh thắng bất cứ một ai ngoài quá trình training cả. Model học máy cũng có thể thực hiện tốt trong quá trình training nhưng lại kém trên dữ liệu thử nghiệm và thực tế. Điều này là do dữ liệu thử nghiệm là một dữ liệu mới và mày không bao giờ phải gặp trước đây. Trong thuật ngữ, overfitting là điều kiện mà máy không tổng quát hóa mô hình và chỉ tạo ra một mô hình chuyên nghiệp cho quá trình training. 1.2.3.13. Features Đó là biểu diễn đầu vào dưới dạng số, mảng hoặc bất kỳ thứ gì mà máy tình có thể xử lý được. Mục tiêu chính của việc sử dụng biểu diễn feature là tạo ra dữ liệu duy nhất và được tính bằng máy. Ví dụ, nếu dữ liệu đưa vào là một hình ảnh, chắc chắn chúng ta cần phải chuyển nó thành mảng màu. Trong trường hợp này, feature mày đỏ sẽ thế nào? màu xanh thế nào? và mày xanh thì thế nào? hoặc RGB. Trong ví dụ khác, nếu input là text, máy tính cũng không thể tính toán văn bản, vì vậy cần một phương thức để biểu diễn dữ liệu như kỹ thuật Word2Vec và bow. Nếu chúng ta sử dụng bow, feature thì sẽ thường là một từ trong một câu, trong khi đó nếu ta sử dụng word2vec thì feature sẽ thường là cột trong matrix. 1.2.3.14. Convolution Convolution là kỹ thuật quan trọng trong xử lý ảnh, được sử dụng chính yếu trong các phép toán trên ảnh như: đạo hàm ảnh, làm trơn ảnh, trích xuất biên cạnh trong ảnh. 12 1.2.4. Một số layer chính trong Keras 1.2.4.1. Convolution Layer Convolutional Layer được sử dụng cho việc bóc tách các đặc điểm của ảnh để nó có thể hiểu rõ hơn về cách bố trí và bố cục các pixel giữa các data và label [4]. Có 3 loại convolution: Convolution 1D: Tích chập 1 chiều sẽ chỉ cho phép hàm filter di chuyển theo 1 chiều, (nghĩa là image của ta phải convert về dạng vector) chính là độ dài của vector Convolution 2D: Tích chập 2 chiều sẽ cho phép hàm filter di chuyển theo 2 chiều (theo cả width và height). Đây cũng là lớp convolution mà tác giả sử dụng trong đề tài mình. Hình 1-3: Minh họa về lớp convolution 2D. Convolution 3D: Tương tự ta cũng có tích chập 3 chiều là khi hàm filter có thể di chuyển thêm cả chiều sâu của ảnh nữa. Ngoài việc lựa chọn filter của ta slide được theo những chiều nào, ta còn có thể kiểm soát được tốc độ slide của filter. Ta có thể điều chỉnh tốc độ này trên từng chiều của convolution. Nếu như tốc độ trượt cao, có thể một số nội dung của bức ảnh sẽ không được filter “nhấn mạnh”, nhưng bù lại giúp tốc độ tính toán nhanh hơn (vì số lượng phần ảnh thực hiện tích chập ít đi). Với những bức ảnh lớn, chiều dài và rộng lớn, việc tăng slide sẽ giúp giảm thiểu chi phí tính toán mà data không bị mất mát nhiều. Sau khi tính tích chập với filter, ta chỉ cần cho kết quả đi qua hàm ReLU để loại bỏ hết những số âm. 13 1.2.4.2. Conv2D Transpose Thông thường khi qua một lớp layer kích thước input thường bị thay đổi theo chiều hướng nhỏ hơn hoặc giữ nguyên, nhưng đây là bài toán tạo ra một output có kích thước lớn hơn, nên Conv2Dtranspose sẽ giúp tăng kích thước của output. 1.2.4.3. Pooling Layer Pooling layer trong mạng CNN thực hiện công việc loại bỏ bớt những thông tin không cần thiết sau khi thực hiện tích chập. Điều này rất hữu ích khi ta sử dụng mạng cho ảnh có kích cỡ lớn (dimentional reduction). Tuy nhiên nếu lạm dụng loại layer này cũng có thể khiến data đi qua bị mất dữ liệu. 1.2.4.4. Fully-Connected Layer Cũng như khi sử dụng mạng ANN truyền thống để xử lý những data có dạng matrix như image. Ta cần flatten data về dạng vector, sau đó đưa vào ANN như bình thường. Hay nói cách khác phần Fully-Connected Layer (FC Layer) chính là một mạng NN được gắn vào phần cuối của CNNs. Phần FC-Layer này chính là nơi từ các feature được extract bởi phần convolution và pooling tạo ra kết quả cuối cùng (Classification hoặc Regression). 1.2.5. Quy trình làm việc của Keras: Quy trình làm của Keras trải qua 4 quá trình:  Xây dựng dữ liệu để đào tạo.  Xây dựng model .  Cấu hình lại model.  Train model. Hình 1-4: Quy trình làm việc của Keras.
- Xem thêm -

Tài liệu liên quan

Tài liệu vừa đăng