国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

一種對紅細胞和白細胞圖像分類任務的主動學習端到端工作流程

新機器視覺 ? 來源:DeepHub IMBA ? 作者:Adi Nissim, Noam Sieg ? 2022-08-13 10:27 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

本文介紹一種對紅細胞和白細胞圖像分類任務的主動學習端到端工作流程。

通過細胞圖像的標簽對模型性能的影響,為數據設置優先級和權重。 許多機器學習任務的主要障礙之一是缺乏標記數據。而標記數據可能會耗費很長的時間,并且很昂貴,因此很多時候嘗試使用機器學習方法來解決問題是不合理的。 為了解決這個問題,機器學習領域出現了一個叫做主動學習的領域。主動學習是機器學習中的一種方法,它提供了一個框架,根據模型已經看到的標記數據對未標記的數據樣本進行優先排序。 細胞成像的分割和分類等技術是一個快速發展的領域研究。就像在其他機器學習領域一樣,數據的標注是非常昂貴的,并且對于數據標注的質量要求也非常的高。針對這一問題,本篇文章介紹一種對紅細胞和白細胞圖像分類任務的主動學習端到端工作流程。 我們的目標是將生物學和主動學習的結合,并幫助其他人使用主動學習方法解決生物學領域中類似的和更復雜的任務。 本篇文主要由三個部分組成:
  • 細胞圖像預處理——在這里將介紹如何預處理未分割的血細胞圖像。
  • 使用CellProfiler提取細胞特征——展示如何從生物細胞照片圖像中提取形態學特征,以用作機器學習模型的特征。
  • 使用主動學習——展示一個模擬使用主動學習和不使用主動學習的對比實驗。

細胞圖像預處理

我們將使用在MIT許可的血細胞圖像數據集(GitHub和Kaggle)。每張圖片都根據紅細胞(RBC)和白細胞(WBC)分類進行標記。對于這4種白細胞(嗜酸性粒細胞、淋巴細胞、單核細胞和中性粒細胞)還有附加的標簽,但在本文的研究中沒有使用這些標簽。 下面是一個來自數據集的全尺寸原始圖像的例子: 6ec9d9ea-1a86-11ed-ba43-dac502259ad0.png ?創建樣本DF 原始數據集包含一個export.py腳本,它將XML注釋解析為一個CSV表,其中包含每個細胞的文件名、細胞類型標簽和邊界框。 原始腳本沒有包含cell_id列,但我們要對單個細胞進行分類,所以我們稍微修改了代碼,添加了該列并添加了一列包括image_id和cell_id的filename列:

										
import os, sys, randomimport xml.etree.ElementTree as ETfrom glob import globimport pandas as pdfrom shutil import copyfile
annotations = glob('BCCD_Dataset/BCCD/Annotations/*.xml')df = []for file in annotations:  #filename = file.split('/')[-1].split('.')[0] + '.jpg'  #filename = str(cnt) + '.jpg'  filename = file.split('\')[-1]  filename =filename.split('.')[0] + '.jpg'  row = []  parsedXML = ET.parse(file)  cell_id = 0  for node in parsedXML.getroot().iter('object'):      blood_cells = node.find('name').text      xmin = int(node.find('bndbox/xmin').text)      xmax = int(node.find('bndbox/xmax').text)      ymin = int(node.find('bndbox/ymin').text)      ymax = int(node.find('bndbox/ymax').text)
      row = [filename, cell_id, blood_cells, xmin, xmax, ymin, ymax]      df.append(row)      cell_id += 1
data = pd.DataFrame(df, columns=['filename', 'cell_id', 'cell_type', 'xmin', 'xmax', 'ymin', 'ymax'])data['image_id'] = data['filename'].apply(lambda x: int(x[-7:-4]))data[['filename', 'image_id', 'cell_id', 'cell_type', 'xmin', 'xmax', 'ymin', 'ymax']].to_csv('bccd.csv', index=False)
裁剪 為了能夠處理數據,第一步是根據邊界框坐標裁剪全尺寸圖像。這就產生了很多大小不一的細胞圖像: 6eecf826-1a86-11ed-ba43-dac502259ad0.jpg6f027dcc-1a86-11ed-ba43-dac502259ad0.jpg6f17ab98-1a86-11ed-ba43-dac502259ad0.jpg6f30dfb4-1a86-11ed-ba43-dac502259ad0.jpg ?裁剪的代碼如下:

										
import osimport pandas as pdfrom PIL import Image

def crop_cell(row):  """  crop_cell(row)
  given a pd.Series row of the dataframe, load row['filename'] with PIL,  crop it to the box row['xmin'], row['xmax'], row['ymin'], row['ymax']  save the cropped image,  return cropped filename  """  input_dir = 'BCCDJPEGImages'  output_dir = 'BCCDcropped'  # open image  im = Image.open(f"{input_dir}{row['filename']}")
  # size of the image in pixels  width, height = im.size
  # setting the points for cropped image  left = row['xmin']  bottom = row['ymax']  right = row['xmax']  top = row['ymin']
  # cropped image  im1 = im.crop((left, top, right, bottom))  cropped_fname = f"BloodImage_{row['image_id']:03d}_{row['cell_id']:02d}.jpg"  # shows the image in image viewer  # im1.show()
  # save image  try:      im1.save(f"{output_dir}{cropped_fname}")  except:      return 'error while saving image'
  return cropped_fname
if __name__ == "__main__":  # load labels csv into Pandas DataFrame  filepath = "BCCDdataset2-masterlabels.csv"  df = pd.read_csv(filepath)
  # iterate through cells, crop each cell, and save cropped cell to file  dataset_df['cell_filename'] = dataset_df.apply(crop_cell, axis=1)
以上就是我們所做的所有預處理操作?,F在,我們繼續使用CellProfiler提取特征。

使用CellProfiler提取細胞特征

CellProfiler是一個免費的開源圖像分析軟件,可以從大規模細胞圖像中自動定量測量。CellProfiler還包含一個GUI界面,允許我們可視化的操作。 首先下載CellProfiler,如果CellProfiler無法打開,則可能需要安裝Visual C ++發布包,具體安裝方式參考官網。 打開軟件就可以加載圖像了, 如果想構建管道可以在CellProfiler官網找到其提供的可用的功能列表。大多數功能分為三個主要組:圖像處理,目標的處理和測量。常用的功能如下: 圖像處理 - 轉為灰度圖: 6f442eac-1a86-11ed-ba43-dac502259ad0.png ?目標對象處理 - 識別主要對象 6f5dc132-1a86-11ed-ba43-dac502259ad0.png ?測量 - 測量對象強度 6f81633a-1a86-11ed-ba43-dac502259ad0.png ?CellProfiler可以將輸出為CSV文件或者保存指定數據庫中。這里我們將輸出保存為CSV文件,然后將其加載到Python進行進一步處理。 說明:CellProfiler還可以將你處理圖像的流程保存并進行分享。

主動學習

我們現在已經有了訓練需要的搜有數據,現在可以開始試驗使用主動學習策略是否可以通過更少的數據標記獲得更高的準確性。我們的假設是:使用主動學習可以通過大量減少在細胞分類任務上訓練機器學習模型所需的標記數據量來節省寶貴的時間和精力。 主動學習框架 在深入研究實驗之前,我們希望對modAL進行快速介紹:modAL是Python的活躍學習框架。它提供了Sklearn API,因此可以非常容易地將其集成到代碼中。該框架可以輕松地使用不同的主動學習策略。他們的文檔也很清晰,所以建議從它開始你的一個主動學習項目。 主動學習與隨機學習 為了驗證假設,我們將進行一項實驗,將添加新標簽數據的隨機子抽樣策略與主動學習策略進行比較。開始用一些相同的標記樣本訓練2個Logistic回歸估計器。然后將在一個模型中使用隨機策略,在第二個模型中使用主動學習策略。 我們首先為實驗準備數據,加載由Cell Profiler創建的特征。這里過濾了無色血細胞的血小板,只保留紅和白細胞(將問題簡化,并減少數據量) 。所以現在我們正在嘗試解決二進制分類問題 - RBC與WBC。使用Sklearn Label的label encoder進行編碼,并拆分數據集進行訓練和測試。

										
# imports for the whole experimentimport numpy as npfrom matplotlib import pyplot as pltfrom modAL import ActiveLearnerimport pandas as pdfrom modAL.uncertainty import uncertainty_samplingfrom sklearn import preprocessingfrom sklearn.metrics import , average_precision_scorefrom sklearn.linear_model import LogisticRegression
# upload the cell profiler features for each celldata = pd.read_csv('Zaretski_Image_All.csv')
# filter plateletsdata = data[data['cell_type'] != 'Platelets']
# define the labeltarget = 'cell_type'label_encoder = preprocessing.LabelEncoder()y = label_encoder.fit_transform(data[target])
# take the learning features onlyX = data.iloc[:, 5:]
# create training and testing setsX_train, X_test, y_train, y_test = train_test_split(X.to_numpy(), y, test_size=0.33, random_state=42)
下一步就是創建模型:

										
dummy_learner = LogisticRegression()
active_learner = ActiveLearner(estimator=LogisticRegression(),query_strategy=uncertainty_sampling())
dummy_learner是使用隨機策略的模型,而active_learner是使用主動學習策略的模型。為了實例化一個主動學習模型,我們使用modAL包中的ActiveLearner對象。在“estimator”字段中,可以插入任何sklearnAPI兼容的模型。在query_strategy '字段中可以選擇特定的主動學習策略。這里使用“uncertainty_sampling()”。這方面更多的信息請查看modAL文檔。 將訓練數據分成兩組。第一個是訓練數據,我們知道它的標簽,會用它來訓練模型。第二個是驗證數據,雖然標簽也是已知的但是我們假裝不知道它的標簽,并通過模型預測的標簽和實際標簽進行比較來評估模型的性能。然后我們將訓練的數據樣本數設置成5。

										
# the training size that we will start withbase_size = 5
# the 'base' data that will be the training set for our modelX_train_base_dummy = X_train[:base_size]X_train_base_active = X_train[:base_size]y_train_base_dummy = y_train[:base_size]y_train_base_active = y_train[:base_size]
# the 'new' data that will simulate unlabeled data that we pick a sample from and label itX_train_new_dummy = X_train[base_size:]X_train_new_active = X_train[base_size:]y_train_new_dummy = y_train[base_size:]y_train_new_active = y_train[base_size:]
我們訓練298個epoch,在每個epoch中,將訓練這倆個模型和選擇下一個樣本,并根據每個模型的策略選擇是否將樣本加入到我們的“基礎”數據中,并在每個epoch中測試其準確性。因為分類是不平衡的,所以使用平均精度評分來衡量模型的性能。 在隨機策略中選擇下一個樣本,只需將下一個樣本添加到虛擬數據集的“新”組中,這是因為數據集已經是打亂的的,因此不需要再進行這個操作。對于主動學習,將使用名為“query”的ActiveLearner方法,該方法獲取“新”組的未標記數據,并返回他建議添加到訓練“基礎”組的樣本索引。被選擇的樣本都將從組中刪除,因此樣本只能被選擇一次。

										
# arrays to accumulate the scores of each simulation along the epochsdummy_scores = []active_scores = []# number of desired epochsrange_epoch = 298# running the experimentfor i in range(range_epoch):  # train the models on the 'base' dataset  active_learner.fit(X_train_base_active, y_train_base_active)  dummy_learner.fit(X_train_base_dummy, y_train_base_dummy)
  # evaluate the models  dummy_pred = dummy_learner.predict(X_test)  active_pred = active_learner.predict(X_test)
  # accumulate the scores  dummy_scores.append(average_precision_score(dummy_pred, y_test))  active_scores.append(average_precision_score(active_pred, y_test))
  # pick the next sample in the random strategy and randomly  # add it to the 'base' dataset of the dummy learner and remove it from the 'new' dataset  X_train_base_dummy = np.append(X_train_base_dummy, [X_train_new_dummy[0, :]], axis=0)  y_train_base_dummy = np.concatenate([y_train_base_dummy, np.array([y_train_new_dummy[0]])], axis=0)  X_train_new_dummy = X_train_new_dummy[1:]  y_train_new_dummy = y_train_new_dummy[1:]
  # pick next sample in the active strategy  query_idx, query_sample = active_learner.query(X_train_new_active)
  # add the index to the 'base' dataset of the active learner and remove it from the 'new' dataset  X_train_base_active = np.append(X_train_base_active, X_train_new_active[query_idx], axis=0)  y_train_base_active = np.concatenate([y_train_base_active, y_train_new_active[query_idx]], axis=0)  X_train_new_active = np.concatenate([X_train_new_active[:query_idx[0]], X_train_new_active[query_idx[0] + 1:]], axis=0)  y_train_new_active = np.concatenate([y_train_new_active[:query_idx[0]], y_train_new_active[query_idx[0] + 1:]], axis=0)
結果如下:

										
plt.plot(list(range(range_epoch)), active_scores, label='Active Learning')plt.plot(list(range(range_epoch)), dummy_scores, label='Dummy')plt.xlabel('number of added samples')plt.ylabel('average precision score')plt.legend(loc='lower right')plt.savefig("models robustness vs dummy.png", bbox_inches='tight')plt.show()
6f99b278-1a86-11ed-ba43-dac502259ad0.png ?策略之間的差異還是很大的,可以看到主動學習只使用25個樣本就可以達到平均精度0.9得分!而使用隨機的策略則需要175個樣本才能達到相同的精度! 此外主動學習策略的模型的分數接近0.99,而隨機模型的分數在0.95左右停止了!如果我們使用所有數據,那么它們最終分數是相同的,但是我們的研究目的是在少量標注數據的前提下訓練,所以只使用了數據集中的300個隨機樣本。

總結

本文展示了將主動學習用于細胞成像任務的好處。主動學習是機器學習中的一組方法,可根據其標簽對模型性能的影響來優先考慮未標記的數據示例的解決方案。由于標記數據是一項涉及許多資源(金錢和時間)的任務,因此判斷那些標記那些樣本可以最大程度地提高模型的性能是非常必要的。 細胞成像為生物學,醫學和藥理學領域做出了巨大貢獻。以前分析細胞圖像需要有價值的專業人力資本,但是像主動學習這種技術的出現為醫學領域這種需要大量人力標注數據集的領域提供了一個非常好的解決方案。 本文引用:
  • GitHub — Shenggan/BCCD_Dataset: BCCD (Blood Cell Count and Detection) Dataset is a small-scale dataset for blood cells detection.

  • Blood Cell Images | Kaggle

  • Active Learning in Machine Learning | by Ana Solaguren-Beascoa, PhD | Towards Data Science

  • Carpenter, A. E., Jones, T. R., Lamprecht, M. R., Clarke, C., Kang, I. H., Friman, O., … & Sabatini, D. M. (2006).

  • CellProfiler: image analysis software for identifying and quantifying cell phenotypes. Genome biology, 7(10), 1–11.

  • Stirling, D. R., Swain-Bowden, M. J., Lucas, A. M., Carpenter, A. E., Cimini, B. A., & Goodman, A. (2021).


審核編輯 :李倩


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 圖像分類
    +關注

    關注

    0

    文章

    96

    瀏覽量

    12488
  • 機器學習
    +關注

    關注

    66

    文章

    8553

    瀏覽量

    136928
  • 預處理
    +關注

    關注

    0

    文章

    33

    瀏覽量

    10814

原文標題:?細胞圖像數據的主動學習

文章出處:【微信號:vision263com,微信公眾號:新機器視覺】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    是德科技與三星攜手英偉達展示AI-RAN驗證工作流程

    是德科技(NYSE: KEYS )與三星電子宣布,會在巴塞羅那舉行的2026年世界移動通信大會(MWC 2026)上,與英偉達聯合演示人工智能無線接入網絡(AI-RAN)測試與驗證工作流
    的頭像 發表于 03-05 10:04 ?310次閱讀

    寬帶功率放大器在聲流控細胞分選中的應用

    實驗名稱: 聲流控細胞分選 研究方向: 基于聲流控的活死細胞分選技術是一種利用聲波在微流體通道中產生的特定流場效應來實現細胞分選的方法。這種技術結合了聲學、流體力學和生物學原理,能夠在
    的頭像 發表于 12-16 12:02 ?301次閱讀
    寬帶功率放大器在聲流控<b class='flag-5'>細胞</b>分選中的應用

    如何訓練好自動駕駛模型?

    [首發于智駕最前沿微信公眾號]最近有位小伙伴在后臺留言提問:算法是怎樣訓練的?是模仿學習、強化學習和離線強化
    的頭像 發表于 12-08 16:31 ?1427次閱讀
    如何訓練好自動駕駛<b class='flag-5'>端</b><b class='flag-5'>到</b><b class='flag-5'>端</b>模型?

    Nullmax軌跡規劃論文入選AAAI 2026

    11月8日,全球人工智能頂會 AAAI 2026 公布論文錄用結果,Nullmax 研發團隊的軌跡規劃論文成功入選。該論文創新提出一種由粗
    的頭像 發表于 11-12 10:53 ?854次閱讀

    自動駕駛中“段式”和“二段式”有什么區別?

    攝像頭、毫米波雷達、激光雷達等信號,便可以直接輸出轉向、油門、剎車或者軌跡指令。段式就是用個整體模型完成這個
    的頭像 發表于 10-24 09:03 ?1161次閱讀
    自動駕駛中“<b class='flag-5'>一</b>段式<b class='flag-5'>端</b><b class='flag-5'>到</b><b class='flag-5'>端</b>”和“二段式<b class='flag-5'>端</b><b class='flag-5'>到</b><b class='flag-5'>端</b>”有什么區別?

    自動駕駛中常提的段式(單段)是個啥?

    自動駕駛技術的發展,催生出技術的應用,段式
    的頭像 發表于 10-18 10:16 ?1688次閱讀

    文讀懂特斯拉自動駕駛FSD從輔助的演進

    、控制等環節各自負責不同的功能,各模塊用顯式代碼和規則來完成任務。隨著數據規模和算力增長,特斯拉開始把更多功能放到機器學習模型里,尤其是從2024年推出的V12(標注為“Supervised”)開始,特斯拉開始大幅度推進“
    的頭像 發表于 10-11 09:13 ?804次閱讀
    <b class='flag-5'>一</b>文讀懂特斯拉自動駕駛FSD從輔助<b class='flag-5'>到</b><b class='flag-5'>端</b><b class='flag-5'>到</b><b class='flag-5'>端</b>的演進

    基于寬帶功率放大器的聲流控細胞高效分選創新方案

    實驗名稱: 聲流控細胞分選 研究方向: 基于聲流控的活死細胞分選技術是一種利用聲波在微流體通道中產生的特定流場效應來實現細胞分選的方法。這種技術結合了聲學、流體力學和生物學原理,能夠在
    的頭像 發表于 09-28 11:29 ?532次閱讀
    基于寬帶功率放大器的聲流控<b class='flag-5'>細胞</b>高效分選創新方案

    自主工具鏈助力組合輔助駕駛算法驗證

    徹底解決越來越多的長尾問題。圖1輔助駕駛算法(圖片來源網絡)輔助駕駛算法是一種深度學習算法,該算法將傳感器數據輸入后,基于大模型直接輸
    的頭像 發表于 08-26 17:41 ?3349次閱讀
    自主工具鏈助力<b class='flag-5'>端</b><b class='flag-5'>到</b><b class='flag-5'>端</b>組合輔助駕駛算法驗證

    蔚來模型化架構如何大幅提升安全上限

    2024年7月,蔚來將行業首個基于模型化架構的「自動緊急制動 AEB」推送上車,蔚來也成為了行業首家使用
    的頭像 發表于 08-15 15:35 ?921次閱讀

    尋開發伙伴 起搞細胞電阻儀,有興趣的朋友來聊聊!

    尋開發伙伴 起搞細胞電阻儀,有興趣的朋友來聊聊!
    發表于 07-10 15:51

    電壓放大器在介電電泳細胞分選中的應用研究

    、引言 細胞分選技術在生物醫學領域具有重要應用,如疾病診斷、細胞治療和生物研究等。介電電泳技術作為一種新興的細胞分選方法,利用非均勻電場對
    的頭像 發表于 07-02 11:45 ?642次閱讀
    電壓放大器在介電電泳<b class='flag-5'>細胞</b>分選中的應用研究

    基于細胞微流控的阻抗測試解決方案

    基于細胞微流控的阻抗測試技術,作為一種新興的技術,結合了微流控芯片技術與電阻抗譜(EIS)技術,廣泛應用于生物醫學、細胞分析以及微流控系統的研究與開發。這種技術能夠在不依賴光學顯微鏡的情況下,實現
    的頭像 發表于 07-02 11:07 ?1268次閱讀
    基于<b class='flag-5'>細胞</b>微流控的阻抗測試解決方案

    文帶你厘清自動駕駛架構差異

    [首發于智駕最前沿微信公眾號]隨著自動駕駛技術飛速發展,智能駕駛系統的設計思路也經歷了從傳統模塊化架構大模型轉變。傳統模塊化架構將感知、預測、規劃和控制等子
    的頭像 發表于 05-08 09:07 ?1027次閱讀
    <b class='flag-5'>一</b>文帶你厘清自動駕駛<b class='flag-5'>端</b><b class='flag-5'>到</b><b class='flag-5'>端</b>架構差異

    太赫茲細胞能量儀主控芯片方案單片機開發控制板布局規劃

    量通過智能的共振腔,以引力波的旋轉方式將量子波輸出到待理療的人體局部組織,由于輸出的量子微磁旋轉振動波達上億次,產生能量強,量子微磁能量能直接穿透待治療組織的內部,引起組織內的各種細胞
    發表于 03-25 15:37