Kết hợp mạng nơ ron tích chập và mạng nơ ron đồ thị trong phân loại ảnh y khoa

86 8 0
Kết hợp mạng nơ ron tích chập và mạng nơ ron đồ thị trong phân loại ảnh y khoa

Đ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

BỘ CƠNG THƯƠNG TRƯỜNG ĐẠI HỌC CƠNG NGHIỆP THÀNH PHĨ HỒ CHÍ MINH NGUYỄN DANH THAO KẾT HỢP MẠNG Nơ RON TÍCH CHẬP VÀ MẠNG Nơ RON ĐỒ THỊ TRONG PHÂN LOẠI ẢNH Y KHOA Ngành: KHOA HỌC MÁY TÍNH Ma ngành: 8480101 LUẬN VĂN THẠC sĩ THÀNH PHỐ HỒ CHÍ MINH NĂM 2023 Cơng trình hồn thành Trường Đại học Cơng nghiệp TP Hồ Chí Minh Người hướng dẫn khoa học: PGS.TS Nguyễn Việt Linh Luận văn thạc sĩ bảo vệ Hội đồng chấm bảo vệ Luận văn thạc sĩ Trường Đại học Công nghiệp thành phố Hồ Chí Minh ngày 28 tháng 10 năm 2023 Thành phần Hội đồng đánh giá luận văn thạc sĩ gồm: PGS.TS Huỳnh Tường Nguyên - Chủ tịch Hội đồng TS Huỳnh Khả Tú - Phản biện TS Trang Hồng Sơn - Phản biện TS Lê Nhật Duy - ủy viên TS Phạm Thị Thiết - Thư ký (Ghi rõ họ, tên, học hàm, học vị Hội đồng chấm bảo vệ luận vãn thạc sĩ) CHỦ TỊCH HỘI ĐỒNG TRƯỞNG KHOA CÔNG NGHỆ THÔNG TIN BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CƠNG NGHIỆP THÀNH PHỐ HỔ CHÍ MINH CỘNG HỊA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập - Tự - Hạnh phúc NHIỆM VỤ LUẬN VĂN THẠC sĩ Họ tên học viên: NGUYỄN DANH THAO MSHV: 20125291 Ngày, tháng, nám sinh: 14/03/1982 Nơi sinh: Thanh Hóa Ngành: Khoa Học Máy Tính Mã ngành: 8480101 I TÊN ĐẺ TÀI: Kết hợp mạng nơ rơn tích chập mạng nơ rơn đồ thị phân loại ảnh y khoa NHIỆM VỤ VÀ NỘI DƯNG: Nhiệm vụ: nghiên cứu xây dựng mơ hình kết hợp mạng nơ ron tích chập mạng nơ rơn đồ thị để ứng dụng vào việc phân loại bệnh nhân COVID-19 với bệnh nhân viêm phổi khác dựa hình ảnh y khoa Nội dung: tìm hiểu dấu hiệu nhận biết tiến triển bệnh COVID-19 ảnh y khoa Tìm hiểu xây dựng mơ hình kết hợp mạng nơ rơn tích chập mạng nơ rơn đồ thị Sử dụng liệu siêu âm X-quang phổi để huấn luyện đánh giá mơ hình đề xuất Đánh giá độ xác hiệu mơ hình kết hợp so với phương pháp khác để phát COVID-19 dựa hình ảnh siêu âm X-quang phổi II NGÀY GIAO NHIỆM VỤ: 04/04/2023 III NGÀY HOÀN THÀNH NHIỆM VỤ: 28/9/2023 IV NGƯỜI HƯỚNG DẴN KHOA HỌC: PGS.TS Nguyễn Việt Linh Tp Hồ Chi Minh, ngày 17 tháng 11 năm 2023 NGƯỜI HƯỚNG DẴN CHỦ NHIỆM Bộ MÔN ĐÀO TẠO (Họ tên chữ ký) (Họ tên chữ ký) PGS.TS Nguyễn Việt Linh TRƯỞNG KHOA CỒNG NGHỆ THÔNG TIN (Họ tên chữ ký) LỜI CẢM ƠN Trước tiên, xin bày tỏ biết ơn chân thành sâu sắc tới PGS TS Nguyễn Việt Linh, hết lòng hỗ trợ giúp đỡ tơi q trình nghiên cứu hồn thiện luận ván thạc sĩ Tơi xin gửi lời cảm ơn chân thành tới thầy, cô giảng viên Trường Đại học Công Nghiệp Tp Hồ Chí Minh tận tình dạy dỗ hướng dẫn cho tơi suốt q trình học tập thạc sĩ trường Xin chân thành cảm ơn anh chị em học viên cao học giúp đỡ trao đổi tìm hiểu kiến thức trình học tập làm luận văn Trường Đại học Cơng Nghiệp Tp Hồ Chí Minh Cuối tơi xin gửi lời cảm ơn đến gia đình, bạn bè người ln bên cạnh, động viên khuyến khích tơi q trình học thạc sĩ tơi làm đề tài luận văn tốt nghiệp TĨM TẤT LUẬN VĂN THẠC sĩ Luận văn "Kết hợp mạng nơ ron tích chập mạng nơ rơn đồ thị phân loại ảnh y khoa" nhằm nghiên cứu phát triển mơ hình kết hợp mạng nơ rơn tích chập mạng nơ rơn đồ thị để phân tích hình ảnh siêu âm phổi X-quang phổi giúp phát COVID-19 cách xác nhanh chóng Các nội dung luận văn bao gồm việc tìm hiểu ảnh siêu âm phổi, ảnh X- quang phổi Sau đó, đề tài tiếp tục tìm hiểu xây dựng mơ hình kết hợp dựa đặc trưng đầu mạng nơ rơn tích chập để xây dựng đồ thị đầu vào cho mạng tích chập đồ thị sử dụng liệu ảnh siêu âm phổi ảnh X-quang phổi để huấn luyện đánh giá hiệu mơ hình kết hợp đề xuất Mơ hình đặc biệt trọng đến vùng đặc trưng quan trọng hình ảnh để tăng độ hiệu xác trình chẩn đốn Ket luận văn cho thấy việc sử dụng mơ hình kết hợp mạng nơ ron tích chập mạng nơ ron đồ thị nâng cao độ xác q trình chẩn đốn COVID-19 từ hình ảnh y khoa sử dụng để giúp ích cho định chẩn đốn Cùng với phát triển cơng nghệ, việc nghiên cứu ứng dụng mơ hình học sâu để phát COVID-19 từ hình ảnh y khoa giúp nâng cao độ xác tính khả thi q trình chẩn đốn, đồng thời giảm thiểu nguy lây nhiễm chéo trình tiếp xúc bệnh nhân 11 ABSTRACT Thesis "Combining convolutional neural networks and graph neural networks in medical image classification" aims to research and develop a model combining convolutional neural networks and graph neural networks for analysis lung ultrasound image and lung X-ray image help detect COVID-19 accurately and quickly The basic content of the thesis includes learning about lung ultrasound images and lung X-ray images After that, the thesis continues to learn and build a combination model based on the features output of the convolutional neural network to build input graphs for the next graph convolutional network and use data lung ultrasound images and lung X-ray images to train and evaluate the effectiveness of the proposed model This model special attention to important characteristic areas on the image to increase the efficiency and accuracy of the diagnostic process The results of the thesis show that using models combining convolutional neural networks and graph neural networks can improve the accuracy of coVID-19 diagnosis from medical images and can used to help with diagnostic decisions Nowadays, with the development of technology with the development of technology The research application of new deep learning models to detect COVID-19 from medical images will help improve the accuracy and feasibility of the diagnosis process and at the same time to helps minimizing the risk of cross-infection during contact with patients iii LỜI CAM ĐOAN Tôi cam đoan kết thu luận văn sản phẩm cơng trình nghiên cứu tìm hiểu thân tôi, hướng dẫn PGS.TS Nguyễn Việt Linh Các kết nghiên cứu kết luận luận văn trung thực, không chép từ nguồn không vi phạm hình thức Việc tham khảo nguồn tài liệu (nếu có) thực theo quỵ định trích dẫn ghi nguồn tài liệu tham khảo Tơi hồn tồn chịu trách nhiệm sẵn sàng chấp nhận hình thức kỷ luật theo quy định liên quan đến lời cam đoan Học viên (Chữ ký) Nguyễn Danh Thao IV MỤC LỤC LỜI CẢM ƠN i TÓM TẮT LUẬN VĂN THẠC sĩ ii LỜI CAM ĐOAN iv MỤC LỤC V DANH MỤC HÌNH ẢNH vii DANH MỤC BẢNG BIỂU ix DANH MỤC TỪ VIẾT TẮT X MỞ ĐẲƯ 1 Đặt vấn đề Mục tiêu nghiên cứu Đối tượng phạm vi nghiên cứu Cách tiếp cận phương pháp nghiên cứu 5 Ý nghĩa thực tiễn luận văn CHƯƠNG TỔNG QUAN CHƯƠNG ĐẶC ĐIÉM Y KHOA CỦA ẢNH COVID-19 PHỔI 10 2.1 Cấu tạo phổi chế sinh bệnh 10 2.2 Đặc điểm tổn thương phổi COVID-19 hình ảnh 12 CHƯƠNG KỸ THUẬT HỌC SÂU TRONG PHÂN LOẠI ẢNH 25 3.1 Mạng nơ ron tích chập 25 3.2 Mơ hình mạng ResNet 33 3.3 Thuật toán k láng giềng gần 36 3.4 Mạng nơ ron đồ thị 39 CHƯƠNG MƠ HÌNH KẾT HỢP CB-RES18-G 46 4.1 Kết hợp mơ hình CNN GNN 46 4.2 Xây dựng ma trận kề đồ thị 46 4.3 Đào tạo mơ hình 47 CHƯƠNG 5.1 THỰC NGHIỆM ĐÁNH GIÁ KẾT QUẢ 49 Tập liệu 49 V 5.2 Phương tiện công cụ triển khai 50 5.3 Phương pháp đánh giá hiệu suất mơ hình 51 5.4 Phương thức thực 53 5.5 Đánh giá kết 54 KẾT LUẬN VÀ KIẾN NGHỊ 61 DANH MỤC CƠNG TRÌNH ĐÃ CƠNG BỒ CỦA HỌC VIÊN 62 TÀI LIỆU THAM KHẢO 63 PHỤ LỤC 66 LÝ LỊCH TRÍCH NGANG CỦA HỌC VIÊN 71 VI DANH MỤC HÌNH ẢNH Hình 0.1 Mơ hình học sâu CNN[30] Hình 0.2 Sơ đồ nguyên lý mạng nơ rơn đồ thị[31] Hình 0.3 Những phan tử vi rút SARS-CoV-2[32] .3 Hình 0.4 Các phương pháp chẩn đốn hình ảnh phổi bệnh nhân COVID-19 Hình 2.1 Cấu tạo phổi người [15] 11 Hình 2.2 Cơ chế sinh bệnh tổn thương phổi vi rút SARS-COV-2 [14], 12 Hình 2.3 Hình ảnh siêu âm theo tiến triển bệnh bệnh nhân COVID-19 [15] 14 Hình 2.4 Ảnh minh họa phổi bị COVID-19 cách nhận ảnh siêu âm[15] 15 Hình 2.5 Nguyên lý hoạt động máy chụp X-quang[29] 16 Hình 2.6 Hình ảnh X-quang bệnh nhân COVID-19 [16] 18 Hình 2.7 Hình ảnh máy chụp cắt lớp vi tính[29] 19 Hình 2.8 Hình ảnh CLVT phổi bình thường, tương ứng điểm CO-RADS [17] 21 Hình 2.9 Hình ảnh CLVT tương ứng điểm CO-RADS [17] 22 Hình 2.10 Hình ảnh CLVT tương ứng điểm CO-RADS [17] 22 Hình 2.11 Hình ảnh CLVT tương ứng điểm CO-RADS [17] 23 Hình 2.12 Hình ảnh CLVT tương ứng điểm CO-RADS [17] 23 Hình 2.13 Hình ảnh CLVT tương ứng điểm CO-RADS [17] 24 Hình 3.1 Cấu trúc mạng nơ ron tích chập[33] 25 Hình 3.2 Cấu trúc mạng nơ ron tích chập 26 Hình 3.3 Ví dụ tích chập lọc kích thước F = 26 Hình 3.4 Hình ảnh minh họa lọc 27 Hình 3.5 Bước trượt s lọc Khoặc Pooling p 27 Hình 3.6 Ví dụ MaxPooling Average Pooling 29 Hình 3.7 Làm phẳng liệu trước đưa vào tầng kết nối đẩy đủ 29 Hình 3.8 Đồ thị thể hàm kích hoạtLeaẢy ReLU 32 Hình 3.9 Một ví dụ sử dụng dropout 33 Hình 3.10 Kiến trúc khối phần dư 34 Hình 3.11 Kiến trúc mạng ResNetl8 35 Hình 3.12 Thuật toán k láng giềng gần 36 Hình 3.13 Cách đo khoảng cách Manhattan [21] 38 Hình 3.14 Cách khoảng cách Euclide [21] 39 Hình 3.15 GNN thực suy luận liệu mô tả đồ thị 40 Hình 3.16 Đồ thị G cấu thành nút V cạnh E 41 Hình 3.17 Ma trận kề thể đồ thị 41 Hình 3.18 Tích chập liệu đồ thị 42 vii Resl8-G không cao đặc thù tập ảnh X-quang chứa nhiều đặc trưng, nhiễu nên mơ hình thơng thường huấn luyện cho kết cao Dù việc thêm độ xác lên 1% so với mơ hình ResNetl8 với tập liệu X-quang cho thấy hiệu mơ hình mà phương pháp nghiên cứu luận văn đề xuất đáng ghi nhận Cũng tập ảnh siêu âm, Luận văn so sánh đánh giá hai mơ hình dựa ma trận nhầm lẫn (hình 5.5), biểu đồ mát (hình 5.6), biểu đồ thể việc chọn láng giềng (hình 5.7) biểu đồ đường cong ROC (hình 5.8) Predicted label B ) CB-Resl8-G A) ResNetl8 Hình 5.5 Ma trận nhầm lẫn liệu X-quang A) ResNetl8 B) CB-Resl8-G Hình 5.6 Biểu đồ mát ảnh X-quang A) ResNetl8 B) CB-Resl8-G 59 Train count, Eval count select true classs in KNN and Accuracy Train count Eval count select true classs in KNN and Accuracy Hình 5.7 Biểu đồ chọn láng giềng lóp với nút xét ảnh X-quang A) ResNetl8 Hình 5.8 Biểu đồ đuờng cong ROC tập liệu X-quang Hầu nhu tất hình ảnh biểu đồ mơ hình huấn luyện tập liệu X-quang có sụ tuơng đồng với biểu đồ mơ hình tập liệu siêu âm chúng cho thấy sụ tiến vuợt trội hou mơ hình CB-Resl8-G so với ResNetl8 Chỉ có biểu đồ đuờng cong ROC tập liệu X-quang nhu hai mơ hình lý ảnh X-quang cho độ xác độ nhạy cao 60 KÉT LUẬN VÀ KIẾN NGHỊ Luận văn trình bày phương pháp phân loại bệnh ảnh y khoa dựa kết hợp mạng nơ ron tích chập mạng nơ ron đồ thị Kết thực nghiệm cho thấy điều kiện cỡ mẫu nhỏ, mơ hình đề xuất phương pháp nghiên cứu luận ván thể hiệu cao mơ hình mạng nơ rơn tích chập phổ biến khác cho nhiệm vụ phân loại Tuy nhiên, số hạn chế luận văn nghiên cứu giải tiếp tục tương lai Mơ hình đề xuất phương pháp lý kết phân loại có độ cao chưa biết sử dụng rộng rãi Ngồi ra, tập liệu cơng trình sử dụng nhỏ lấy từ nguồn chia sẻ mạng cần phải xác thực tính xác bác sĩ chuyên gia ngành y tế Luận văn kiến nghị lập kế hoạch cụ thể cho giai đoạn mơ hình tương lai, khám phá sâu cách thức hoạt động mơ hình Đồng thời mở rộng mơ hình sang liệu khác cải thiện hiệu suất dựa kết Xây dựng website cho người dùng tự tải hình ảnh siêu âm X-quang phổi bệnh nhân lên đế dự đoán bệnh Dữ liệu thu thập gắn nhãn nhãn dự đốn với mục đích tăng thêm liệu hình ảnh cải thiện mơ hình để phát bệnh phổi xa áp dụng cho chẩn đốn bệnh lý khác qua hình ảnh 61 DANH MỤC CƠNG TRÌNH ĐẢ CƠNG BĨ CỦA HỌC VIÊN [20] Thanh Hoa Le, Danh Thao Nguyen and Linh Nguyen "zAttention models for covid-19 detection based on lung ultrasound images," International Conference on Computational Intelligence and Innovative Applications (CIỈA2022), pp 125-134, 2022 62 TÀI LIỆU THAM KHẢO [1] Bộ Y tế (2020, Feb.) cổng thông tin y tế đại dịch covid-19 Internet: https://covid 19.gov vn/ who-noi-viec-dat-ten-virus-gay-dich-benh-covid-19-lasars-cov-2-1716904321 htm, 10/2022 [2] J Zhou et al "Graph neural networks: a review of methods and applications," ArXiv preprint arXiv Vol 1812, p 08434, 2018 [3] z Wu et al "A comprehensive survey on graph neural networks," IEEE Trans Neural Networks Learn Syst, 2020 [4] L Yao et al "Graph convolutional networks for text classification," present at The Proceedings of the AAAI Conference on Artificial Intelligence, 2019 [5] Y Zhou et al "Cgc-net: cell graph convolutional network for grading of colorectal cancer histology images," Proceedings ofthe IEEE International Conference on Computer Vision Workshops, 2019 [6] J Shi et al "Graph Convolutional Networks for Cervical Cell Classification," 2019 [7] s Yang et al "Clinical and CT features of early-stage patients with COVID19," A retrospective analysis ofimported cases in Shanghai, China, Eur Respirat J., 2020 [8] s Wang et al "A deep learning algorithm using CT images to screen for Corona Virus Disease (COVID-19)," MedRxiv, 2020 [9] L Li et al "Artificial intelligence distinguishes covid-19 from community acquired pneumonia on chest Ct," Radiology, 2020 [10] A Mangai et al "CovidzAID: co VID-19 Detection Using Chest X-Ray," ArXiv, 2020 [11] KWang et al "Imaging manifestations and diagnostic value of chest CT of coronavirus disease 2019 (COVID-19) in theXiaogan area." Clinical Radiology [Online] https://doi.Org/10.1016/j.crad.2020.03.004 , Mar 2020 [12] X Zhao et al "The characteristics and clinical value of chest CT images of novel coronavirus pneumonia." Clinical Radiology [Online] https://doi.Org/10.1016/j.crad.2020.03.002 , Mar 2020 [13] Qian-Yi Peng et al "Findings of lung ultrasonography of novel corona virus pneumonia during the 2019-2020 epidemic," Mar 2020 63 [14] Bruno Riccardi et al "Role of the Lung Surfactant in the Treatment of SarsCov-2 Infection," Journal ofBiotechnology & Bioinformatics Research Vol 2(4), no 2755-0168, pp 1-2, 2020 [15] Nguyễn Phước Bảo Quân "Vai trò siêu âm dịch COVID-19." Internet: https://hinhanhykhoa.com/tai-lieu/ebook-tieng-viet/vai-tro-cua-sieuam-trong-dich-benh-covid-19-bs-nguyen-phuoc-bao-quan.html , 2020 [16] Phạm Minh Chi Đỗ Đức Cường "Đặc điềm tổn thương phổi COVID-19 hình ảnh X-quang cắt lớp vi tính." Internet: https://benhvien 108 vn/dac-diem-ton-thuong-phoi-do-covid-19-tren-hinh-anhx-quang-va-cat-lop-vi-tinh.htm, 2021 [17] Radiologyassistant "COVID-19 Imaging findings." Internet: https://radiologyassistant.nl/chest/covid-19/covidl9-imaging-findings [18] Alex Krizhevsky et al "ImageNet Classification with Deep Convolutional Neural Networks," Advances in Neural Information Processing Systems Vol 25 (NIPS 2012), p 3, 2012 [19] Srivastava, Nitish et al "Dropout: a simple way to prevent neural networks from," JMLR, 2014 [20] Thanh Hoa Le, Danh Thao Nguyen and Linh Nguyen "Attention models for covid-19 detection based on lung ultrasound images," International Conference on Computational Intelligence and Innovative Applications (CIIA2022), pp 125-134, 2022 [21] Sarang Anil Gokte (2020, Nov.) "kdnuggets." Internet: https://www.kdnuggets.com/2020/! 1/most-popular-distance-metrics-knn.html, 2022 [22] Welling et al "Semi-Supervised classification with graph convolutional networks," present at The ICLR 2017, Amsterdam, 2017 [23] A Arora et al "Github." Internet: https://github.com/arambuj23/covid 19_pocus_ultrasound_pytorch, 2022 [24] Joseph Paul Cohen "Github." Internet: https://github.com/ieee8023/covidchestxray-dataset, 2022 [25] Paul Mooney "Kaggle." Internet: https://www.kaggle.com/datasets/paultimothymooney/chest-xray-pneumonia , 2022 [26] agchung "Github." Internet: https://github.com/agchung, 2022 64 [27] Prashant Patel "Haggle." Internet: https:// www.kaggle.com/datasets/prashant268/chest-xray-covid 19pneumonia?datasetId=724418&fbclid=IwAR33vlpea6dl5RMY99BvVEAW4r nBPT2cMeDrf6oxH2mHMZlYs5tWpAulz-s, 2022 [28] Ming and Kai Ting "Confusion Matrix," springer, Boston, MA No 978-0387-30768-8, 2011 [29] Vinmec "Máy chụp cat lớp: cấu tạo, nguyên lý hoạt động phân loại." Internet: https://www.vinmec.com/vi/tin-tuc/thong-tin-suc-khoe/suc-khoetong-quat/may-chup-cat-lop-cau-tao-nguyen-ly-hoat-dong-va-phanloai/?link_type=relatedjposts [30] Hemanthkl 19 "Code Project." Internet: https://www.codeproject.com/Articles/5160467/Image-Classification-UsingNeural-Networks-in-NET [31] Azamat Abdoullaev "BN Times." Internet: https://www.bbntimes.com/science/can-graph-neural-networks-be-useful-forreasoning-in-ai [32] Hưng lý "Thanglonginst." Internet: http://thanglonginst.com/tin-khoa-hoccong-nghe/hinh-anh-cua-virus-covid-19-duoi-ong-kinh-hien-vi-dien-tu-carlzeiss [33] Chung Pham Van "Viblo." Internet: https://viblo.asia/p/deep-leaming-timhieu-ve-mang-tich-chap-cnn-maGK73bOKj2 65 PHỤ LỤC from torch.nn.parameter import Parameter from torch.nn.modules.module import Module class GraphConvolution(Module) : Lớp GCN đơn giàn, tương tự viẽt https://arxiv.org/abs/1609.02907 def inỉt (self, in_features, out_features, bias=True): super(Graphconvolution, self). init self.in_features = ỉn_features self.out_features = out_features self.weight = Parameter(torch.FloatTensor(in_features, out_features)) if bias: self.bias = Parameter(torch.FloatTensor(out_features)) else: self.register_parameter(■bias', None) self.reset_parameters() def reset_parameters(self): stdv = / math.sqrt(self.weight.size(l)) self.weight.data.uniform_(-stdv, stdv) if self.bias is not None: self.bias.data.uniform_(-stdv, stdv) def forward(self, input, adj): support = torch.mm(input, self.weight) # ■ ỉtoutput - torch.spmm(adj, support) ff -# info =■ F.reLu(support) # Lkr = nn.LeakyReLU(0.01) # info = Lkr(support) sm = nn.Sigmoid0 info = sm(support) output = torch.spmm(adj, info) if self.bias is not None: return output + self.bias else: return output def repr (self): return self. class name + ' (’ \ + str(self.in_features) + ' -> ' \ + str(self.out_features) + ')' Phụ lục Đoạn mã thực việc xây dựng lớp tích chập đồ thị 66 def get_adj(x, labels, k): #/? = adj_mat = neighbors.kneighbors_graph(x.detach().cpu().numpyO, k, mode='connectivity', metric='euclidean', include_self=True) #adj_mat = neighbors.kneighbors_graph(x.detach( ) cpu(),numpy()J kj mode* 'connectivity 'j metric*‘minkowski ', p=2, ỉncLude_seLf*True) A = adj_mat toarrayO indx = np.stack([A.nonzero()[0],A.nonzero()[l]],axis=l) #print(Labels) count = for pair in indx: if pair[0] != pair[l]: if labels[pair[0]] == labels[pair[l]]: count += Sprint(count) # Hiền thị phõn cụm #show_neỉghbors(aơj_mot, X, Labels) #xây dựng ma trận kẽ adj_t = torch.tensor(adj_mat-toarrayO) #Lãy tensor cạnh edge_index = adj_t.nonzero().t().contiguous() # dựng Lại ma trộn kẽ từ tensor cạnh theo chuổn cùa GCN cùa https://arxiv.org/abs/1609.02907 adj sp.coo_matrix((np.ones(edge_index.shape(0]), (edge_index[:, 0], edge_index[:, 1])) shape=(labels.shape[0], labels.shape[0]), dtype=np.float32) # xây dựng ma trận chuổn hóa adj = adj + adj.T.multiply(ađj.T > adj) - adj.multiply(adj.T > adj) adj = normalize_adj(adj + sp.eye(adj.shape[0])) features = normalize(x) features = torch.FloatTensor(np.array(features)) features.requires_grad_() # chuyển ma trận thưa thớt qua torch từ scipy adj = sparse_mx_to_torch_sparse_tensor(adj) return adj, features, count, adj_t Phụ lục Đoạn mã thực việc xây dựng đô thị def show_neighbors(knn_graph, X, labels): for connectivity in (None, knn_graph): for n_clusters in (16, ^xo, o, 6, 3) 3): plt.figure(figsize=(10, 4)) for index, linkage in enumerate(("average", "complete", "ward", "single")): pit.subplot(1, 4, index + 1) model = AgglomerativeClustering( linkage=linkage, connectivity=connectivity, n_clusters=n_clusters ) t0 = time.timeO model.fit(X.detach().cpu() numpyO, labels.detach() cpu() numpyO) elapsed_time = time.timeO - t0 SpLt.scatter(X[:, 0].detach().cpu().numpy(), X[:, 1].detach().cpu().numpyOj c=modeL.LabeLs_, cmap*pLt.cm.nipy_spectraL) pit.scatter(X.detach().cpu() numpyO, labels.detach() cpu() numpyO, c=model.labels_, cmap=plt.cm.nipy_spectral) pit.title( "linkage=%s\n(time %.2fs)" % (linkage, elapsed_time), fontdict=dict(verticalalignment="top"), ) pit.axis("equal") pit.axis("off") plt.subplots_adjust(bottom=0, top=0.83, wspace=0, left=0, right=l) pit.suptitle( "n_cluster=%i, connectivity=%r" % (n_clusters, connectivity is not None), size=17, plt.showO ### End GCN Phụ lục Đoạn mã thực tìm láng giêng gân nhât 67 class CB_Resl8_G(nn.Module): def init _ (self, input_size: tuple = (224, hidden_size: dropout: 224, 3), int = 512, float = 0.5, num_classes: int = 3, nfeat = 20, nhid = 64, ♦*kwargs ): Initialize a new network Inputs: - input_size: Tuple, size of input data - hidden_size: - dropout: Integer, number of units to use in hidden layer Float, - num_classes: dropout coefficient Integer, number of classes super(CB_Resl8_G, self). init () # Use GPU if avaỉLabLe device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu") # Load the resnetl8 network XseLf.modeL - modeLs.resnetl8(pretraỉned=True).to(devỉce) # weights = models.ResNetl8_Weights.IMAGENETlK_Vl self.model = models.resnetl8(weights=weights) self.model = nn.Sequential(*list(self.model.children())[ :-l]) »set_parameter_requires_grad(seLf.modeL) # freeze weights of base modeL except Last coupLe Layers ffLast-frozen = 51 ffcount = iffor param in seLf.modeL parametersO: if ft ft count ♦= if count < Last-frozen: param.requires_grad = FaLse self.flatten = nn.FlattenO self.fcl = nn.Linear(hidden_size, nhid) self.gel = GraphConvolution(nhid, nfeat) self.bn « nn.BatchNormld(nfeat) self.gc2 = GraphConvolution(nfeat, num_classes) self.dropout = dropout def forward(self, X, labels, k): if cuda: labels = labels.cuda() X = x.cudaO X = self.model(x) X = self.flatten(x) X = self.fcl(x) adj, features, count, adj_t = get_adj(x, labels, if cuda: k) adj = adj.cudaO tfLabeLs = Labels.cuda() features = features.cuda() #x = x.cudaO X = self.gcl(x, adj) ftx = F.reLu(x) X = self.bn(x) X = F.dropout(x, self.dropout, training=self.training) X = self.gc2(x, adj) return F.log_softmax(x, dim=l), count Phụ lục Đoạn mã xây dựng mô hình kết hợp CNN GNN 68 In [31]: # xừ Lý tăt cá video for mode in TAKE-MODE: vid-files = os.listdir(os.path.join(VIDEO_DIR, mode)) for i in range(len(vid_flies)): # chi xừ Lý định dạng video if vid_files[i][-3:].lower0 not in [ "peg", "gif", "mp4", "m4v", "avi", "mov" ]: ” continue # xác định đường dẫn video video_path = OS.path.join(VIDEO-DIR, mode, vid_files[i]) # xác định nhàn label = label_to_dir(vid_fỉles[i][:3]) if label not in TAKE-CLASSES: continue # xác định đường dẫn dựa nhăn out_path = os.path.join(out_image_dir, label) # đọc ghi nẽu Là video cap = cv2.VideoCapture(video_path) frameRate = cap.get(5) # tỳ Lệ khung hình # num_frames = cap.get(7) every_x_image = int(frameRate / FRAMERATE) print(vid_files[i], "tỷ lệ khung hình”, cap.get(5), "rộng", cap.get(3), "cao", cap.get(4), "Số frame:", cap.get(7)) print(" > Chụp ", every_x_image, " ảnh") X » nr_selected = while cap.isOpened() and nr_selected < MAX-FRAMES: frameld = cap.get(1) # So frame ret, frame = cap.read() if (ret !» True): break if (frameld % every_x_image == 0): # Lưu trữ khung hình thư mục mớỉ có tên dạng frame_Id filename = OS.path.join( out_path, vid—files[i] ♦ "_frame%d.jpg" % frameld ) cv2.imwrite(filename, frame) nrselected += cap.release() Cov-Atlas+(44).gif tỷ lệ khung hình 10.0 rộng 139.0 cao 139.0 Số frame: 41.0 - -> Chụp ảnh Cov-Atlas+(45).gif tỷ lệ khung hình 10.0 rộng 174.0 cao 174.0 Sổ frame: 21.0 - -> Chụp ành Cov-Atlas-+(43).gif - -> Chụp Cov-Atlas-Day4-l.gif - -> Chụp tỳ lệ khung hình 10.0 rộng 163.0 cao 163.0 Số frame: 39.0 ành tỷ lệ khung hình 10.0 rộng 408.0 cao 408.0 Sõ frame: 33.0 ành Phụ lục Đoạn mã dùng để xử lý cắt ảnh từ video ảnh động In [1]: ữ!pỉp instaLL spLit-foLders Requirement already satisfied: split-folders in c:\programdata\anaconda3\envs\pytorch\lib\site-packages (0.5.1) In [1]: import splitfolders In [2]: splitfolders.ratio("Input", output="Onput", seed=1337, ratio=(.2, 2, 6), group—prefix=None, move=False) # defauLt vaLues Copying files: 862 files [00:08, 104.71 files/s] Phụ lục Đoạn mã thực việc chia liệu In [6]: import OS from PIL import Image as pil_image def main2(): folder = M.\Data_Xray/input/covid" for count, filename in enumerate(os.listdir(folder)): img » pil_image.open(f"{folder}/{filename}") if img.mode != 'RGB': img « img.convert('RGB') img.save(f"{folder}/{filename}") main2() Phụ lục Đoạn mã thực việc chuyển đổi số kênh màu 69 it cân bồng mẫu vào batch ttprint (trainset get_ỉmg_ỉnfo() ) class_weights = [1/9, 1/66, 1/25] # inverse relative amount of sampLes per cLass sample_weights = [0] • len(trainset.get_img_info()) ttprỉnt( sampLe_weights) for idx, (img_path, img_class) in enumerate(trainset.get_img_info()) : sample_weights[idx] = class_weights[img_class] sampler = WeightedRandomSampler(sample_weights, num_samples=len(sample_weights), replacement=True) ft For vaL_Loader class_weights_val = [1/9, 1/66, 1/25] sample_weights_val = [0] * len(valset.get_img_info()) for idx_val, (img_path_val, img_class_val) in enumerate(valset.get_img_info()): sample_weights_val[idx_val] = class_weights_val[img_class_val] sampler_val = WeightedRandomSampler(sample_weights_val, num_samples=len(sample_weights_val), replacement=True) ft For test_Loader class_weights_test - [1/9, 1/66, 1/25] sample_weights_test = [0] ♦ len(testset.get_img_info()) for idx_test, (img path test, img_class_test) in enumerate(testset.get_img_info()) : sample_weights_test[idx_test] = class_weights_test[img_class_test] sampler_test = WeightedRandomSampler(sample_weights_test, num_samples=len(sample_weights_test), replacement=True) tt hẽt cân bàng mẫu vào batch Phụ lục Đoạn mã sử dụng để cân mẫu 70 LÝ LỊCH TRÍCH NGANG CỦA HỌC VIÊN I LÝ LỊCH Sơ LƯỢC: Họ tên: NGUYỄN DANH THAO Giới tính: Nam Ngày, tháng, năm sinh: 14-03-1982 Nơi sinh: Thanh Hóa Email: ndthao822002@gmail.com Điện thoại: 0982.884.779 II QUÁ TRÌNH ĐÀO TẠO: Từ tháng 9/2002 - 2007 tốt nghiệp Đại học quy ngành cơng nghệ thông tin Trường Đại Học Hùng Vương Tp Hồ Chí Minh III Q TRÌNH CƠNG TÁC CHUN MƠN: Thịi gian Noi cơng tác Từ năm 2007 đến tháng 12 năm 2009 Làm việc Công Ty TNHH TM&DV Trường Tân Nhân viên IT - Lập trình phần mềm ứng dụng Từ Tháng 12 năm 2009 đến tháng năm 2017 Làm việc Công Ty TNHH TM&DV Công Nghệ Nguyễn Danh Trưởng Phịng Cơng Nghệ Từ tháng năm 2017 đến Làm việc Công Ty TNHH Truyền Thơng Nguyễn Danh Phó Giám Đốc Cơng việc đảm nhiệm Tp HCM, ngày ỉ tháng 11 Năm 2023 Người khai (Ký tên) 71 NGUYỄN DANH THAO ♦ LUẬN VĂN THẠC sĩ - NGÀNH KHOA HỌC MÁY TÍNH ♦ NĂM 2023 NHÃN CD LUẬN VĂN BỘ CÔNG THƯƠNG TRƯỜNG ĐH CÔNG NGHIỆP TP.HCM INDUSTRIAL UNIVERSITYOF HOCHIMINH CITY LUẬN VĂN THẠC sĩ Ngành: Khoa Học Máy Tính Mã ngành: 8480101 Học viên: Nguyễn Danh Thao MSHV: 20125291 Người hướng dẫn: PGS.TS Nguyễn Việt Linh KÉT HỢP MẠNG Nơ RON TÍCH CHẶP VÀ MẠNG Nơ RƠN ĐÒ THỊ TRONG PHÂN LOẠI ẢNH Y KHOA TP HỒ CHÍ MINH, NĂM 2023 73

Ngày đăng: 15/12/2023, 17:22

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

  • Đang cập nhật ...

Tài liệu liên quan