(Đồ án tốt nghiệp) ứng dụng xử lý ảnh và AI để nhận biết bệnh viêm phổi ở trẻ em

112 11 0
(Đồ án tốt nghiệp) ứng dụng xử lý ảnh và AI để nhận biết bệnh viêm phổi ở trẻ em

Đ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Ộ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH ĐỒ ÁN TỐT NGHIỆP NGÀNH KỸ THUẬT Y SINH ỨNG DỤNG XỬ LÝ ẢNH VÀ AI ĐỂ NHẬN BIẾT BỆNH VIÊM PHỔI Ở TRẺ EM GVHD: Ngô Bá Việt SVTH: Ngô Thị Anh Thư MSSV:16129070 SVTH: Phạm Thiên Vương MSSV:16129085 SKL007337 Tp Hồ Chí Minh, tháng 08/2020 BỘ GIÁO DỤC & ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HỒ CHÍ MINH KHOA ĐIỆN – ĐIỆN TỬ BỘ MƠN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH - ĐỒ ÁN TỐT NGHIỆP NGÀNH KỸ THUẬT Y SINH ĐỀ TÀI: ỨNG DỤNG XỬ LÝ ẢNH VÀ AI ĐỂ NHẬN BIẾT BỆNH VIÊM PHỔI Ở TRẺ EM GVHD: ThS Ngô Bá Việt SVTH1: Ngô Thị Anh Thư MSSV1: 16129070 SVTH2: Phạm Thiên Vương MSSV2: 16129085 Tp Hồ Chí Minh - 08/2020 BỘ GIÁO DỤC & ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HỒ CHÍ MINH KHOA ĐIỆN – ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH - ĐỒ ÁN TỐT NGHIỆP NGÀNH KỸ THUẬT Y SINH ĐỀ TÀI: ỨNG DỤNG XỬ LÝ ẢNH VÀ AI ĐỂ NHẬN BIẾT BỆNH VIÊM PHỔI Ở TRẺ EM GVHD: ThS Ngô Bá Việt SVTH1: Ngô Thị Anh Thư MSSV1: 16129070 SVTH2: Phạm Thiên Vương MSSV2: 16129085 Tp Hồ Chí Minh - 08/2020 NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP Họ tên sinh viên: Chuyên ngành: Hệ đào tạo: Khóa: I TÊN ĐỀ TÀI: ỨNG DỤNG XỬ LÝ ẢNH VÀ AI ĐỂ NHẬN BIẾT BỆNH VIÊM PHỔI Ở TRẺ EM II NHIỆM VỤ Các số liệu ban đầu: − Ngôn ngữ sử dụng: Python − Phần mềm huấn luyện: IDLE Python 3.5, Anaconda, Google Colab − Tập liệu Bệnh viện Montgomery Bệnh viện Shenzhen tập liệu Chest X-Ray Images (Pneumonia) sử dụng để phân đoạn vùng phổi trái phải − Sử dụng kiến trúc mơ hình mạng U-Net để phân đoạn trích xuất vùng phổi trái phải − Sử dụng mơ hình mạng nơ-ron CNN (Convolutional Neural Networks) để trích xuất đặc trưng phân loại bệnh dựa tập liệu vùng phổi phân đoạn − Thiết kế giao diện ứng dụng PyQt5 với hỗ trợ công cụ Qt Designing Nội dung thực hiện: − Tìm hiểu mạng nơ-ron CNN (Convolutional Neural Networks) − Xây dựng ba tập liệu bao gồm: tập huấn luyện, tập xác nhận tập thử nghiệm (training, validation testing) − Thực việc tách phổi trái phải khỏi ảnh nhằm giảm thông tin nhiễu i − Tiến hành xây dựng mơ hình CNNs cho toán phân loại ảnh − Chạy thử nghiệm, chỉnh sửa hoàn thiện hệ thống − Đánh giá hệ thống huấn luyện − Thiết kế giao diện hoạt động hệ thống − Thực viết báo cáo đề tài − Tiến hành báo cáo trước hội đồng III NGÀY GIAO NHIỆM VỤ: 02/03/2020 IV NGÀY HOÀN THÀNH NHIỆM VỤ: 04/08/2020 V HỌ VÀ TÊN CÁN BỘ HƯỚNG DẪN: ThS Ngô Bá Việt CÁN BỘ HƯỚNG DẪN BM ĐIỆN TỬ CƠNG NGHIỆP – Y SINH ii LỊCH TRÌNH THỰC HIỆN ĐỒ ÁN TỐT NGHIỆP Họ tên sinh viên 1: Ngô Thị Anh Thư Lớp: 161290B Họ tên sinh viên 2: Phạm Thiên Vương Lớp: 161290B Tên đề tài: Ứng dụng xử lý ảnh AI để nhận biết bệnh viêm phổi trẻ em Tuần/ngày Tuần (2/3 - 8/3) Tuần (9/3 - 15/3) Tuần (16/3 - 22/3) Tuần (23/3 - 29/3) Tuần (30/3 - 5/4) Tuần (6/4 - 12/4) Tuần (13/4 - 19/4) Tuần (20/4 - 26/4) Tuần (27/4 - 3/5) Tuần 10 (4/5 - 10/5) Tuần 11 (11/5 - 17/5) Tuần 12 (18/5 - 24/5) Tuần 13 (25/5 - 31/5) Tuần 14 (1/6 - 7/6) Tuần 15 (8/6 - 14/6) Tuần 16 (15/6 - 21/6) Tuần 17 (22/6 - 28/6) Tuần 18 (29/6 - 5/7) Tuần 19 (6/7 - 12/7) Tuần 20 (13/7 - 19/7) Tuần 21 (20/7 - 26/7) Tuần 21 (27/7 - 2/8) GV HƯỚNG DẪN (Ký ghi rõ họ tên) iv LỜI CAM ĐOAN Đề tài nhóm tự thực dựa vào số tài liệu có sẵn hướng dẫn thầy hướng dẫn Th.S Ngô Bá Việt khơng chép từ tài liệu hay cơng trình có trước Nếu phát gian dối nhóm hoàn toàn chịu trách nhiệm Người thực đề tài Ngô Thị Anh Thư – Phạm Thiên Vương v TÀI LIỆU THAM KHẢO [38] Jaeger S, Karargyris A, Candemir S, Folio L, Siegelman J, Callaghan F, Xue Z, Palaniappan K, Singh RK, Antani S, Thoma G, Wang YX, Lu PX, McDonald CJ, “Automatic tuberculosis screening using chest radiographs”, IEEE Trans Med Imaging 2014 [39] Candemir S, Jaeger S, Palaniappan K, Musco JP, Singh RK, Xue Z, Karargyris A, Antani S, Thoma G, McDonald CJ, “Lung segmentation in chest radiographs using anatomical atlases with nonrigid registration”, IEEE Trans Med Imaging, 2014 [40] Daniel Kermany, Kang Zhang, Michael Goldbaum, “Labeled Optical Coherence Tomography (OTC) and Chest X-Ray Images for Classification”, Mendeley Data, phiên 2, 2018 [41] Vũ Hữu Tiệp, "Bài 33: Các phương pháp đánh giá hệ thống phân lớp", machinelearningcoban.com, 01/2018 (https://machinelearningcoban.com/2017/08/31/evaluation/) [42] "PyQt - Using Qt Designer", tutorialspoint.com (https://www.tutorialspoint.com/pyqt/pyqt_using_qt_designer.htm) BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 66 PHỤ LỤC PHỤ LỤC Kiến trúc mạng U-Net để phân đoạn phổi trái phổi def unet (input_size = (256,256,1)): inputs = Input(input_size) conv1 = Conv2D (32, (3, 3), activation='relu', padding='same') (inputs) conv1 = Conv2D (32, (3, 3), activation='relu', padding='same') (conv1) pool1 = MaxPooling2D (pool_size= (2, 2)) (conv1) conv2 = Conv2D (64, (3, 3), activation='relu', padding='same') (pool1) conv2 = Conv2D (64, (3, 3), activation='relu', padding='same') (conv2) pool2 = MaxPooling2D (pool_size = (2, 2)) (conv2) conv3 = Conv2D (128, (3, 3), activation='relu', padding='same') (pool2) conv3 = Conv2D (128, (3, 3), activation='relu', padding='same') (conv3) pool3 = MaxPooling2D (pool_size = (2, 2)) (conv3) conv4 = Conv2D (256, (3, 3), activation='relu', padding='same') (pool3) conv4 = Conv2D (256, (3, 3), activation='relu', padding='same') (conv4) pool4 = MaxPooling2D (pool_size = (2, 2)) (conv4) conv5 = Conv2D (512, (3, 3), activation='relu', padding='same') (pool4) conv5 = Conv2D (512, (3, 3), activation='relu', padding='same') (conv5) up6 = concatenate ([Conv2Dtranspose (256, (2, 2), strides = (2, 2), padding = (conv5), conv4], axis=3) 'same') conv6 = Conv2D (256, (3, 3), activation='relu', padding='same') (up6) conv6 = Conv2D (256, (3, 3), activation='relu', padding='same') (conv6) up7 = concatenate ([Conv2Dtranspose (128, (2, 2), strides = (2, 2), padding='same') (conv6), conv3], axis=3) conv7 = Conv2D (128, (3, 3), activation='relu', padding='same') (up7) conv7 = Conv2D (128, (3, 3), activation='relu', padding='same') (conv7) up8 = concatenate ([Conv2Dtranspose (64, (2, 2), strides = (2, 2), padding='same') (conv7), conv2], axis=3) conv8 = Conv2D (64, (3, 3), activation='relu', padding='same') (up8) conv8 = Conv2D (64, (3, 3), activation='relu', padding='same') (conv8) up9 = concatenate ([Conv2Dtranspose (32, (2, 2), strides = (2, 2), padding='same') (conv8), conv1], axis=3) BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 67 PHỤ LỤC conv9 = Conv2D (32, (3, 3), activation='relu', padding='same') (up9) conv9 = Conv2D (32, (3, 3), activation='relu', padding='same') (conv9) conv10 = Conv2D (1, (1, 1), activation='sigmoid') (conv9) return Model(inputs=[inputs], outputs=[conv10]) Mơ hình mạng CNN để nhận biết có bệnh hay khơng có bệnh viêm phổi inputs = Input (shape = (img_dims, img_dims, 3)) x = Conv2D (filters=16, kernel_size = (3,3), activation='relu', padding='same') (inputs) x = Conv2D (filters=16, kernel_size = (3,3), activation='relu', padding='same') (x) x = MaxPool2D (pool_size = (2, 2)) (x) x = SeparableConv2D (filters = 32, kernel_size = (3,3), activation='relu', padding='same') (x) x = SeparableConv2D (filters=32, kernel_size = (3,3), activation='relu', padding='same') (x) x = BatchNormalization() (x) x = MaxPool2D (pool_size = (2, 2)) (x) x = SeparableConv2D (filters=64, kernel_size = (3,3), activation='relu', padding='same') (x) x = SeparableConv2D (filters=64, kernel_size = (3,3), activation='relu', padding='same') (x) x = BatchNormalization() (x) x = MaxPool2D (pool_size = (2, 2)) (x) x = SeparableConv2D (filters=128, kernel_size = (3,3), activation='relu', padding='same') (x) x = SeparableConv2D (filters=128, kernel_size = (3,3), activation='relu', padding='same') (x) x = BatchNormalization() (x) x = MaxPool2D (pool_size = (2, 2)) (x) x = Dropou t(rate=0.2) (x) x = SeparableConv2D (filters=256, kernel_size = (3,3), activation='relu', padding='same') (x) x = SeparableConv2D (filters=256, kernel_size = (3,3), activation='relu', padding='same') (x) x = BatchNormalization() (x) x = MaxPool2D (pool_size = (2, 2)) (x) x = Dropout(rate=0.2) (x) x = Flatten() (x) x = Dense (units=512, activation='relu') (x) x = Dropout (rate=0.5) (x) x = Dense (units=128, activation='relu') (x) x = Dropout (rate=0.3) (x) BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 68 PHỤ LỤC x = Dense (units=64, activation='relu') (x) x = Dropout (rate=0.3) (x) output = Dense (units=1, activation='sigmoid') (x) model = Model (inputs=inputs, outputs=output) model.compile (optimizer='adam', loss='binary_crossentropy', metrics=['accuracy']) checkpoint = ModelCheckpoint (filepath=2out_23_6_2020.h5', save_best_only=True, save_weights_only=False) lr_reduce = ReduceLROnPlateau (monitor='val_loss', factor=0.3, patience=2, verbose=2, mode='max') early_stop = EarlyStopping (monitor='val_loss', min_delta=0.1, patience=1, mode='min') hist = model.fit_generator (train_gen, steps_per_epoch = train_gen.samples// batch_size, epochs = epochs, validation_data = valid_gen, validation_steps = valid_gen.samples // batch_size, callbacks = [checkpoint, lr_reduce]) Thiết kế giao diện hệ thống nhận diện bệnh viêm phổi trẻ em a Giao diện “Dữ liệu bệnh nhân” class Patient(QMainWindow): def init (self, *args, **kwargs): super(Patient, self). init (*args, **kwargs) self.setWindowIcon(QIcon('icon/logo_nganh_256px.png')) #window icon self.setWindowTitle("Dữ liệu bệnh nhân") self.setMinimumSize(800, 600) self.conn = sqlite3.connect("database.db") self.c = self.conn.cursor() self.c.execute("CREATE TABLE IF NOT EXISTS patients(roll INTEGER ,IDP INTEGER, Name TEXT,Sexual TEXT,BOD INTEGER,Address TEXT,Phone INTEGER, ID INTEGER, BHYT INTEGER, Job TEXT, Lan_kham INTEGER, result_save TEXT, note TEXT)") self.c.close() file_menu = self.menuBar().addMenu("&File") self.tableWidget = QTableWidget() self.setCentralWidget(self.tableWidget) self.tableWidget.setAlternatingRowColors(True) self.tableWidget.setColumnCount(12) self.tableWidget.horizontalHeader().setCascadingSectionResizes(False) self.tableWidget.horizontalHeader().setSortIndicatorShown(False) self.tableWidget.horizontalHeader().setStretchLastSection(True) self.tableWidget.verticalHeader().setVisible(False) self.tableWidget.verticalHeader().setCascadingSectionResizes(False) BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 69 PHỤ LỤC self.tableWidget.verticalHeader().setStretchLastSection(False) label = ["STT", "Mã số BN", "Họ tên bệnh nhân", "Giới tính", "Ngày sinh","Địa chỉ","Điện thoại", "Số CMND","Số BHYT", "Nghề nghiệp", "Lần khám", "Kết chẩn đoán"] self.tableWidget.setHorizontalHeaderLabels(label) header = self.tableWidget.horizontalHeader() header.setSectionResizeMode(0, QtWidgets.QHeaderView.ResizeToContents) header.setSectionResizeMode(1, QtWidgets.QHeaderView.ResizeToContents) header.setSectionResizeMode(2, QtWidgets.QHeaderView.ResizeToContents) header.setSectionResizeMode(3, QtWidgets.QHeaderView.ResizeToContents) header.setSectionResizeMode(4, QtWidgets.QHeaderView.ResizeToContents) header.setSectionResizeMode(5, QtWidgets.QHeaderView.ResizeToContents) header.setSectionResizeMode(6, QtWidgets.QHeaderView.ResizeToContents) header.setSectionResizeMode(7, QtWidgets.QHeaderView.ResizeToContents) header.setSectionResizeMode(8, QtWidgets.QHeaderView.ResizeToContents) header.setSectionResizeMode(9, QtWidgets.QHeaderView.ResizeToContents) header.setSectionResizeMode(10, QtWidgets.QHeaderView.ResizeToContents) header.setSectionResizeMode(11, QtWidgets.QHeaderView.Stretch) stylesheet = "::section{Background-color:rgb(204, 255, 255); border: 1px solid black}" header.setStyleSheet(stylesheet) self.tableWidget.itemDoubleClicked.connect(self.show_result) toolbar = QToolBar() toolbar.setMovable(False) self.addToolBar(toolbar) statusbar = QStatusBar() self.setStatusBar(statusbar) self.rp = QLineEdit(self) self.rp.setPlaceholderText("Tìm kiếm ID ") self.rp.move(40,1) self.rp.resize(200,17) self.rp.returnPressed.connect(self.onPressed) btn_ac_rfid = QAction(QIcon("icon/rfid-signal.png"),"Quét thông tin",self) btn_ac_rfid.triggered.connect(self.rfid) btn_ac_rfid.setStatusTip("Quét thông tin") toolbar.addAction(btn_ac_rfid) btn_ac_adduser = QAction(QIcon("icon/add1.jpg"), "Thêm bệnh nhân", self) btn_ac_adduser.triggered.connect(self.insert) btn_ac_adduser.setStatusTip("Thêm bệnh nhân") toolbar.addAction(btn_ac_adduser) btn_ac_refresh = QAction(QIcon("icon/r3.png"),"Cập nhật",self) btn_ac_refresh.triggered.connect(self.loaddata) btn_ac_refresh.setStatusTip("Bảng cập nhật") toolbar.addAction(btn_ac_refresh) BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 70 PHỤ LỤC btn_ac_delete = QAction(QIcon("icon/d1.png"), "Xoá", self) btn_ac_delete.triggered.connect(self.delete) btn_ac_delete.setStatusTip("Xoá bệnh nhân") toolbar.addAction(btn_ac_delete) btn_ac_data = QAction(QIcon("icon/folder-icon.png"), "Kho hình ảnh chẩn đốn", self) btn_ac_data.triggered.connect(self.datasave) btn_ac_data.setStatusTip("Kho hình ảnh chẩn đốn") toolbar.addAction(btn_ac_data) btn_ac_print = QAction(QIcon("icon/print.png"), "In thơng tin bệnh án", self) btn_ac_print.triggered.connect(self.print) btn_ac_print.setStatusTip("Thông tin bệnh án") toolbar.addAction(btn_ac_print) btn_ac_next = QAction(QIcon("icon/next-icon.png"), "Tiếp theo", self) btn_ac_next.triggered.connect(self.next) btn_ac_next.setStatusTip("Tiếp theo") toolbar.addAction(btn_ac_next) btn_ac_back = QAction(QIcon("icon/back-icon.png"), "Trở lại", self) btn_ac_back.triggered.connect(self.back) btn_ac_back.setStatusTip("Trở lại") toolbar.addAction(btn_ac_back) adduser_action = QAction(QIcon("icon/add1.jpg"),"Thêm bệnh nhân", self) adduser_action.triggered.connect(self.insert) file_menu.addAction(adduser_action) searchuser_action = QAction(QIcon("icon/s1.png"), "Tìm bệnh nhân", self) searchuser_action.triggered.connect(self.search) file_menu.addAction(searchuser_action) deluser_action = QAction(QIcon("icon/d1.png"), "Xoá", self) deluser_action.triggered.connect(self.delete) file_menu.addAction(deluser_action) self.connection = sqlite3.connect("database.db") query = "SELECT * FROM patients" result = self.connection.execute(query) self.tableWidget.setRowCount(0) for row_number, row_data in enumerate(result): self.tableWidget.insertRow(row_number) for column_number, data in enumerate(row_data): self.tableWidget.setItem(row_number, column_number,QTableWidgetItem(str(data))) self.connection.close() def loaddata(self): self.connection = sqlite3.connect("database.db") BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 71 PHỤ LỤC query = "SELECT * FROM patients" result = self.connection.execute(query) self.tableWidget.setRowCount(0) for row_number, row_data in enumerate(result): self.tableWidget.insertRow(row_number) for column_number, data in enumerate(row_data): self.tableWidget.setItem(row_number, column_number,QTableWidgetItem(str(data))) self.connection.close() def handlePaintRequest(self, printer): document = QTextDocument() cursor = QTextCursor(document) model = self.table.model() table = cursor.insertTable(model.rowCount(), model.columnCount()) for row in range(table.rows()): for column in range(table.columns()): cursor.insertText(model.item(row, column).text()) cursor.movePosition(QTextCursor.NextCell) document.print_(printer) b Giao diện chẩn đoán bệnh viêm phổi class Window2(QMainWindow): def init (self): super(). init () self.setWindowTitle("Hệ Thống Nhận Diện Và Phân Loại Bệnh Viêm Phổi Ở Trẻ Em") self.resize(1270, 750) font = QtGui.QFont() font.setBold(True) font.setWeight(75) self.setFont(font) icon = QtGui.QIcon() icon.addPixmap(QtGui.QPixmap("logo_nganh_256px.ico"), QtGui.QIcon.Active, QtGui.QIcon.On) self.setWindowIcon(icon) self.centralwidget = QtWidgets.QWidget() self.centralwidget.setObjectName("centralwidget") self.label = QtWidgets.QLabel(self.centralwidget) self.label.setGeometry(QtCore.QRect(240, 0, 771, 101)) self.label.setStyleSheet("background-color: rgb(29, 184, 255);") self.label.setObjectName("label") self.label_2 = QtWidgets.QLabel(self.centralwidget) BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 72 PHỤ LỤC self.label_2.setGeometry(QtCore.QRect(0, 680, 1280, 51)) self.label_2.setStyleSheet("background-color: rgb(241, 237, 117);") self.label_2.setText("") self.label_2.setObjectName("label_2") self.label_3 = QtWidgets.QLabel(self.centralwidget) self.label_3.setGeometry(QtCore.QRect(-30, -10, 1341, 721)) self.label_3.setStyleSheet("image: url(:/100/bg6.png);") self.label_3.setText("") self.label_3.setObjectName("label_3") self.pushButton = QtWidgets.QPushButton(self.centralwidget) self.pushButton.setGeometry(QtCore.QRect(1150, 690, 101, 31)) self.pushButton.setStyleSheet("QPushButton""{""font: 11pt \".VnBlack\";\n" "background-color: rgb(255, 255, 255);\n" "color: rgb(0, 0, 0);\n" "border: 3px solid gray;\n" "border-radius: 10px;""}" "QPushButton::pressed" "{" "background-color : gray;" "}") icon = QtGui.QIcon() icon.addPixmap(QtGui.QPixmap(":/23/delete.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.pushButton.setIcon(icon) self.pushButton.setObjectName("pushButton") self.pushButton.clicked.connect(self.delete_bn) self.label_4 = QtWidgets.QLabel(self.centralwidget) self.label_4.setGeometry(QtCore.QRect(910, -20, 111, 131)) self.label_4.setStyleSheet("image: url(:/34/logo_khoa.jpg);") self.label_4.setText("") self.label_4.setObjectName("label_4") self.label_5 = QtWidgets.QLabel(self.centralwidget) self.label_5.setGeometry(QtCore.QRect(220, 0, 121, 101)) self.label_5.setStyleSheet("image: url(:/7/logo_truong.png);") self.label_5.setText("") self.label_5.setObjectName("label_5") self.label_6 = QtWidgets.QLabel(self.centralwidget) self.label_6.setGeometry(QtCore.QRect(140, 120, 961, 71)) self.label_6.setObjectName("label_6") self.pushButton_5 = QtWidgets.QPushButton(self.centralwidget) self.pushButton_5.setGeometry(QtCore.QRect(90, 220, 221, 51)) font = QtGui.QFont() BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 73 PHỤ LỤC font.setFamily("Times New Roman") font.setPointSize(20) font.setBold(True) font.setWeight(75) self.pushButton_5.setFont(font) self.pushButton_5.setStyleSheet("QPushButton" "{""background-color: rgb(230, 153, 230);\n" "border: 3px solid black;\n" "border-radius: 10px;""}" "QPushButton::pressed" "{" "background-color : gray;" "}") self.pushButton_5.setIconSize(QtCore.QSize(30, 30)) self.pushButton_5.setObjectName("pushButton_5") self.pushButton_5.clicked.connect(self.open_bn) self.pushButton_5.clicked.connect(self.comboChanged) self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget) self.pushButton_2.setGeometry(QtCore.QRect(535, 220, 231, 51)) font = QtGui.QFont() font.setFamily("Times New Roman") font.setPointSize(20) font.setBold(True) font.setWeight(75) self.pushButton_2.setFont(font) self.pushButton_2.setStyleSheet("QPushButton""{""background-color: rgb(0, 213, 0);\n" "border: 3px solid black;\n" "border-radius: 10px;""}" "QPushButton::pressed" "{" "background-color : gray;" "}") self.pushButton_2.setIconSize(QtCore.QSize(30, 30)) self.pushButton_2.setObjectName("pushButton_2") self.pushButton_2.clicked.connect(self.segment_bn) self.pushButton_3 = QtWidgets.QPushButton(self.centralwidget) self.pushButton_3.setGeometry(QtCore.QRect(970, 220, 221, 51)) font = QtGui.QFont() font.setFamily("Times New Roman") font.setPointSize(20) font.setBold(True) font.setWeight(75) BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 74 PHỤ LỤC self.pushButton_3.setFont(font) self.pushButton_3.setStyleSheet("QPushButton""{""background-color: rgb(255, 85, 0);\n" "border: 3px solid black;\n" "border-radius: 10px;""}" "QPushButton::pressed" "{" "background-color : gray;" "}") self.pushButton_3.setIconSize(QtCore.QSize(30, 30)) self.pushButton_3.setObjectName("pushButton_3") self.pushButton_3.clicked.connect(self.result_bn) self.pushButton_4 = QtWidgets.QPushButton(self.centralwidget) self.pushButton_4.setGeometry(QtCore.QRect(20, 690, 101, 31)) self.pushButton_4.setStyleSheet("QPushButton""{""font: 11pt \".VnBlack\";\n" "background-color: rgb(255, 255, 255);\n" "color: rgb(0, 0, 0);\n" "border: 3px solid gray;\n" "border-radius: 10px;""}" "QPushButton::pressed" "{" "background-color : gray;" "}") icon4 = QtGui.QIcon() icon4.addPixmap(QtGui.QPixmap("back-icon.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.pushButton_4.setIcon(icon4) self.pushButton_4.setIconSize(QtCore.QSize(25, 25)) self.pushButton_4.setObjectName("pushButton_4") self.pushButton_4.clicked.connect(self.back_bn) self.pushButton_6 = QtWidgets.QPushButton(self.centralwidget) self.pushButton_6.setGeometry(QtCore.QRect(1045, 690, 101, 31)) self.pushButton_6.setStyleSheet("QPushButton""{""font: 11pt \".VnBlack\";\n" "background-color: rgb(255, 255, 255);\n" "color: rgb(0, 0, 0);\n" "border: 3px solid gray;\n" "border-radius: 10px;""}" "QPushButton::pressed" "{" "background-color : gray;" "}") icon2 = QtGui.QIcon() BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 75 PHỤ LỤC icon2.addPixmap(QtGui.QPixmap("31m7x1MRkWL.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.pushButton_6.setIcon(icon2) self.pushButton_6.setIconSize(QtCore.QSize(23, 23)) self.pushButton_6.setObjectName("pushButton_6") self.pushButton_6.clicked.connect(self.save_bn) self.label_7 = QtWidgets.QLabel(self.centralwidget) self.label_7.setGeometry(QtCore.QRect(50, 210, 71, 71)) self.label_7.setStyleSheet("border: 3px solid black;\n" "border-radius: 35px;\n" "background-color: rgb(255, 255, 255);\n" "image: url(:/98/image open2.png);") self.label_7.setText("") self.label_7.setObjectName("label_7") self.label_8 = QtWidgets.QLabel(self.centralwidget) self.label_8.setGeometry(QtCore.QRect(495, 210, 71, 71)) self.label_8.setStyleSheet("border: 3px solid black;\n" "border-radius: 35px;\n" "background-color: rgb(255, 255, 255);\n" "image: url(:/97/lungseg - Copy.png);") self.label_8.setText("") self.label_8.setObjectName("label_8") self.label_9 = QtWidgets.QLabel(self.centralwidget) self.label_9.setGeometry(QtCore.QRect(920, 210, 71, 71)) self.label_9.setStyleSheet("border: 3px solid black;\n" "border-radius: 35px;\n" "background-color: rgb(255, 255, 255);\n" "image: url(:/93/result icon - Copy.jpg);") self.label_9.setText("") self.label_9.setObjectName("label_9") self.comboBox = QtWidgets.QComboBox(self.centralwidget) self.comboBox.setGeometry(QtCore.QRect(990, 270, 185, 30)) font = QtGui.QFont() font.setPointSize(9) self.comboBox.setFont(font) self.comboBox.setStyleSheet("border: 3px solid black;\n" "border-radius: 5px;") self.comboBox.setObjectName("comboBox") self.comboBox.addItem("") self.comboBox.addItem("") self.comboBox.currentTextChanged.connect(self.comboChanged) self.label_10 = QtWidgets.QLabel(self.centralwidget) BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 76 PHỤ LỤC self.label_10.setGeometry(QtCore.QRect(900, 310, 150, 31)) self.label_10.setStyleSheet("border: 2px solid black;\n" "background-color: rgb(255, 255, 255);") self.label_10.setText("Kết chẩn đoán:") self.label_10.setObjectName("label_10") font = QtGui.QFont() font.setFamily("Times New Roman") font.setPointSize(13) font.setBold(True) font.setWeight(75) self.label_10.setFont(font) self.label_11 = QtWidgets.QLabel(self.centralwidget) self.label_11.setGeometry(QtCore.QRect(900, 450, 70, 30)) self.label_11.setStyleSheet("border: 2px solid black;\n""background-color: rgb(255, 255, 255);") self.label_11.setText("Ghi chú:") self.label_11.setObjectName("label_11") font = QtGui.QFont() font.setFamily("Times New Roman") font.setPointSize(12) font.setBold(True) font.setWeight(75) self.label_11.setFont(font) self.label_3.raise_() self.label.raise_() self.label_2.raise_() self.pushButton.raise_() self.label_4.raise_() self.label_5.raise_() self.label_6.raise_() self.pushButton_5.raise_() self.pushButton_2.raise_() self.pushButton_3.raise_() self.pushButton_4.raise_() self.pushButton_6.raise_() self.label_7.raise_() self.label_8.raise_() self.label_9.raise_() self.label_10.raise_() self.label_11.raise_() self.comboBox.raise_() self.setCentralWidget(self.centralwidget) BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 77 PHỤ LỤC self.retranslateUi() def retranslateUi(self): _translate = QtCore.QCoreApplication.translate self.setWindowTitle(_translate("MainWindow", "Hệ Thống Nhận Diện Và Phân Loại Bệnh Viêm Phổi Ở Trẻ Em")) self.label.setText(_translate("MainWindow", "

TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TPHCM

KHOA ĐIỆN-ĐIỆN TỬ

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP-Y SINH

")) self.pushButton.setText(_translate("MainWindow", "DELETE")) self.label_6.setText(_translate("MainWindow", "

ĐỒ ÁN TỐT NGHIỆP

ỨNG DỤNG XỬ LÝ ẢNH VÀ AI ĐỂ NHẬN DIỆN BỆNH VIÊM PHỔI Ở TRẺ EM

")) self.pushButton_5.setText(_translate("Classification", "CHỌN ẢNH")) self.pushButton_2.setText(_translate("Classification", "TÁCH PHỔI")) self.pushButton_3.setText(_translate("Classification", "CHẨN ĐOÁN")) self.pushButton_4.setText(_translate("Classification", "BACK")) self.comboBox.setItemText(0, _translate("Classification", "1 Chẩn đốn thơng thường")) self.comboBox.setItemText(1, _translate("Classification", "2 Chẩn đốn chun sâu")) self.pushButton_6.setText(_translate("MainWindow", "SAVE")) self.show() Chương trình nạp cho Arduino UNO kết nối với đầu đọc thẻ RC522 #include "SPI.h" #include "MFRC522.h" #define SS_PIN #define RFID_SCK 18 #define RFID_MOSI 23 #define RFID_MISO 19 #define RST_PIN 22 #define RST_PIN // Configurable, see typical pin layout above #define SS_PIN 10 // Configurable, see typical pin layout above #define SS_PIN 10 #define SP_PIN #define BUZZER MFRC522 rfid(SS_PIN, RST_PIN); BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 78 PHỤ LỤC MFRC522::MIFARE_Key key; void setup() { Serial.begin(9600); SPI.begin(); rfid.PCD_Init(); } void loop() { if (!rfid.PICC_IsNewCardPresent() || !rfid.PICC_ReadCardSerial()) return; MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak); if (piccType != MFRC522::PICC_TYPE_MIFARE_MINI && piccType != MFRC522::PICC_TYPE_MIFARE_1K && piccType != MFRC522::PICC_TYPE_MIFARE_4K) { Serial.println(F("Your tag is not of type MIFARE Classic.")); return; } String strID = ""; for (byte i = 0; i < 4; i++) { strID += (rfid.uid.uidByte[i] < 0x10 ? "0" : "") + String(rfid.uid.uidByte[i],DEC); } tone(BUZZER, 600); delay(150); noTone(BUZZER); delay(500); strID.toUpperCase(); Serial.println(strID); rfid.PICC_HaltA(); rfid.PCD_StopCrypto1(); } BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 79 ... HỆ THỐNG NHẬN DIỆN BỆNH VIÊM PHỔI Ở TRẺ EM CHƯƠNG XÂY DỰNG HỆ THỐNG NHẬN DIỆN BỆNH VIÊM PHỔI Ở TRẺ EM 3.1 GIỚI THIỆU Với đề tài ? ?Ứng dụng xử lý ảnh AI để nhận biết bệnh viêm phổi trẻ em? ??, nhóm... BỆNH VIÊM PHỔI Ở TRẺ EM Hệ thống nhận diện bệnh viêm phổi trẻ em nhận ảnh đầu vào ảnh chụp XQuang với định dạng jpeg Đầu giá trị dự đoán nhãn ảnh với hai phương pháp bao gồm Có bệnh / Không bệnh. .. đó, chúng em định làm đề tài ? ?Ứng dụng xử lý ảnh AI để nhận biết bệnh viêm phổi trẻ em? ?? Ứng dụng sử dụng mơ hình Fully Convolutional Neural Network (FCN) để phân đoạn trích xuất vùng phổi trái

Ngày đăng: 22/12/2021, 06:06

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

Tài liệu liên quan