張玉霞
(湖北科技學(xué)院生物醫(yī)學(xué)工程與醫(yī)學(xué)影像學(xué)院,湖北 咸寧 437100)
現(xiàn)階段,我國醫(yī)療的現(xiàn)狀需要更精準(zhǔn)、更高效的診療及操作,而人工智能從數(shù)據(jù)獲取到數(shù)據(jù)加工、最終給予反饋的工作邏輯正好可以應(yīng)用于醫(yī)療行業(yè)診前、診中、診后的各個模塊,以幫助醫(yī)院及患者降本提效,智能醫(yī)學(xué)作為“醫(yī)療+技術(shù)”的交叉產(chǎn)物,其發(fā)展一直受到醫(yī)藥改革和技術(shù)創(chuàng)新的推動[1]。Java語言在智能醫(yī)學(xué)的實現(xiàn)中能夠起到一定的作用。
Java語言是一門涉及很多知識點(diǎn)的語言,如果要將所有知識點(diǎn)全部講解完,則需要相當(dāng)多的課時,但實際在各大高校中,Java理論+實驗課時為72學(xué)時左右。如果教師只講基礎(chǔ)知識,可能學(xué)生學(xué)完后,還不知道這門課的用處,處于迷茫之中,特別是對于以后并不想從事編程工作的學(xué)生,這樣會導(dǎo)致學(xué)生只是為了考試拿學(xué)分而學(xué)習(xí),學(xué)習(xí)的主動性不強(qiáng),積極性不高,學(xué)完后就忘記了的現(xiàn)象,對于學(xué)生來說,是時間的浪費(fèi)。如果在教學(xué)時,教師根據(jù)專業(yè)需求以案例為驅(qū)動,對課程內(nèi)容按重要程度進(jìn)行選擇性地講授,學(xué)生圍繞著某個問題,從實現(xiàn)其基本功能開始,再逐漸將其完善,在這個過程中,學(xué)生以完善案例為目標(biāo),用到哪兒學(xué)哪兒,這樣學(xué)生對涉獵的知識點(diǎn)記憶會比較深刻,學(xué)完這門課后也知道這門課程的用途,而不是為了單純的考試拿學(xué)分而學(xué)習(xí),也會增加學(xué)生的積極性。所以,如何根據(jù)專業(yè)需求安排案例,并把握好部分重點(diǎn)內(nèi)容是教學(xué)過程中的一個難題。
本課題結(jié)合智能醫(yī)學(xué)的培養(yǎng)要求和課程安排對 Java課程進(jìn)行教學(xué)改革探討,希望將Java課程和智能醫(yī)學(xué)的其他課程知識點(diǎn)結(jié)合起來,以案例為驅(qū)動教學(xué),提高Java課程的廣度和復(fù)雜度,使其符合智能醫(yī)學(xué)人才培養(yǎng)的需求。學(xué)生能夠通過Java這樣一個工具,實現(xiàn)其他課程中的理論知識,進(jìn)一步將理論和實踐聯(lián)系起來。一方面能夠讓學(xué)生明白Java這門課的作用,另一方面,學(xué)生如果要將理論和實踐聯(lián)系起來,學(xué)以致用,那么就必須對所涉及的其他專業(yè)課程的理論知識理解透徹,并可以根據(jù)實現(xiàn)效果深入學(xué)習(xí)加以改進(jìn)實現(xiàn)的效果,這樣也可以加深學(xué)生對其他課程理論知識的理解程度。
Java課程安排一般是先學(xué)習(xí)基礎(chǔ)知識,再根據(jù)學(xué)生的需求學(xué)習(xí)Android開發(fā),或者JavaWeb開發(fā)。市面上關(guān)于Java的書籍非常多,絕大多數(shù)的教材中講的都是Java入門基礎(chǔ)知識,Android開發(fā)、Java Web開發(fā)的基礎(chǔ)知識點(diǎn),或者以項目為驅(qū)動的案例類型的書籍,但是所涉及的案例大多都是通用型的,與智能醫(yī)學(xué)專業(yè)相關(guān)的并不多。智能醫(yī)學(xué)專業(yè)的學(xué)生還學(xué)習(xí)了和人工智能以及醫(yī)學(xué)有關(guān)的其他的課程,如果能夠?qū)ava課程和人工智能以及醫(yī)學(xué)有關(guān)的其他課程融合起來,以案例為驅(qū)動,增加Java課程的深度和廣度,對提高學(xué)生的學(xué)習(xí)興趣、成就感有一定的幫助,進(jìn)一步增強(qiáng)學(xué)生學(xué)習(xí)的內(nèi)驅(qū)力,使學(xué)生愿意以某個問題為中心,圍繞解決該問題,自己去主動學(xué)習(xí)Java知識和其他相關(guān)課程,也增強(qiáng)學(xué)生的自學(xué)能力。下面,圍繞Java常見的兩種應(yīng)用開發(fā)——Android開發(fā)和JavaWeb開發(fā),討論在有限的課時內(nèi)將Java和智能醫(yī)學(xué)專業(yè)其他課程相融合的思路。
1.1.1 機(jī)器視覺方面
教材選擇和開發(fā)環(huán)境搭建方面。由于機(jī)器視覺是人工智能正在快速發(fā)展的一個分支,因此在Android開發(fā)的時候,選擇了和機(jī)器視覺有關(guān)的案例,以機(jī)械工業(yè)出版社賈志剛編寫的《OpenCVAndroid開發(fā)實戰(zhàn)》這本書的案例作為教學(xué)的教材,在網(wǎng)站 https://github.com/gloomyfish1998/opencv4android中可以找到相應(yīng)的教學(xué)視頻。之所以選擇這本教材是因為這本書中涉及了圖像的處理、人臉的識別、OCR識別、人眼追蹤等等和機(jī)器視覺有關(guān)的案例。OpenCV是計算機(jī)視覺開源框架,它在移動端支持Android系統(tǒng),該特性使其應(yīng)用到移動開發(fā)的多種應(yīng)用場景。在進(jìn)行Android+OpenCV環(huán)境搭建時,可以根據(jù)教學(xué)視頻中進(jìn)行搭建,如果希望能夠搭建比教學(xué)視頻中較新一些的版本,筆者在實現(xiàn)該教材中案例時,選擇的版本為:JDK選擇 JDK16.0,Android選擇 Android Studio4.2.2,OpenCV選擇OpenCV343版本,如果要做后面的人臉識別和眼球追蹤,用NDK的時候,選擇NDK16版本,CMake選擇3.10。根據(jù)經(jīng)驗不要選擇AndroidStudio3.1.24版本,因為這個版本在與OpenCV343一起組合使用時,涉及攝像頭的橫屏豎屏轉(zhuǎn)換時會出現(xiàn)問題,筆者遇到的問題為無法豎屏顯示。授課教師在使用該本書時,需要先了解Java語言的基礎(chǔ)知識,包括基本語法特征、面向?qū)ο蟪绦虻母拍睢⒉季?、事件、線程、輸入輸出流等等,并且對AndroidStudio開發(fā)的基本過程有所了解。
課程設(shè)計方面。在學(xué)習(xí)Java的時候,通常我們會先學(xué)習(xí)Java基礎(chǔ)知識。Java基礎(chǔ)知識的基本語法部分和C語言有一些相似之處,如果學(xué)生學(xué)過C語言或者其他的編程語言,這部分的知識很好掌握,可以在學(xué)習(xí)案例的時候貫穿在里面講,用到什么就講什么。基本語法之后為布局部分,在教材配套的教學(xué)視頻中在做界面時會涉及相對布局和線性布局這兩個非常常見的布局。在做界面時,我們也可以看到在布局中添加各種我們想要的控件,比如文本控件、列表控件、圖像控件、按鈕控件、滑動按鈕控件等等常用控件,并且會對這些控件添加相應(yīng)的事件,這一部分能夠?qū)ava基礎(chǔ)知識中的布局、控件和事件這塊兒涵蓋,并通過案例使學(xué)生更加理解這部分的知識點(diǎn),特別是事件這一比較不容易理解的知識點(diǎn)。Java是面向?qū)ο蟮脑O(shè)計語言,基礎(chǔ)知識中的類和對象的概念,以及相關(guān)的特性是一個非常重要的部分,在案例中,類和對象可以說貫穿了每個案例設(shè)計的始末,在使用的時候可以將類和對象的概念以及相關(guān)特性,如繼承、封裝、線程、輸入輸出流等穿插在其中,重復(fù)幾次概念后,學(xué)生便能夠記住了。在案例中,涉及機(jī)器視覺中的圖像處理、識別和顯示,對于有醫(yī)學(xué)圖像處理和機(jī)器視覺基礎(chǔ)知識的學(xué)生,在學(xué)習(xí)時可以將醫(yī)學(xué)圖像處理、機(jī)器視覺和Java知識融合起來,在實現(xiàn)教材中案例的基礎(chǔ)上,還可以根據(jù)自己需要完成想要的功能,進(jìn)一步檢驗理論學(xué)習(xí)的成效。比如在手機(jī)上遠(yuǎn)程獲取醫(yī)學(xué)圖像,因為手機(jī)上顯示醫(yī)學(xué)圖像清晰度不足,即使有選擇窗位窗寬、放大平移這樣的功能,但是手機(jī)顯示屏畢竟不是專用的醫(yī)學(xué)圖像顯示屏,在這種情況下,可以利用編程對遠(yuǎn)程獲取的醫(yī)學(xué)圖像進(jìn)行處理,通過輔助診斷來彌補(bǔ)顯示屏的不足;還可以利用手機(jī)攝像頭檢測人體心率、皮膚情況、舌苔等,這些都屬于人工智能機(jī)器視覺范疇。對于沒有醫(yī)學(xué)圖像處理、機(jī)器視覺這部分知識的同學(xué),由于使用了OpenCV插件以及一些其他的函數(shù)庫,可以直接調(diào)用函數(shù),并設(shè)置相應(yīng)的參數(shù)便可以實現(xiàn)圖像處理和機(jī)器視覺的功能,在接受這部分知識點(diǎn)時,不會有太大的難度,后面在學(xué)習(xí)醫(yī)學(xué)圖像處理、機(jī)器視覺時,可以回頭再將應(yīng)用加強(qiáng)。
1.1.2 智能可穿戴設(shè)備方面
人工智能可助力智能可穿戴設(shè)備實現(xiàn)強(qiáng)大功能,這部分的案例我選擇中國鐵道出版社李天詳編寫的《Android物聯(lián)網(wǎng)開發(fā)細(xì)致入門與最佳實踐》這本教材。這本教材的第18章有一個案例是心率的低功耗藍(lán)牙接收與顯示,該案例可以作為TI公司的CC2541開發(fā)板中的心率檢測與低功耗藍(lán)牙發(fā)送的Android軟件部分,經(jīng)過實驗,可以正常地發(fā)送接收顯示。在實現(xiàn)該案例時筆者用的開發(fā)環(huán)境為Android5.0版本,需要JDK1.8、Eclipse和AndroidSDK。該案例也會涉及Java基礎(chǔ)知識的基本應(yīng)用。在有硬件的情況下,可以考慮該案例。在沒有硬件的情況下,可以不考慮該案例,因為在沒有硬件的情況下,無法檢測到藍(lán)牙,也不能夠顯示心率數(shù)據(jù)。
機(jī)器學(xué)習(xí)是人工智能的一個子集,深度學(xué)習(xí)屬于機(jī)器學(xué)習(xí)的子類。在建立和部署與機(jī)器學(xué)習(xí)相關(guān)的系統(tǒng)方面,Java仍然是一種重要且高效的工具,Deeplearning4j是Apache授權(quán)的庫,該庫是用于深度學(xué)習(xí)的原生Java庫中較好的選擇。部分臨床決策支持技術(shù)需要檢索與臨床病例醫(yī)學(xué)圖像相似的醫(yī)學(xué)圖像,以達(dá)到輔助醫(yī)生診斷的目的,比如案例的推理和循證醫(yī)學(xué)[2],實現(xiàn)這個功能不能夠只靠文字來進(jìn)行檢索,而是需要依靠圖像的特征來檢索,即基于內(nèi)容的圖像檢索。集成機(jī)器學(xué)習(xí)和醫(yī)學(xué)圖像處理的智能醫(yī)學(xué)影像診斷系統(tǒng),能夠輔助醫(yī)生完成醫(yī)學(xué)影像診斷,提高診斷效率。
教材選擇和開發(fā)環(huán)境搭建方面。基于上述原因,在Java Web開發(fā)時,選擇了中國工信出版社明恒毅編寫的《自制AI圖像搜索引擎》這本教材,該教材是以案例為驅(qū)動的教材,介紹了案例需要用到的圖像處理和機(jī)器學(xué)習(xí)基本知識及相應(yīng)的Java實現(xiàn),并詳細(xì)給出了基于內(nèi)容的圖像檢索功能的實現(xiàn)過程,這也屬于機(jī)器視覺的范疇。開發(fā)環(huán)境教材中選用的是IntelliJIDEA社區(qū)版,筆者試過2019社區(qū)版和2021.1.3社區(qū)版,這兩個版本的社區(qū)版都可以正常搭建環(huán)境并運(yùn)行,試過檢索JPG格式醫(yī)學(xué)影像,能夠檢索出和被檢醫(yī)學(xué)影像類似的圖像,但是2020版卻不能夠正常的搭建環(huán)境。IntelliJ IDEA社區(qū)版為免費(fèi)的,前端頁面可以是Html頁面,但不能是Jsp頁面,IntelliJ IDEA正式版可以實現(xiàn)Jsp頁面。該教材的不足之處在于沒有對常用的關(guān)系型數(shù)據(jù)庫中數(shù)據(jù)的增刪改查顯示等功能的實現(xiàn)。在選擇該案例作為教學(xué)內(nèi)容時,授課教師要了解Java的基本語法,類和對象的概念以及特性,文件輸入輸出流,對數(shù)據(jù)庫中數(shù)據(jù)的讀取等等,另外,也要了解前端開發(fā) Html、CSS、JQuery的基本知識,Servlet,以及利用IntelliJ IDEA社區(qū)版實現(xiàn)Java Web的基本過程。
課程設(shè)計方面。在后端的實現(xiàn)特征索引庫生成工具子項目這一部分中,學(xué)生可以學(xué)習(xí)到IntelliJ IDEA內(nèi)置的用來管理依賴包的Maven的基本用法、提取用來匹配被檢索醫(yī)學(xué)圖像的每幅醫(yī)學(xué)圖像形成的特征、且將這些特征存儲到嵌入式數(shù)據(jù)庫中、將子項目編譯并打包到j(luò)ar中的方法,這里面涉及的Java基礎(chǔ)語法,類和對象的概念以及特性,文件流等知識,有學(xué)生沒有學(xué)過的,可以穿插在其中講,特別是在介紹深度學(xué)習(xí)和圖像特征提取、圖像特征索引與檢索的原理與相應(yīng)的Java實現(xiàn)時,Java基礎(chǔ)語法、面向?qū)ο筇匦陨婕暗锰貏e多,通過該部分的學(xué)習(xí)不僅可以學(xué)習(xí)Java基礎(chǔ)知識,還有助于對相關(guān)原理的理解。在圖像搜索引擎子項目的前端中,采用了Html、CSS、JQuery方式,這種組合方式是經(jīng)典的前端開發(fā)組合方式,可以幫助學(xué)生了解前端的基本結(jié)構(gòu)、常用元素、和事件。前端和后端的互動又用到了同樣經(jīng)典的Servlet,調(diào)用子項目中的jar包、特征數(shù)據(jù)庫鍵值對的提取。當(dāng)功能都實現(xiàn)后,可以將項目部署到IntelliJ IDEA內(nèi)置的Tomcat7服務(wù)器上,并進(jìn)行運(yùn)行測試。學(xué)生可以通過該案例了解和智能醫(yī)療有關(guān)的Java Web開發(fā)的基本過程和知識點(diǎn),這個過程很簡單,涉及的基本知識點(diǎn)也不多,但這比較適合在有限的學(xué)時內(nèi)給學(xué)生搭一個框架,學(xué)生再根據(jù)自己的興趣、需求進(jìn)一步去深入探索,以問題為中心,逐步將知識點(diǎn)加深加寬。學(xué)生可以參考Java機(jī)器學(xué)習(xí)、Java圖像搜索等書籍和文獻(xiàn)資料,試著使用其他的和機(jī)器學(xué)習(xí)相關(guān)的Java庫,并和教材中的案例進(jìn)行對比分析,有助于加深對機(jī)器學(xué)習(xí)原理的理解以及機(jī)器學(xué)習(xí)的部分應(yīng)用。對于并不太想深入挖掘機(jī)器學(xué)習(xí)算法的同學(xué),可以借閱查找Java Web相關(guān)的資料,將檢索界面做得更美觀,并加入一些與醫(yī)學(xué)圖像相關(guān)的病人資料的存儲和管理。通過這種以問題為中心、解決問題的學(xué)習(xí)方式,獲取的知識點(diǎn)更牢固,學(xué)生的學(xué)習(xí)興趣會增強(qiáng)。
本文介紹了基于智能醫(yī)學(xué)的Java課程的一些思考,希望以案例為驅(qū)動,使學(xué)生在有限的學(xué)時內(nèi)能將智能醫(yī)學(xué)專業(yè)中其他專業(yè)課程知識與Java課程融合,以增加課程的廣度和復(fù)雜度,提升學(xué)生的學(xué)習(xí)興趣和內(nèi)驅(qū)力。案例包括Android開發(fā)中的圖像處理、人臉檢測、OCR識別、人眼追蹤、心率檢測和低功耗藍(lán)牙傳輸、Java Web開發(fā)中基于內(nèi)容的醫(yī)學(xué)影像圖像檢索。結(jié)合筆者的從教經(jīng)歷,主要從教材選擇和環(huán)境搭建、課程設(shè)計方面提出了自己的看法。教師可以根據(jù)自己的需求選擇合適的案例教學(xué)。文中提到的案例涉及的Java知識點(diǎn)雖然只占整個知識體系中的很少部分,但是需要教師先將Java語言基礎(chǔ)知識、Android開發(fā)的基本知識以及Java Web開發(fā)的基礎(chǔ)知識能夠先有所準(zhǔn)備。對于愿意從事Java開發(fā)的同學(xué),可以為日后的工作做準(zhǔn)備,對于不愿意從事Java開發(fā)的同學(xué),可以通過實現(xiàn)案例的過程了解其他課程的作用,并有助于加深對課程的理解。