Thiết kế và phát triển thiết bị giá thành thấp hiệu chuẩn thể tích cho máy thở tự chế trong các đại dịch

77 1 0
Thiết kế và phát triển thiết bị giá thành thấp hiệu chuẩn thể tích cho máy thở tự chế trong các đại dịch

Đ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

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI LUẬN VĂN THẠC SĨ Nghiên cứu phát triển thuật toán xử lý ảnh thời gian thực để sàng lọc nhanh bệnh rối loạn tiền đình DIỆP HỮU HÙNG Ngành: Kỹ thuật Y sinh Giảng viên hướng dẫn: TS Đào Việt Hùng Viện: Điện tử - Viễn thông HÀ NỘI, 4/2021 TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI LUẬN VĂN THẠC SĨ Nghiên cứu phát triển thuật toán xử lý ảnh thời gian thực để sàng lọc nhanh bệnh rối loạn tiền đình DIỆP HỮU HÙNG Ngành: Kỹ thuật Y sinh Giảng viên hướng dẫn: TS Đào Việt Hùng Viện: Điện tử - Viễn thông HÀ NỘI, 4/2021 Chữ ký GVHD CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập – Tự – Hạnh phúc BẢN XÁC NHẬN CHỈNH SỬA LUẬN VĂN THẠC SĨ Họ tên tác giả luận văn: Diệp Hữu Hùng Đề tài luận văn: Nghiên cứu phát triển thuật toán xử lý ảnh thời gian thực để sàng lọc nhanh bệnh rối loạn tiền đình Chuyên ngành: Kỹ thuật Y sinh Mã số SV: CB190185 Tác giả, Người hướng dẫn khoa học Hội đồng chấm luận văn xác nhận tác giả sửa chữa, bổ sung luận văn theo biên họp Hội đồng ngày 22 tháng năm 2021 với nội dung sau: Đã gộp nội dung đề tài từ chương thành chương Đã sửa lỗi tả trình bày, thích rõ ràng Ngày Giáo viên hướng dẫn tháng 04 năm 2021 Tác giả luận văn CHỦ TỊCH HỘI ĐỒNG LỜI CẢM ƠN Để hồn thành đồ án này, em xin gửi lời cảm ơn chân thành tới TS Đào Việt Hùng hướng dẫn tạo điều kiện thuận lợi cho em trình thực đề tài Đồng cảm ơn bạn đồng nghiệp khoa Nội Bệnh viện Đa khoa Khu vực Cẩm Phả tham gia thực trình tiến hành thu thập liệu bệnh nhân thực tế Bệnh viện để lấy sở liệu hệ thống hệ thống Em xin chân thành cảm ơn Học viên Diệp Hữu Hùng TÓM TẮT NỘI DUNG LUẬN VĂN Rối loạn tiền đình biến chứng liên quan vấn đề quan tâm hàng đầu lĩnh vực y học Bệnh nhân mắc rối loạn tiền đình khơng gặp khó khăn sinh hoạt hàng ngày mà cịn có nguy bị đột quỵ cao Do phổ biến ảnh hưởng tiêu cực mà rối loạn tiền đình gây ra, phương pháp sàng lọc tốt tiết kiệm tối đa nguồn lực cho bệnh viện xã hội, đồng thời mang lại nhiều lợi ích cho người bệnh cần thiết Hiện nay, có ba phương pháp chẩn đốn rối loạn tiền đình bao gồm kiểm tra thính lực, kiểm tra rung giật nhãn cầu, kiểm tra thăng Hai phương pháp cung cấp kết có độ tin cậy cao; nhiên, cần sử dụng thiết bị phức tạp có giá thành cao Trong phương pháp kiểm tra thăng bằng, việc quan sát lắc lư thể số tư đặc biệt lựa chọn thích hợp cần rút ngắn thời gian chẩn đoán Điểm hạn chế lớn phương pháp kết phụ thuộc vào quan sát đánh giá chủ quan bác sĩ Xuất phát từ thực tế trên, luận văn đề xuất phương pháp đánh giá định lượng góc nghiêng thể nhằm hỗ trợ cho bác sĩ q trình chẩn đốn Phương pháp đề xuất sử dụng thuật tóan xử lý ảnh để thu nhận liệu góc nghiêng bệnh nhân sử dụng học máy phân tích liệu góc ghi lại để đưa kết đánh giá Cơ sở liệu sử dụng đề tài học viên thu thập khoa Nội Bệnh viện Đa khoa khu vực Cẩm Phả Bộ sở liệu thu trình thực đề tài bao gồm 95 mẫu với tỉ lệ 53 mẫu bệnh 42 mẫu không bệnh Sau thử nghiệm số mơ hình học máy, mơ hình cho độ nhạy cao SVM với hàm sigmoid cho độ nhạy 95.19% MỤC LỤC MỤC LỤC i DANH MỤC HÌNH VẼ iii DANH MỤC BẢNG BIỂU v CHƯƠNG 1: TỔNG QUAN 1.1 Tổng quan rối loạn tiền đình 1.1.1 Giải phẫu quan tiền đình 1.1.2 Định nghĩa phân loại rối loạn tiền đình 1.1.3 Nguyên nhân dẫn tới rối loạn tiền đình 1.1.4 Một số triệu chứng phổ biến 1.1.5 Biến chứng 1.2 Thực trạng 1.3 Một số phương pháp sàng lọc rối loạn tiền đình 1.3.1 Kiểm tra rung giật nhãn cầu 1.3.2 Kiểm tra thăng 10 CHƯƠNG PHÂN TÍCH VÀ ĐỀ XUẤT GIẢI PHÁP 12 2.1 Phân tích số kiểm tra thăng 12 2.1.1 Kiểm tra chức vận động 12 2.1.2 Phân tích động lực học máy tính 12 2.1.3 Kiểm tra Romberg biến thể 14 2.2 Tổng quan xử lý ảnh 15 2.2.1 Khái niệm 15 2.2.2 Thư viện xử lý ảnh OpenCV 16 2.2.3 Một số lọc nhiễu xử lý ảnh 18 2.3 Tìm đường viền ảnh nhị phân 22 2.4 Tổng quan học máy 23 2.4.1 Khái niệm 23 2.4.2 Một số phương pháp học máy phổ biến 25 2.5 Đề xuất giải pháp 26 CHƯƠNG TRIỂN KHAI THUẬT TOÁN 28 3.1 Triển khai thuật tốn đo góc nghiêng để xây dựng sở liệu 28 i 3.1.1 Lưu đồ thuật toán 28 3.1.2 Các bước xử lý 29 3.2 Thử nghiệm lựa chọn mơ hình học máy 31 3.2.1 Xây dựng sở liệu 31 3.2.2 Một số mơ hình học máy 35 CHƯƠNG KIỂM THỬ VÀ KẾT QUẢ 43 4.1 Kiểm thử phương pháp đo 43 4.1.1 Thiết lập cơng cụ thu thập liệu góc nghiêng 43 4.1.2 Xây dựng mơ hình học máy 44 4.2 Tiêu chí đánh giá mơ hình 48 4.3 Kết 52 4.4 Kết luận kiến nghị 53 4.4.1 Kết luận 53 4.4.2 Hướng phát triển 53 4.4.3 Kiến nghị đề xuất 54 TÀI LIỆU THAM KHẢO 55 PHỤ LỤC 58 ii DANH MỤC HÌNH VẼ Hình 1.1 Giải phẫu quan tiền đình nằm sau ốc tai Hình 1.2 Đo âm óc tai Hình 1.3 Đo điện thính giác thân não Hình 1.4 Đo điện đồ ốc tai Hình 1.5 Kiểm tra rung giật nhãn cầu điện cực Hình 1.6 Kiểm tra rung giật nhãn cầu kính video Hình 1.7 Kiểm tra rung giật nhãn cầu Bệnh viện đa khoa Tâm Anh Hình 1.8 Thử nghiệm ghế xoay Hình 1.9 Hệ thống ghế xoay Việt Nam Hình 1.10 Kiểm tra tư di động (DIG Test) 10 Hình 1.11 Kiểm tra tư với thiết bị hỗ trợ 10 Hình 2.1 Kiểm tra chức vận động tập vượt chướng ngại vật 12 Hình 2.2 Kiểm tra Computerised Dynamic Posturography (CDP) 13 Hình 2.3 Các bước kiểm tra CDP 13 Hình 2.4 Tư kiểm tra Romberg biến thể 15 Hình 2.5 Giao diện trang chủ OpenCV 17 Hình 2.6 Một số ứng dụng học máy thực tế 24 Hình 3.1 Sơ đồ thuật tốn đo góc nghiêng thể 28 Hình 3.2 Ảnh RGB (trái) ảnh đa mức xám sau chuyển đổi (phải) 30 Hình 3.3 Thu thập liệu Bệnh viện Đa khoa khu vực Cẩm Phả 32 Hình 3.4 Quá trình thu thập liệu với tham gia bác sĩ chuyên khoa 32 Hình 3.5 Các thư mục liệu thô 33 Hình 3.6 Một liệu chuẩn bệnh nhân 33 Hình 3.7 Thuật tốn loại bỏ nhiễu 34 Hình 3.8 Thuật tốn chuẩn hóa liệu 34 Hình 3.9 Bộ liệu sau chuẩn hóa 35 Hình 3.10 Phân lớp sử dụng thuật toán K-nearest neighbor 36 Hình 3.11 Bài tốn phân lớp PLA 37 Hình 3.12 Phương trình đường thẳng phân cách 38 Hình 3.13 Đường thẳng phân cách điểm bị phân lớp lỗi khoanh tròn 38 Hình 3.14 Các đường phân cách hai lớp liệu 40 Hình 3.15 Margin hai lớp liệu thuật toán PLA 40 iii Hình 3.16 Bài tốn SVM 41 Hình 3.17 Các điểm gần đường phân cách hai lớp 41 Hình 4.1 Marker phản quang đường kính 15mm 43 Hình 4.2 Hệ thống phần cứng thu nhận liệu 43 Hình 4.3 Triển khai hệ thồng phần cứng bệnh viện 44 Hình 4.4 Thư mục chứa ảnh đồ thị liệu 46 Hình 4.5 Đồ thị liệu tình nguyện viên khơng rối loạn tiền đình 46 Hình 4.6 Dao động quanh phương thẳng đứng bệnh nhân rối loạn tiền đình 46 Hình 4.7 Dao động nghiêng phía bệnh nhân rối loạn tiền đình 47 Hình 4.8 Một số mơ hình học máy truyền thống (KNN, PLA, SVM) 47 Hình 4.9 Sơ đồ q trình huấn luyện mơ hình 48 Hình 4.10 Ma trận nhầm lẫn 49 Hình 4.11 Ví dụ đường cong ROC 52 iv DANH MỤC BẢNG BIỂU Bảng 2.1 Một số ma trận hạt nhân phổ biến 20 Bảng 2.2 Một số phần tử cấu trúc thông dụng 22 Bảng 4.1 Thông số kỹ thuật camera Logitech C170 44 Bảng 4.2 Thơng số kỹ thuật máy tính xách tay Dell 44 Bảng 4.3 Tỉ lệ phân chia liệu 48 Bảng 4.4 Định nghĩa trường hợp dự đoán 50 Bảng 4.5 Kết đánh giá mơ hình 52 v hình học máy khác mạng tích chập, kết hợp với đồ thị thể để phát chẩn đoán sàng lọc bệnh nhân Giải pháp đề xuất, thiết kế hệ thống thí nghiệm, trình thực nghiệm, kết nghiên cứu luận văn công bố [25] 4.4 Kết luận kiến nghị 4.4.1 Kết luận Trên sở kế thừa phát triển kết từ nghiên cứu trước nghiên cứu nguồn tài liệu nước nước, sau kết thúc đề tài, luận văn học viên đạt mục tiêu đề bắt đầu thực đề tài, cụ thể sau: • Đã xây dựng sở liệu góc nghiêng thể kiểm tra Romberg biến thể • Đã tìm hiểu tổng hợp số phương pháp sử dụng để sàng lọc rối loạn tiền đình đánh giá ưu, nhược điểm phương pháp • Đã nghiên cứu, đề xuất thuật tốn nhằm đánh giá kiểm tra Romberg cách định lượng, loại bỏ yếu tố chủ quan bác sĩ q trình sàng lọc bệnh • Đã có kết đánh giá hiệu thuật toán đề xuất từ sở liệu chuẩn hóa học viên tự thu thập Dựa kinh nghiệm toán học máy, học viên tiến hành đánh giá nhận xét liệu bệnh lý tiền đình xây dựng Về kích thước, chưa có tiêu chuẩn cụ thể kích thước tập huấn luyện, kỹ thuật học máy khác có địi hỏi khác kích thước tập huấn luyện Lấy ví dụ Deep Learning truyền thống kích thước tập huấn luyện cần đạt 1000 mẫu/nhãn Cịn Deep Learning có ứng dụng Transfer Learning, kích thước 100 mẫu/nhãn nhỏ Bộ liệu mà học viên xây dựng có mẫu liệu, có kích thước tương đối khiêm tốn yếu tố khách quan bảo mật thông tin bệnh án, dịch bệnh COVID-19 Tuy nhiên, Việt Nam nói riêng giới nói chung, chưa có nhóm nghiên cứu công bố liệu tương tự 4.4.2 Hướng phát triển Trên sở kết đạt sau kết thúc trình nghiên cứu hồn thành luận văn, học viên mong muốn tiếp tục đề tài với thử 53 nghiệm sở liệu lớn để có đánh giá tổng quan ứng dụng học máy sàng lọc rối loạn tiền đình Trong thời gian tiếp theo, sở liệu góc nghiêng bệnh nhân tham gia kiểm tra Romberg biến thể tiếp tục xây dựng để phục vụ cho trình đào tạo mơ hình học máy 4.4.3 Kiến nghị đề xuất Trong xu hướng ứng dụng ngày nhiều mô hình học máy nhằm hỗ trợ cho trình sàng lọc chẩn đoán bệnh lý, học viên kiến nghị mở rộng nghiêng cứu cách mở rộng quy mô tập liệu Để thực điều cần có hỗ trợ từ nhiều nguồn lực khác nhau, quan trọng hỗ trợ mặt lâm sàng từ y bác sĩ 54 TÀI LIỆU THAM KHẢO [1] V H Nguyễn, “Tai thần kinh tiền đình-ốc tai”, in Giải phẫu người, V C Hoàng , V H Nguyễn, X K Nguyễn, T Q Nguyễn, X T Nguyễn, S V Trần, Nhà xuất Y học, 2006, pp 167-171 [2] Y Agrawal, J P Carey, C C D Santina, M C Schubert and L B Minor, "Disoders of balance and vestibular function in US adults," Archive of Internal Medicie, vol 169, no 10, pp 938-944, 2009 [3] H Neuhauser, M Leopold, M von Brevern, G Arnold, T Lempert, “The interrelations of migraine, vertigo, and migrainous vertigo,” Neurology, vol 56 (4), pp 436-441, 2001 [4] T Sekitani, Y Imate, T Noguchi, and T Inokuma, “Vestibular neuronitis: epidemiological survey by questionnaire in Japan,” Acta oto-laryngologica Supplementum, vol 503, pp 9-12, 1993 [5] L Yardley, N Owen, I Nazareth and L Luxon, "Prevalence and presentation of dizziness in a general practice community sample of working age people," British Journal of General Practice, vol 48, pp 1131-1135, 1998 [6] L Yardley and J Putnam, "Quantitative analysis of factors contributing to handicap and distress in vertiginous patients," Journal of Vestibular Research, vol 17, pp 231-236, 1992 [7] L D B Thorban and R A Newton, "Use of the Berg Balance Test to predict falls in elderly persons," Physical Therapy, vol 76, pp 576-585, 1996 [8] J Gill, J H J Allum, M G Carpenter, M Held-Ziolkowska, A L Adkin and F Honegger, "Trunk sway measures of postural stability during clinical balance test: effects of age," Journal of Gerontology: MEDICAL SCIENCE, vol 56A, pp 438-447, 2001 [9] P K T Rahko, "New clinical finding in vestibular neuritis: high-frequency audiometry hearing loss in the affected ear," The Laryngoscope, vol 96, no 2, pp 198-199, 1986 [10] V Ostrowski, "Vestibular Testing," in Practical Otology for the Otolaryngologist, San Deigo, Plural Publishing, 2013, pp 33-49 55 [11] S L Whitney, G F Marchetti and A I Schade, "The relationship between falls history and computerized dynamic posturography in persons with balance and vestibular disorders," Archives of Physical Medicine and Rehabilitation, vol 87, pp 402-407, 2006 [12] R P Di Fabio, “Meta-analysis of the Sensitivity and Specificity of Platform Posturography,” Arch Otolaryngol Head Neck Surg, vol 122(2), pp 150–156, 1996 [13] “Tổng quan xử lý ảnh,” in Giáo trình mơn học Xử lý ảnh, N T Đỗ, V B Phạm, Đại học Thái Nguyên, 2007, pp [14] H S Cohen and K Kimball, "Usefulness of some current balance tests for identifying individuals with disequilibrium due to vestibular impairments," Journal of Vestibular Research, vol 18, pp 295-308, 2008 [15] R A Dobie, "Does computerized dynamic posturography help us care for our patients?," The American Journal of Otology, vol 18, no 1, pp 108-112, 1997 [16] L Z Mezher, "Digital image processing filtering with LABVIEW," International Journal of Computer Science Trends and Technology, vol 4, no 4, 2016 [17] J Li, C Yang, H Zhu, J Liu and B Cao, "Segmentation algorithms for nonuniform froth image based on adaptive morphology," Information Technology Journal, vol 12, pp 1350-1357, 2013 [18] S Suzuki and K Abe, "Topological structural analysis of digitized binary images by border following," Computer Vision, Graphic, and Image Processing, vol 30, pp 32-46, 1985 [19] R Mukundan and K Ramakrishnan, "Moment Functions – Theory," in Moment Functions In Image Analysis - Theory And Applications, Singapore, WSPCO, 1998, pp 9-12 [20] Karen Simonyan, Andrew Zisserman, “Very Deep Convolutional Networks for Large-Scale Image Recognition”, in ICLR, California, USA, May – 9, 2015 56 [21] LeCun Y, Bengio Y, Hinton G, “Deep learning”, Nature, 521, 2015, pp 436– 444, doi: 10.1038/nature14539 [22] Shen D, Wu G, Suk H-I, “Deep learning in medical image analysis”, Annu Rev Biomed Eng, 19, 2017, pp: 221–248, doi: 10.1146/annurev-bioeng071516-044442 [23] Betancur J, Rubeaux M, Fuchs TA, Otaki Y, Arnson Y, Slipczuk L, et al (2017), “Automatic valve plane localization in myocardial perfusion SPECT/CT by machine learning: anatomic and clinical validation” J Nucl Med, Vol 58, no 6, pp 961 – 967 [24] Haro Alonso D, Wernick MN, Yang Y, Germano G, Berman DS, Slomka P (2018), “Prediction of cardiac death after adenosine myocardial perfusion SPECT based on machine learning,“ J Nucl Cardiol, Vol 26, no 5, pp 17461754 [25] Hoàng Thị Thu Hiền, Diệp Hữu Hùng, Đào Việt Hùng, “A Computer Aided Diagnostic Support System for Vestibular Disorders with Optical Tracking and Machine Learning”, công bố 57 PHỤ LỤC A Một số hình ảnh trình thu thập liệu 58 59 B Mã nguồn Mã nguồn thuật tốn đo góc nghiêng import os import cv2 import math import imutils import argparse import xlsxwriter import numpy as np from skimage import measure from imutils import contours filename = input("Nhap ten benh nhan va thang do:") file_out = "%s.txt" % filename capture = cv2.VideoCapture(0) while True: _, frame = capture.read() mask = np.zeros(frame.shape, dtype=np.uint8) mask = cv2.rectangle(mask, (200, 50), (420, 430), (255, 255, 255), -1) result = cv2.bitwise_and(frame, mask) result[mask == 0] = frame_Gauss = cv2.GaussianBlur(result, (5, 5), 0) frame_Gray = cv2.cvtColor(frame_Gauss, cv2.COLOR_BGR2GRAY) ret, frame_threshold = cv2.threshold(frame_Gray, 240, 250, cv2.THRESH_BINARY) kernel = np.ones((5, 5), np.uint8) 60 frame_erosion = cv2.erode(frame_threshold, kernel, iterations=1) frame_dilation = cv2.dilate(frame_erosion, kernel, iterations=1) labels = measure.label(frame_threshold, neighbors=8, background=0) mask = np.zeros(frame_threshold.shape, dtype="uint8") for label in np.unique(labels): if label == 0: continue labelMask = np.zeros(frame_threshold.shape, dtype="uint8") labelMask[labels == label] = 255 numPixels = cv2.countNonZero(labelMask) if 10 < numPixels < 4000: mask = cv2.add(mask, labelMask) cnts = cv2.findContours(mask.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) cnts = imutils.grab_contours(cnts) cnts = contours.sort_contours(cnts, method="topto-bottom")[0] for (i, c) in enumerate(cnts): (x, y, w, h) = cv2.boundingRect(c) ((cX, cY), radius) = cv2.minEnclosingCircle(c) cv2.circle(result, (int(cX), int(cY)), int(radius), (0, 0, 255), 2) cv2.putText(result, "{}".format(i + 1), (x, y - 15), cv2.FONT_HERSHEY_SIMPLEX, 0.45, (0, 0, 255), 2) if len(cnts) == 2: M_1 = cv2.moments(cnts[0]) 61 cX_1 = int(M_1["m10"] / M_1["m00"]) cY_1 = int(M_1["m01"] / M_1["m00"]) cv2.circle(result, (int(cX_1), int(cY_1)), 1, (0, 0, 255), 2) print("points 1:", cX_1, cY_1) M_2 = cv2.moments(cnts[1]) cX_2 = int(M_2["m10"] / M_2["m00"]) cY_2 = int(M_2["m01"] / M_2["m00"]) cv2.circle(result, (int(cX_2), int(cY_2)), 1, (0, 0, 255), 2) print("points 2:", cX_2, cY_2) angle = float(math.atan((cX_1 - cX_2) / (cY_1 - cY_2)) * 180 / math.pi) cv2.line(result, (cX_1, cY_1), (cX_2, cY_2), (0, 0, 255), 2) # cv2.putText(frame, str(angle), (int(cX_1) + 50, (int(cY_2) + int(cY_1)) / 2), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 255), 2) print(angle) #anim = FuncAnimation(fig, animate, frames=1000, interval=20, blit=True) out_file3D = open(file_out, "a+") out_file3D.write(str(float(angle))) out_file3D.write("\n") cv2.imshow("Marker", frame_threshold) cv2.imshow("Mask", result) k = cv2.waitKey(1) if k == ord('q'): 62 break capture.release() cv2.destroyAllWindows() Mã nguồn chuẩn hóa liệu import numpy as np import os input_path = 'D:/du_lieu_tien_dinh' output_path = 'D:/npy_tiendinh_normalized/' if not os.path.exists(output_path): os.makedirs(output_path) list_dir = os.listdir(input_path) for idx in range(len(list_dir)): data_folder = os.path.join(input_path, list_dir[idx]) data_id = str(data_folder).split('\\')[-1] file = os.listdir(data_folder) result_numpy_array = np.zeros(shape=(1,)) allData = np.genfromtxt(os.path.join(data_folder, file[0])) # -Chuan hoa du lieu #=========Loai bo nhieu======================= i = while(i < allData.shape[0]): if allData[i] > 10 or allData[i] < -10: allData = np.delete(allData, i) continue i += #============================================= #=========Chuan hoa=========================== batch_data = allData.shape[0] // 100 63 normalized_data = np.zeros(shape = (100,)) for j in range(100): normalized_data[j] = np.mean(allData[j*batch_data:(j+1)*batch_data]) # result_file = open(os.path.join(data_folder, file[1]),'r') content = result_file.read() if content.find("co-benh") == 0: result_numpy_array[0] = normalized_data = np.array([normalized_data, result_numpy_array], dtype = object) np.save(os.path.join(output_path, data_id), normalized_data) Mã nguồn vẽ đồ thị liệu import numpy as np import matplotlib.pyplot as plt import os from os.path import join x = np.arange(100) y = np.zeros((100,)) input_path = 'D:/npy_tiendinh_normalized/' output_path = 'D:/graph_tiendinh/' if not os.path.exists(output_path): os.makedirs(output_path) list_npy = os.listdir(input_path) for file in list_npy: data = np.load(join(input_path, file)) 64 rs = data[1] rs_txt = '_khong_benh' if rs == 1: rs_txt = '_co_benh' data_id = file.split('\\')[-1] data_id = data_id.split('.')[0] y = data[0] plt.plot(x,y) plt.axis([0, 100, -10, 10]) plt.title(data_id + rs_txt) plt.savefig(join(output_path, data_id+'.png')) plt.clf() print(data) break Mã nguồn đào tạo mơ hình học máy import os from os.path import join import numpy as np from sklearn.model_selection import train_test_split from sklearn.svm import SVC from sklearn import neighbors def myDataset(input_path): list_npy = os.listdir(input_path) data = np.load(join(input_path, list_npy[0])) X = data[0] X = np.reshape(X, (X.shape[0], 1)) Y = np.zeros(shape = (len(list_npy), 1)) Y[0] = data[1] for i in range(1, len(list_npy)): tmp = np.load(join(input_path, list_npy[i])) tmp_data = np.reshape(tmp[0], (tmp[0].shape[0], 1)) 65 X = np.concatenate((X, tmp_data), axis = 1) Y[i] = tmp[1] return X, Y input_path = 'D:/npy_tiendinh_normalized/' X, Y = myDataset(input_path) X = X.T epochs = 10 sens = np.zeros(shape=(epochs,)) spec = np.zeros(shape=(epochs,)) for epoch in range(epochs): X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=0.2) y_test =np.reshape(y_test, (y_test.shape[0],)) clf = neighbors.KNeighborsClassifier(n_neighbors = 3, p = 1) clf.fit(X_train, y_train) y_pred = clf.predict(X_test) total = y_test.shape[0] cr = tp, tn, fp, fn = 0, 0, 0, for k in range(total): if y_pred[k] == and y_test[k] == 1: += cr += if y_pred[k] == and y_test[k] == 1: fn += if y_pred[k] == and y_test[k] == 0: 66 tn += cr += if y_pred[k] == and y_test[k] == 0: fp += sens[epoch] = 100*tp/(tp+fn) spec[epoch] = 100*tn/(tn+fp) rsens = sens.mean() rspec = spec.mean() 67 ... vụ SL dự đoán đầu mong muốn dựa vào giá trị đầu vào Dễ nhận ra, học có “giám sát” tức máy học dựa vào trợ giúp người, hay nói cách khác người dạy cho máy học giá trị đầu mong muốn định trước... ảnh có khoảng cách Euclide tới tâm Với phát triển máy tính, việc sử dụng kỹ thuật xử lý hình ảnh để nâng cao hiệu sử dụng thiết bị chẩn đoán đo lường hình ảnh vấn đề ln quan tâm phát triển nhiều... có sáu thành Thành ngồi ngăn cách với hịm nhĩ vách xương liên hệ với hòm nhĩ qua cửa sổ tiền đình Thành liên quan với đáy ống tai trong, có ngách bầu dục cho soan nang tựa vào ngách cầu cho cầu

Ngày đăng: 10/12/2021, 19:32

Mục lục

  • TÀI LIỆU THAM KHẢO

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

Tài liệu liên quan