7. Kết cấu của đề tài
2.4.3. Cài đặt thư viện OpenCV
Ở đề tài này tác giả sử dụng OpenCV 3.4.1 Để cài đặt thực hiện tải thư viện OpenCV từ đường dẫn https://pypi.org/project/opencv-python/#downloads và tiến hành tải gói cài đặt phù hợp về. Sau khi tải về sẽ cài đặt thư viện bằng lệnh sau:
KhoaC:> Pip install path # với path là đường dẫn đến file vừa tải về. 2.4.4. Cài đặt thư viện Tensorflow trên windows
Để cài đặt Tensorflow bạn có thể làm theo hướng dẫn như trên website [11]. Cũng có thể cài bằng câu lệnh đơn giản là:
KhoaC:> Pip install –upgrade tensorflow 2.4.5. Cách cài đặt Keras trên windows:
Cài đặt Keras chúng ta chỉ cần vào cmd và gõ câu lệnh:
KhoaC:> pip install keras
Mặc định câu lệnh này sẽ cài đặt theo backend tensorflow.
2.4.6. Cài đặt thư viện numpy
Cài đặt thư viện Numpy bằng lệnh:
KhoaC:> pip install numpy 2.5. Xử lý data và xây dựng mô hình học máy
2.5.1. Vài nét về data
Ở đề tài này tác giả sử dụng bộ data DIV2K (của tác giả : Agustsson, Eirikur and Timofte, Radu) gồm những tấm ảnh có độ phân giải cao được thu thập từ internet [12].
Train data: Gồm 800 tấm ảnh có độ phân giải cao. Validation data: Gồm 100 tấm ảnh có độ phân giải cao.
2.5.2. Xử lý data
Thông thường để có thể tạo ra được một tấm ảnh HR (High-resolution), ta phải thực hiện bởi việc kết hợp thông tin của rất nhiều ảnh độ phân giải thấp (Multiple Image Super Resolution -MISR). Những kỹ thuật này đã từng được thực hiện trong các máy ảnh kỹ thuật cao hoặc qua các chương trình xử lý ảnh như Photoshop. Tuy nhiên, nhược điểm của phương pháp này là cần rất nhiều ảnh độ
Commented [TMD6]: Data ảnh xuất xứ ở đâu tham khảo nguồn nào hay tự tạo không thấy đề cập?
phân giải thấp và chúng phải được căn chỉnh và đối tượng trong ảnh phải đứng yên trong thời gian chụp. Hơn nữa, tốc độ xử lý cũng không được cao.
Việc căn chỉnh tỉ mỉ có thể tránh được nếu chỉ dùng 1 ảnh độ phân giải thấp. Nhưng ngược lại, chất lượng của ảnh đầu ra khó được đảm bảo vì rất nhiều thông tin mới cần được sinh ra dựa trên rất nhỏ lượng thông tin ảnh ở đầu vào. Bài toán này được gọi là Single Image SR (SISR), cũng chính là thứ mà tôi sẽ sử dụng.
Quá trình trích lọc Data cũng có thể được hiểu như sơ đồ bên dưới:
Hình 2-2: Cách trích xuất data.
1. Crop ảnh HR thành nhiều khung ảnh nhỏ khác nhau với kích thước 96x96 và đây sẽ là tập label để train
2. Từ ảnh HR tạo ra ảnh LR đối chiếu bằng cách giảm tỷ lệ ½ 3. Crop ảnh LR tương ứng với HR để tạo ra tập Data ảnh 48x48 đối
chiếu với label
4. Từ Data(X) và Label(Y) ta sẽ đưa vào model để tìm ra những đặc điểm bố trí pixel phù hợp.
2.5.3. Xây dựng mô hình học máy
Mô hình SRCNN của đề tài sẽ được xây dựng theo mô hình EEDS, là một trong những mô hình khá chính xác của các tác giả Yifan Wang, Lijun Wang, Hongyu Wang, Peihua Li trong bài “End-to-End Image Super-Resolution via Deep and Shallow Convolutional Networks” [13].
Keras là thư viện mà tác giả sẽ sử dụng để xây dựng mô hình EEDS này. Ở mô hình này, tác giả sử dụng 2 lớp convolution chính là Conv2D và Conv2Dtranspose. Ở lớp Conv2D ảnh đi qua sẽ được bóc tách những đặc điểm đặc trưng nhất của tấm ảnh để mô hình có thể dễ dàng học được. Còn lớp Conv2Dtranspose ảnh đi qua sẽ được tăng kích thước lên gấp lên gấp đôi để phù hợp với đầu ra mong muốn của mô hình.
Hình 2-3: Mô hình học máy của đề tài.
1. Mô hình gồm 2 phần là Deep Network và Shallow Network 2. Vùng Shallow network đơn giản chỉ Upsampling ảnh để tăng kích
thước đầu ra
3. Vùng Deep network thực hiện chuyên sâu theo tuần tự: Bóc tách features của ảnh nhờ vào Convolution Layer, Tăng kích thước đầu ra bằng Conv2Dtranspose(x2) và sau đó là liên tục sử dụng các Convolution Layer để tìm ra những features nhỏ nhất cho đến khi mô hình thật sự fully-connected.
2.5.4. Quá trình học máy
Dữ liệu đầu vào hai tập ảnh gồm tập train và tập validation. Các bức ảnh sẽ được chuyển về mảng hai chiều. Các mảng hai chiều gồm các giá trị 0 đến 255 đại diện cho màu sắc của ảnh. Các mảng sẽ đươc chạy qua các lớp của mô hình đã được tác giả xây dựng. Quá trình đào tạo được cung cấp liên tục các cặp dữ liệu và nhãn vào trong mô hình. Trong quá trình đào tạo, độ chính xác của mô hình sẽ được kiểm tra bằng dữ liệu thử nghiệm. Độ chính xác sẽ tăng dần cho đến khi đạt một ngưỡng xác định thì chúng ta có thể dừng lại.
Quá trình đạo tạo sẽ được diễn ra như trong hình:
Hình 2-4: Quá trình học máy của Keras.
Commented [TMD7]: Lỗi chính tả
2.5.5. Giao diện của công cụ
Hình 2-5: Giao diện của công cụ.
2.6. Tiểu kết
Ở chương 2 tác giả đã nêu ra toàn bộ quá trình cũng như các thư viện được áp dụng trong đề tài xây dựng công cụ cải thiện chất lượng ảnh của tác giả. Tiếp theo chương 2 là chương 3, thử nghiệm và đánh giá kết quả.
Chương 3 :THỬ NGHIỆM VÀ ĐÁNH GIÁ KẾT QUẢ 3.1. Kiểm chứng mô hình
Để kiểm chứng mô hình, tác giả đã sử dụng công thức tính PSNR làm phương pháp kiểm chứng.
Sau mỗi lần thu được ảnh từ chương trình, ta sẽ sử dụng công thức tính PSNR (Tỉ số tín hiệu cực đại trên nhiễu), PSNR được sử dụng để đo chất lượng tín hiệu khôi phục của các thuật toán nén có mất mát dữ liệu (lossy compression) (ví dụ: dùng trong nén ảnh), thông thường PSNR càng cao thì chất lượng dữ liệu được khôi phục càng tốt, ta có thể xem ví dụ bên dưới.
Ở đây tác giả sẽ so sánh giữa 2 cách phóng to là phóng to bằng trang website
https://letsenhance.io/ và phóng to bằng công cụ của tác giả xây dựng. Letsenhance là một website nổi tiếng sử dụng học máy nâng cao chất lượng ảnh.
Ảnh gốc Phóng to https://letsenhance.io Phóng to bằng công cụ của tác giả
PSNR: 19.83049 PSNR: 25.71533
PSNR: 30.66796 PSNR: 36.35731
Commented [TMD9]: Nêu lý do tại sao so sánh với trang web này mà không so với trang web khác?
PSNR: 25.98681 PSNR: 32.54989
PSNR: 29.52154 PSNR: 33.71956
PSNR: 27.66312 PSNR: 31.09013
PSNR: 30.57713 PSNR: 35.43087
PSNR: 25.18257 PSNR: 27.67041
PSNR: 31.85644 PSNR: 35.60021
PSNR: 21.98174 PSNR: 26.19575
Hình 3-1: Kết quả kiểm chứng.
Kết luận: Có thể thấy được những tấm ảnh đã được phóng to bằng công cụ của tác giả có thể giữ được các chi tiết từ ảnh gốc tốt hơn ảnh được phóng to sử dụng trang website https://letsenhance.io/.
3.2. Đánh giá công cụ
Qua quá trình kiểm chứng trên cho thấy, những tấm ảnh được phóng to bằng công cụ cải thiện chất lượng ảnh mà tác giả xây dựng đem lại độ chính xác khá tốt. Những tấm ảnh sau khi được phóng to vẫn giữ được các chi tiết đặc trưng mà tấm ảnh gốc sở hữu.
3.3. Tiểu kết
Trong chương 3 tác giả đã ghi lại quá trình kiểm tra độ chính xác của công cụ mà tác giả đã xây dựng trong đề tài của mình. Phần cuối cùng tác giả sẽ ghi nêu ra những gì đã làm được và hướng phát triển trong tương lai.
KẾT LUẬN Kết quả đạt được:
Qua quá trình nghiên cứu đề tài “Xây dựng công cụ nâng cao chất lượng ảnh”, tác giả đã đạt được một số kết quả sau:
Lần đầu tiên được tiếp cận với học máy cũng như biết được lợi ích của nó. Biết được một ngôn ngữ lập trình mới với nhiều ưu điểm nổi bật là Python. Sau một thời gian tìm hiểu về Keras thì tác giả cũng biết cách ứng dụng Keras
vào các công việc khác như phân loại trái cây hoặc phân loại các sản phẩm đạt hay không đạt.
Định hướng phát triển trong tương lai:
Sẽ tìm ra giải pháp để cải thiện được chất lượng ảnh đầu ra tốt hơn.
Có thể phát triển công cụ trên một nền tảng web hoặc app để người dùng dễ dàng tiếp cận.
TÀI LIỆU THAM KHẢO Tài liệu sách
[1]Machine Learning book for Vietnamese - Nguyễn Xuân Khánh University of Maryland
https://ml-book-vn.khanhxnguyen.com/.
Tài liệu internet
[2]Trang web chuyên về học máy:
https://viettimes.vn/may-hoc-machine-learning-la-gi-va-tai-sao-cang-ngay-no- cang-pho-bien-146666.html
[3] Tại sao cần machine learning:
https://ongxuanhong.wordpress.com/2015/07/06/tai-sao-can-machine-learning/
[4]Thông tin về các Convolution Layer:
https://trantheanh.github.io/2017/09/29/ML-20/
[5]Những kiến thức cơ bản về OpenCV cũng như các cài đặt:
https://blog.vietnamlab.vn/2017/12/22/xu-ly-anh-voi-opencv-tut-1-cai-dat- opencv/
[6]Thư viện Numpy và cách sử dụng:
https://viblo.asia/p/machine-learning-deep-learning-cho-nguoi-bat-dau-python- mang-numpy-numpy-array-OeVKByL25kW
[7]Mô hình CNN:
https://tiendv.wordpress.com/2016/12/25/convolutional-neural-networks/
[8]Phân loại học máy:
https://machinelearningcoban.com/2016/12/27/categories/#supervised-learning- hoc-co-giam-sat
[9]Tổng quan về Atom và cách cài đặt:
https://o7planning.org/vi/11929/huong-dan-cai-dat-trinh-soan-thao-atom
[10] Hướng dẫn chi tiết cách cài đặt Python trên windows:
https://o7planning.org/vi/11375/huong-dan-cai-dat-va-cau-hinh-python
[11] Cách cài đặt tensorflow trên windows:
http://vn.apps-gcp.com/huong-da%CC%83n-cai-da%CC%A3t-tensorflow-tren- window/
https://data.vision.ee.ethz.ch/cvl/DIV2K/
[13] Bài toán nâng cao chất lượng ảnh: https://arxiv.org/pdf/1607.07680.pdf
[14] Nghiên cứu các kỹ thuật xử lý ảnh phục vụ cho việc nhận dang chữ tiếng việt:
https://text.123doc.org/document/3154808-nghien-cuu-cac-ky-thuat-xu-ly-anh- phuc-vu-viec-nang-cao-chat-luong-nhan-dang-tieng-viet.htm
[15] Tìm hiểu phương pháp nâng cao chất lượng ảnh trong y học:
http://luanvan.co/luan-van/do-an-tim-hieu-phuong-phap-nang-cao-chat-luong- anh-y-hoc-44640/
[16] Sợ lượt về Keras:
http://code24h.com/keras-va-dataset-api-da-tro-thanh-phan-khong-the-thieu- trong-tensorflow-1-4-d309.htm
[17] Độ phổ biến của Keras:
https://twitter.com/fchollet/status/971974547854381056
[18]Tổng quan về deep learning: