在先正達,影像分類是自動化化學配方系統中樣品建模的關鍵,該系統已產生超過10萬張影像。這些影像用於確定產品開發的下一步步驟,但僅憑肉眼解讀影像非常耗時,且評估結果受評估者主觀因素的影響。
適用於 JMP Pro 的 Torch 深度學習外掛程式利用卷積神經網路和 GPU 運算的強大功能,顯著簡化了分析過程,並在約定的對照影像集上實現了結果的一致性。我們展示了該插件如何輕鬆導入和預測一組相當複雜的圖像,並在幾分鐘內返回有意義的互動式輸出。而通常情況下,手動處理和編寫 Python 程式碼需要數小時甚至數天才能完成的任務,現在卻可以快速實現。
大家好,歡迎參加我們今天的演講。我是來自 JMP 研發部門的 Russ Wolfinger,我非常榮幸能與我的朋友兼同事,來自先正達的 David Barnett 一起為大家帶來精彩內容。今天,我們非常興奮地向大家介紹 JMP 與 JMP Pro 的一個全新應用—影像處理與分析。這對 JMP 來說是一個全新的方向,我們對此感到非常興奮。我記得在新冠疫情初期,我們投入了大量精力開發 JMP 的一個全新插件——Torch Deep Learning。此前,我們收到許多客戶的回饋,他們對這個插件非常感興趣。眾所周知,人工智慧、機器學習和深度學習在全球範圍內都獲得了巨大的發展。目前最受歡迎的兩個軟體包可能是 PyTorch 和 TensorFlow。我們最終選擇了 PyTorch,事實證明,Torch 擁有一個非常友好的 C++ 接口,我們可以深入底層進行開發。我們已經開發出一款與 JMP Pro 無縫整合的優秀插件,並已將其發布。
我記得當時我很興奮。我想這本書才出版幾週,大衛不知怎麼就知道了。
大衛,我想你是最早關注這個計畫的人之一。我還記得你早期取得的成功。今天很高興聽到你的故事,了解專案的緣起,以及你過去幾個月使用這些數據和開發應用程式後,目前的進展。大衛,現在把麥克風交給你,聽聽你最近的進展。
謝謝你,Russ。真的很好。不好意思,我得分享一下螢幕。希望大家都能看到。謝謝你,Russ。正如Russ所說,我在早期的一個醫生培訓計畫中就看到了這個。這是我們一直想在影像分析方面研究的。我接下來會解釋一下我們高通量系統背後的原理。
簡單介紹一下農業綜合企業,如何養活未來的世界正日益成為人們關注的焦點。到2050年,世界人口將達到約90億,而糧食需求量將遠遠超過這個數字。作為一家企業,我們正尋求不斷成長。光是先正達一家就擁有約3萬名員工,業務遍及90多個國家,銷售額相當可觀,三年前接近170億美元。我們最大的研發中心,也是我目前所在的研發中心,位於英國倫敦郊區的傑洛特山。公司在研發方面投入了大量資金。
我們擁有各種類型的化學家,包括合成化學家、計算化學家和分析化學家。我所在的配方化學部門,主要負責整合我們所有的知識並進行產品銷售。由於監管壓力、成本壓力以及產品上市速度的限制(正如我之前提到的,為了確保產品安全,我們必須應對各種監管壓力),配方的複雜性幾乎呈指數級增長。我們不僅要確保生產過程的安全,還要確保使用我們產品的農民以及購買使用我們產品的消費者的安全。正因如此,我們看到了利用自動化技術來完成大量後台工作的巨大機會。正如我所說,由於配方的複雜性,最終裝瓶的產品成分也變得更加複雜。背後的工藝流程,以及添加順序,都至關重要。我們所得到的回饋,無論是隨著時間的推移,它在瓶中是否會沉澱,是否也會隨著時間的推移而變稠,通常都是非線性的,因為我們必須在瓶子裡放入不同的東西。
我們看到的回報是:更大、更完整的資料集。這讓我們能夠更了解我們銷售給農民的產品。它還能減少我們在實驗室裡為將產品推向市場而進行的重複性工作。我們也可以考慮成本方面的因素。如果我們能以更低的價格購買原料,我們就能以更低的價格將產品推向市場,或是獲得更高的利潤,這通常才是我們追求的目標。
此外,產品性能也有所提升。我們可以添加一些助劑(我們稱之為「助劑」),幫助產品更好地被植物或昆蟲吸收。由於成分複雜,這裡僅作簡要說明,說明我們可以添加的成分數量。例如,假設我們有20種成分(見上排),並且我們只想進行1:1的混合,那就需要190個樣品。配方化學家可以在實驗室完成這項工作。如果想要更複雜的配方,並且進行純粹的1:1混合,那就需要1100個樣品。這並非配方化學家能夠在合理時間內完成的工作。
您可以看到,如果我們使用的成分越來越多,樣品數量就能達到近200萬個,而實驗室根本無法達到這個規模。大約15年前,我們投資了位於Jealott's Hill的ARTEMIS系統,這是一個高通量配方系統。您可以看到我們當時正在研發的規模。這套系統可以自動製備樣品並進行表徵。它每天可以製備約200個樣品並進行全面表徵,這與配方化學家在實驗室的工作方式相比,是一次質的飛躍。
其中一個測試是觀察樣品倒入噴霧罐後的反應。我們使用一種標準的工業測試方法,稱為“倒入克勞接收器”測試。通常我們會配製1%的溶液。我們需要手動檢查溶液的擴散。直接倒入後,溶液的擴散情況如何?此外,也要觀察其在數小時內的穩定性。這項測試可能需要持續長達24小時。
再次強調,這是一個非常主觀的測試。一位化學家可能認為沒問題,而另一位則可能更加細緻,能夠看出樣品頂部是否有少量乳狀物,或者底部是否有沉澱物。以下是我們要尋找的樣品範例,如輔助說明所述。這完全是視覺上的。左側是最佳樣品。雖然還稱不上完美,但也非常好。從左到右,情況逐漸變差。基本上,樣品直接沉到圓筒底部,完全沒有擴散。如果農民將這樣的樣本放入噴霧罐中,而不進行任何攪拌,那麼它就無法成功噴灑到田地裡,也就無法有效噴灑到作物上。
現在回到ARTEMIS的主體部分,讓我們來看看它的視覺分析模組VAM,這可能是它最強大的功能。它的作用是拍攝多張照片。我馬上示範一下,稍後會展示影像。它利用雷射、背光和前光進行成像,所有組件都整合在一個漂亮的盒子中。
這是我們實驗的一個例子。這是一個樣品,我們以三張為一組,每組曝光時間不同。前三張分別是正面照射、背面照射,以及雷射照射進樣品平面,然後從正面照射,您看到的是反射回來的光。第二組三張曝光方式不同,同樣是正面照射、背面照射,雷射照射進樣品平面。第三組曝光時間也一樣,非常長。您可以看到,正如預期的那樣,隨著曝光時間的延長,顏色強度也隨之增加。接下來的三張是雷射照射進樣品後的效果。您看到的是相機實際偵測到的雷射照射效果。同樣,雷射照射進樣品平面。在底部,您可以看到一些小紅點,那是穿過樣品的光。底部的樣品透明度略低。
右邊那個我們通常會忽略,因為它根本說明不了任何問題。希望我解釋清楚了。這是一個例子。這是一個乳化樣品。如果你仔細看圖片,你會發現數字 3 左上方有一塊白色的區域。在背光下,可以很清楚地看到頂部有東西。這就是我們所說的乳化樣品。
我們想要的是一個成分均勻的樣品。多年來,我們一直使用一款名為 ImageJ 的程式。它能給出樣品的數值,但它並不關心樣品的特定成分,只是傳回一個數值。 0 到 255 之間的任何數值都代表一種顏色,例如紅色、綠色和藍色。但這種方法無法提供易於理解的輸出結果。通常需要由我來將這些數值組合起來,告訴化學家樣品的成分。它是理想的白色均勻樣品,還是有沉澱的黃色樣品?雖然我們可以從數值中獲取顏色訊息,但這非常耗時。多年來,我一直想要的是一個能夠真正告訴我樣品外觀的程序。它是否是一個理想的白色均勻樣品?
我完全不需要做任何解讀。或許需要做一些後台查,但我不需要深入研究那些繁瑣的數字。
作為這項工作的一部分,我們設計了一個實驗,目的是篩選出一些乳化劑,並獲取我們需要用來分析所有 Torch 資訊以及其他一些原因的圖像。我們有很多樣本。大約有 800 個樣本需要準備用於實驗,這些樣本也用於影像分析。所有圖像都製備了三份。每個樣本都進行了影像分析。實際上,每個樣本總共有七張圖像,我逐一查看並進行了解讀。無論是沉澱物樣本、乳霜樣本,還是均勻的樣本,或是少量泡沫,圖像上都有各種各樣的特徵,我想你可以想像這非常耗時。我們需要查看超過 6000 張圖像。這確實花了我不少時間。我一開始並沒有完全理解。可能現在還是不夠完美,但我已經盡力了。
我出於不同的劑量原因提取了各種樣本。圖像會被保留下來,以備將來可能需要的其他技術使用。當你在實驗室觀察樣本時,你的分析結果基本上會被立即丟棄,因為你只是把樣本倒進了水槽,你無法再用任何圖像查看它,它永遠都在那裡了。我們會用什麼來進行影像分析呢?這是JMP中的Torch,它相當不錯。我相信我們會更詳細地討論,但基本上,正如Russ剛才所說,這個程式可以查看圖像,並根據我預先輸入的一些知識進行解讀。我用來做所有這些工作的筆記型電腦配置很高,我強烈建議你也使用配置高的電腦,因為它確實會佔用大量記憶體。我不會在這裡進行任何即時演示,因為它可能需要相當長的時間,尤其是在進行更複雜的分析時。
我有一些例子,從中可以看出一些細微的差別。說實話,我們馬上就要進入正題了,但首先要說明的是,我完全不是這方面的專家。我知道這些數字代表什麼,但具體原理我並不了解。我引用了蘇格拉底的一句話,我為此感到非常自豪。這句話是我自己找到的。我知道我對這方面一無所知,所以還是留給專家們來解釋吧。那就交給你們了。另外,我這裡展示的只是非常簡化的結果。為了完成這項工作,我在幕後做了大量的工作,數據也會提供給你們。希望你們能仔細研究這些數據,從中獲得更有價值的資訊。正如我之前所說,結果並不完美。我對樣本的實際外觀與JMP的分析結果之間80%的相關性感到滿意。
我得到的比這更高。還有其他工具可以做到這一點。實際上,你可以在 Python 的原生環境中執行這個腳本。
我們考慮過將其納入數據網路的管道中。我們希望能夠實現自動化。一旦我們對輸出結果的真正含義和準確性有了更深入的了解和信心,我們就離目標更近了。
在正式開始之前,先感謝幾位朋友。感謝的人很多。謝謝 Sam。還有幾位來自 JMP 的同事。來自 Jealott's Hill 的 Liz Easton,她負責所有 JMP 許可證的管理;以及 Alan Brown,你們當中有些人可能還記得他,他是先正達的退休統計學家,過去幾年裡,他對先正達使用 JMP 產生了巨大的影響。正如我所說,他現在已經退休了,但他留下的寶貴遺產仍在延續。希望我之後也能順利使用 JMP。
實驗設計我就不贅述了,這裡只做個簡化版。我們有人工智慧系統、三種乳化劑(用量見下文),以及相應的溶劑(濃度範圍與乳化劑相符),總共約有1400個樣品。我們用了三種不同的比色皿,樣品就分別放入其中。
我們有純淨的樣品池,也就是純淨的樣品。我們還有稀釋樣品,在製備並倒置約五分鐘後拍攝影像。此時的T值等於0。第二天,也就是大約24小時後,我們想觀察這些樣本在數小時內的穩定性。視覺分析和顏色是我對結果的解讀。有均勻的,這是理想狀態。有乳狀層,表示樣本上升到頂部。純淨層,應始終與純淨的樣品池一致。有沉澱,表示樣品沉澱到底部。有泡沫,表示樣品倒置後產生了泡沫,對樣品來說不是理想的狀態。作為Torch外掛程式的一部分,您實際上可以建立k折交叉驗證列。根據建議,我們這裡有三列,它們基本上是驗證列,還有圖像片段。它們不是全解析度影像。它們被放入了數據表中。
你可以看到,很明顯,這裡面有不同品質的樣本。正如我之前所說,我不會一一贅述,因為這需要相當長的時間。
希望您能看到我之前做的一些分析。我主要關注的是這些指標,即訓練集 R 平方值與驗證集準確率的比值。正如我之前所說,我希望預測結果與實際模型的預測結果之間達到 80% 的一致性。您可以看到,這裡是 96%,那裡是 97%。這裡面有一些非常好的相關性。您可以嘗試很多不同的圖像模型。清單越往下,模型的運行時間就越長,但我過去嘗試過很多模型,發現 LeNet5 實際上是一個不錯的折衷方案。在分析速度和實際輸出之間,隨著列表的向下移動,模型的改進幅度很小。我對目前 95% 的準確率非常滿意。您也可以調整層數、批次大小和影像大小。再次聲明,我並非專家。
我只是隨意嘗試這些數值,得到了不同的結果。你可以看到我在這裡嘗試了幾種。與預設值(也就是最上面的那個)相比,並沒有太大的改進。
很多優點之一就是你可以看到這個關於訓練歷史的圖表。你可以看到,你想要的是它能更快降下來,降得更低。你可以點擊不同的模型,看看它們之間的效能比較。你可以找到一些非常優秀的模型,也可以找到一些雜訊很大的次優模型。你可以改進它們,但噪音確實很大,不過你可以隨著訓練的進行不斷改進。我還想看看這些圖表。你可以看到得到正確答案的機率。雖然看起來有點雜亂,但實際數字顯示,它並沒有做出正確的預測。當然,這可能是我解讀有誤。在1500個樣本中,只有33個是正確的。實際上,相關性非常好。作為證明,你還可以查看這裡的混淆矩陣。它對大多數樣本的預測是正確的。
黃色佔100%。正如您所料,如果您願意,也可以檢測到其他顏色。白色佔比97%,與驗證結果的相關性也非常好。
您可以嘗試不同的模型。沉澱物模型對特定泡沫的預測效果不太好,所以這不是一項重要的測試。至於奶油模型,預測的置信度不高,大約只有 84/1500,還不錯。這實際上表明,這個模型很有可靠性,我們可以將其整合到分析工作流程中。我們希望能夠自動辨識圖像,進行分析,並以易於理解的形式呈現結果。再次強調,這只是非常基本的測試。如果需要,我們可以添加更多信息,例如不同的顏色,如果我們有藍色配方,也可以添加藍色。
以上就是我試用JMP的Torch插件的簡單介紹,其實還挺有趣的。想了解更多信息,別來問我,去找像Russ這樣的人,他們能提供更多細節。 Russ,該你了,我就不多說了。
謝謝你,David。這真是個令人印象深刻的例子。看到這樣的成果真的令人興奮,尤其是我知道你是配方化學專家,但並非深度學習專家,卻能成功運用它並取得成果。這正是我們設計這款軟體,乃至整個 JMP 的初衷——為科學家、工程師以及現在的資料科學家而設計。我們正引領著業界新潮流。我還想從技術角度提一下,如果我沒理解錯的話,David,LeNet 的預設模型似乎會將你的雷射影像調整為 28x28 像素。分辨率下降幅度相當大。實際上,我有一些例子表明,這種做法會嚴重降低效能。但就你的情況而言,這已經非常出色了。
效果非常好。
對於其他應用來說,可以使用更大的圖像,雖然這會降低計算速度,但有時這樣做是值得的。這時,Windows 上的 Nvidia GPU 就派上用場了。我贊同你的建議。運行這些模型需要不錯的硬體。可惜的是,由於遊戲產業的蓬勃發展,至少在 Windows 系統上,它們的硬體價格相當實惠。而且它們通常使用相同的晶片。問題是,如果你家有青少年之類的孩子,你們可能會為了爭搶電腦而打架,但看到這個應用真的很有趣,David。恭喜你。我期待與你進一步合作開發這些應用。我認為從某種意義上來說,我們才剛起步。我想補充幾點,以豐富你剛才的討論。
首先,為了讓大家了解狀況,我們將進行第二次演講,與本次演講互為補充。根據您觀看此影片的時間,第二次演講的時間是2024年。如果您在10月17日之前觀看,現在報名還來得及。如果您想觀看直播,請前往LinkedIn,您可以在那裡找到此廣告。您也可以造訪我的個人主頁或Alexander Beck的個人主頁進行註冊。
如果現在已經過了10月17日,我想你仍然可以找到錄影,了解更多細節。作為今天演講的後續,我們也會更深入探討幾個主題。我還想提一下,這並非個案。例如,今年早些時候,由新加坡、劍橋和巴斯夫的研究人員組成的團隊發表了一篇關於洗髮配方的優秀論文。他們採用了非常出色的實驗設計方法,這正是我們在JMP中非常欣賞的。這正是我們擅長的領域——我們喜歡的實驗和分析。他們拍攝配方照片,並嘗試建立分類器模型。他們也使用了一些先進的自動化機器人來輔助影像擷取。看到這些成果真是太棒了。我認為這項技術能夠真正利用高品質數據,並從中獲得最大價值。
值得慶幸的是,他們確實公開了數據。這裡簡單展示一下。我們還使用 Torch 外掛程式處理了這些圖像,並建立了一個分類器。
我們甚至在論文發表的結果基礎上又做了一些改進。這些模型還有很大的提升空間,它們的能力令人驚嘆。當然,它們並非萬無一失,有時甚至會犯一些低階錯誤。例如,我認為在這個例子中,裁剪就起到了很大的幫助。你必須注意影像邊緣的偽影。有時,這些模型會過於貪婪,它們會專注於一些你並不需要的部分。在這種情況下,我們事先進行了一些裁剪,最終得到了非常好的結果。如果你想親自嘗試這個插件,它可以在 JMP 社群免費取得。只要搜尋一下,最簡單的方法可能是在網路上搜尋“Torch Deep Learning JMP Pro”,你應該可以找到這個頁面。你需要一個可用的 JMP Pro 18 或 19 版本,早期使用者版本現在也可以下載了。
這兩種方法都應該可行。然後您只需從這裡下載插件即可。為了更具吸引力,我們也整理了一系列精彩的範例,名為《Torch Storybook》。
這實際上只是一個跳轉表,即使不安裝插件,您也可以下載查看。我們現在已經收集了 47 個範例,涵蓋各種不同的應用類型。這些範例似乎更側重於化學領域,這可能是我們最重要的行業或科學重點之一,例如,我認為我們接下來會基於此構建一個應用,而我們在這裡的數據就來自…這實際上是 Discovery Europe 的一篇論文。去年,或者可能是今年早些時候,他們研究了一個發酵批次過程。他們實際上有時間數據。有趣的是,我們能夠使用 JMP Graph Builder 將這些資料建構成熱圖,然後將其匯入 Torch 深度學習模型。這可能是您一開始沒有想到的。事實上,如果說今天有一個主題,那就是將圖像與 JMP 中的深度學習模型進行匹配的想法,開闢了一個全新的領域,並催生了各種各樣的應用。
此表中的許多應用都來自圖像。
我還想提一下,我們也在研究非結構化文本,例如,利用分子的微笑字串來預測性質。這非常了不起。我希望我們能在下次的演講中更詳細地討論這方面的內容,但只是想先拋磚引玉。請隨意下載這張表格,並瀏覽一些可能引起您興趣的範例。表格中包含資料下載鏈接,所有資料均為公開資料集。此外,還有範例輸出、參考文獻和背景資料。如果您想快速入門,這張表格旨在透過一系列優秀的範例幫助您做到這一點。透過實例學習總是很有幫助的。我們對這些應用感到非常興奮。 David,我希望隨著研究的深入,大家都能順利地跟上你的步伐,我們也期待你分享其他應用。再次感謝你,David。我非常珍惜與你合作的機會。 David,你對下一步的分析有什麼想法?
這關乎嘗試不同的樣本,並確保每個人都對最終結果感到滿意。這是在我們已有知識的基礎上進行的。
非常好。我知道我們也有一些客戶已經…他們也做了同樣的事情,並且已經開始在實踐中部署他們的模型了。他們中的許多人都在使用 Python,而我們現在也有一些應用程序,可以在 Torch 中訓練模型,將其保存為 PyTorch 對象,然後透過 JMP 的 Python 整合將其載入到 Python 程式中。我們現在在這方面已經有了很好的連結。很多令人興奮的事情正在發生。這只是實現這一目標的一種方式。我認為這是標準的非生成式人工智慧機器學習,非常流行且實用。就你而言,David,這或許可以讓你少跑幾間眼科診所,並真正加速和改進你的工作流程和日常活動。
當然,是的。
好的。感謝大家的收看。我們希望能在探索會議或其他場合見到你們。歡迎隨時透過LinkedIn或JMP信箱聯絡我們。我們很樂意與你們進一步探討JMP Pro的最新動態和其他相關事宜。