色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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)
以上就是我們所做的所有預處理操作。現在,我們繼續使用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

    文章

    90

    瀏覽量

    11914
  • 機器學習
    +關注

    關注

    66

    文章

    8406

    瀏覽量

    132565
  • 預處理
    +關注

    關注

    0

    文章

    33

    瀏覽量

    10478

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

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

收藏 人收藏

    評論

    相關推薦

    應用于活細胞成像的次性細胞培養芯片

    盡管最近幾年我們對細胞內過程的了解越來越多,但近期內100年來細胞培養的基本過程沒有根本性的改變。然而,觀察細胞的方法,卻在近些年進行場革命,如相差,差分干涉對照,共聚集和熒光等都應
    的頭像 發表于 12-17 09:41 ?66次閱讀

    已來,智駕仿真測試該怎么做?

    智駕方案因強泛化能力、可持續學習與升級等優勢備受矚目,但這對仿真測試帶來了巨大挑戰。康謀探索了一種有效的
    的頭像 發表于 12-04 09:59 ?2519次閱讀
    <b class='flag-5'>端</b><b class='flag-5'>到</b><b class='flag-5'>端</b>已來,智駕仿真測試該怎么做?

    細胞的“聚光燈”——前沿活細胞成像的案例分享

    細胞切生命的基本單位,構成了各式各樣的生命體。因此研究細胞的結構以及內部生命活動過程可以幫助我們更深入地探究生命的奧秘,了解生命體是如何構建和運作的。傳統的細胞顯微術只能通過觀察固
    的頭像 發表于 10-24 08:04 ?297次閱讀
    活<b class='flag-5'>細胞</b>的“聚光燈”——前沿活<b class='flag-5'>細胞</b>成像的案例分享

    Mobileye自動駕駛解決方案的深度解析

    強大的技術優勢。 Mobileye的解決方案概述 1.1 什么是自動駕駛?
    的頭像 發表于 10-17 09:35 ?351次閱讀
    Mobileye<b class='flag-5'>端</b><b class='flag-5'>到</b><b class='flag-5'>端</b>自動駕駛解決方案的深度解析

    ATG-2000系列功率信號源在介電電泳細胞分選測試中的應用

    分離和富集,如白細胞紅細胞、癌細胞、循環腫瘤細胞、癌癥干細胞等。安泰電子功率信號源,具有低失真、高穩定的輸出性能。還可內置信號源,讓微流控
    的頭像 發表于 10-12 16:27 ?170次閱讀
    ATG-2000系列功率信號源在介電電泳<b class='flag-5'>細胞</b>分選測試中的應用

    測試用例怎么寫

    編寫測試用例是確保軟件系統從頭到尾能夠正常工作的關鍵步驟。以下是個詳細的指南,介紹如何編寫
    的頭像 發表于 09-20 10:29 ?441次閱讀

    ATA-2088高壓放大器在細胞分選中的作用是什么

    這些信號能夠被準確地檢測和分析。 1.細胞分選的背景 細胞分選是一種將混合細胞群中的目標細胞分離出來的技術。這對于生物醫學研究、臨床診斷和治
    的頭像 發表于 06-12 11:47 ?229次閱讀
    ATA-2088高壓放大器在<b class='flag-5'>細胞</b>分選中的作用是什么

    穩壓管工作原理是什么

    穩壓管工作原理是什么 三穩壓管,又稱為三穩壓器或三穩壓集成電路,是一種廣泛應用于電子電
    的頭像 發表于 06-10 15:41 ?2553次閱讀

    激光如何對您的血液計數

    用于流式細胞術的激光為什么是血細胞計數的核心?了解激光如何成為執行這項常規測試的關鍵。 當您醫院抽血時,過段時間后就會得到結果。 全血細胞
    的頭像 發表于 04-17 06:37 ?257次閱讀
    激光如何對您的血液計數

    一種用于微液滴中單細胞無標記分析的液滴篩選(LSDS)方法

    基于液滴的單細胞分析是一種非常強大的工具,可用于以單細胞分辨率研究表型和基因組異質性,從而解決各種生物問題。
    的頭像 發表于 03-26 11:17 ?542次閱讀
    <b class='flag-5'>一種</b>用于微液滴中單<b class='flag-5'>細胞</b>無標記分析的液滴篩選(LSDS)方法

    基于啟揚 i.MX8M Mini核心板的全自動細胞分析儀應用解決方案

    全自動細胞分析儀是醫院臨床檢驗應用非常廣泛的儀器之,用來檢測紅細胞、血紅蛋白、白細胞、血小板等項目。基于光學原理和圖像分析技術,通過光學鏡
    的頭像 發表于 03-09 08:00 ?344次閱讀
    基于啟揚 i.MX8M Mini核心板的全自動<b class='flag-5'>細胞</b>分析儀應用解決方案

    安泰ATA-7050高壓放大器在微流控細胞分選中的應用

    微流控細胞分選是一種用于分離和鑒定生物樣本中特定類型細胞的技術,其原理基于將生物細胞通過微通道進行操縱和區分。微流控細胞分選的原理主要基于流
    的頭像 發表于 03-01 16:56 ?410次閱讀
    安泰ATA-7050高壓放大器在微流控<b class='flag-5'>細胞</b>分選中的應用

    移動協作機器人的RGB-D感知的處理方案

    本文提出了一種用于具有雙目視覺的自主機器人的三維語義場景感知的流程。該流程包括實例分割、特
    發表于 02-21 15:55 ?682次閱讀
    移動協作機器人的RGB-D感知的<b class='flag-5'>端</b><b class='flag-5'>到</b><b class='flag-5'>端</b>處理方案

    YOLOv8+PyQT5打造細胞計數與識別應用說明

    YOLOv8對象檢測模型基于自定義數據集訓練紅白細胞檢測模型,然后通過工具導出模型為ONNX,基于OpenVINO實現模型推理,完成細胞檢測識別,根據檢測到的細胞類別與數目,統計,在PyQT5打造的界面上顯示輸出檢測結果。
    的頭像 發表于 01-15 17:22 ?1142次閱讀
    YOLOv8+PyQT5打造<b class='flag-5'>細胞</b>計數與識別應用說明

    熒光顯微鏡細胞圖像檢測實戰

    圖像數據集是 U2OS 細胞高通量化學篩選的部分,其中包含 200 生物活性化合物的示例。治療效果最初是使用細胞繪畫測定(熒光顯微鏡)
    的頭像 發表于 01-07 15:44 ?599次閱讀
    熒光顯微鏡<b class='flag-5'>細胞</b><b class='flag-5'>圖像</b>檢測實戰
    主站蜘蛛池模板: 男男h开荤粗肉h文1v1| 亚洲精品国产乱码AV在线观看| 国产人A片在线乱码视频| 高h肉肉乳共妻| 国产乱辈通伦影片在线播放亚洲| 国产成人精品综合在线| 国产成人在线观看免费网站| 国产精品人妻无码久久久蜜桃| 国产三级多多影院| 久久艹影院| 免费看午夜高清性色生活片| 琪琪电影午夜理论片YY6080| 色多多污网站在线观看| 午夜办公室在线观看高清电影| 羞羞答答dc视频| 一区二区乱子伦在线播放| 538久久视频在线| 丰满少妇69激情啪啪无码| 国产色青青视频在线观看| 久久精品国产亚洲AV热无遮挡| 男女床上黄色| 天天操夜夜噜| 婬香婬色天天视频| 别插我B嗯啊视频免费| 国产人妻人伦精品98| 久久中文字幕无码A片不卡| 青青娱乐网| 亚洲精品第一页| 99热精品在线av播放| 91se在线看片国产免费观看| 一个人免费播放高清在线观看| 97免费视频在线观看| 国产精品久久婷婷五月色| 久久人妻少妇嫩草AV无码| 色婷婷国产精品视频一区二区| 色久悠悠无码偷拍自怕| 男人舔女人的阴部黄色骚虎视频| 娇小老少配xxxxx| 蜜柚视频高清在线| 无码国产色欲XXXX视频| 浴室里强摁做开腿呻吟的漫画男男|