在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

    文章

    96

    瀏覽量

    12120
  • 機器學習
    +關注

    關注

    66

    文章

    8496

    瀏覽量

    134203
  • 預處理
    +關注

    關注

    0

    文章

    33

    瀏覽量

    10619

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

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

收藏 人收藏

    評論

    相關推薦
    熱點推薦

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

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

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

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

    NX CAD軟件:數字化工作流程解決方案(CAD工作流程)

    NXCAD——數字化工作流程解決方案(CAD工作流程)使用西門子領先的產品設計軟件NXCAD加速執行基于工作流程的解決方案。我們在了解行業需求方面累積了多年的經驗,并據此針對各個行業的具體需求提供
    的頭像 發表于 02-06 18:15 ?352次閱讀
    NX CAD軟件:數字化<b class='flag-5'>工作流程</b>解決方案(CAD<b class='flag-5'>工作流程</b>)

    Aigtek高電壓放大器微流控細胞篩選測試

    微流控技術是一種在微小尺度上操控流體的高科技技術,具有極高的應用價值。其中,微流控細胞篩選作為一種重要的應用方向,已經引起了廣泛關注。本文Aigtek 安泰電子 將介紹微流控細胞篩選的
    的頭像 發表于 01-20 16:33 ?385次閱讀
    Aigtek高電壓放大器微流控<b class='flag-5'>細胞</b>篩選測試

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

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

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

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

    安泰功率放大器+溶血換能器在生物醫療領域中的具體應用

    在生物醫療領域,如果當出現輸血反應及中毒情況的話,就可以能引起一種很危險的狀況,,那就是——溶血。那么什么是溶血?溶血性實驗是如何進行的?功率放大器+溶血換能器在生物醫療領域中又有哪些具體應用?今天
    的頭像 發表于 12-02 17:36 ?401次閱讀
    安泰功率放大器+溶血換能器在生物醫療領域中的具體應用

    主動學習圖像分類技術中的應用:當前狀態與未來展望

    基于Transformer結構提升模型預測性能,以確保模型預測結果的可靠性。 此外,本文還對各類主動學習圖像分類算法下的重要學術工作
    的頭像 發表于 11-14 10:12 ?1167次閱讀
    <b class='flag-5'>主動</b><b class='flag-5'>學習</b>在<b class='flag-5'>圖像</b><b class='flag-5'>分類</b>技術中的應用:當前狀態與未來展望

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

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

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

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

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

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

    測試用例怎么寫

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

    實現自動駕駛,唯有

    ,去年行業主流方案還是輕高精地圖城區智駕,今年大家的目標都瞄到了(End-to-End, E2E)。
    的頭像 發表于 08-12 09:14 ?1357次閱讀
    實現自動駕駛,唯有<b class='flag-5'>端</b><b class='flag-5'>到</b><b class='flag-5'>端</b>?

    電阻的電流和電壓是如何區分的

    電阻是一種具有四個端子的電阻器,其中兩個端子用于電流輸入,另外兩個端子用于電壓測量。四電阻的設計可以有效地消除測量電路中的接觸電阻和引線電阻的影響,從而提高測量的準確性。 1.2 四
    的頭像 發表于 08-05 10:48 ?2233次閱讀

    計算機視覺怎么給圖像分類

    圖像分類是計算機視覺領域中的項核心任務,其目標是將輸入的圖像自動分配到預定義的類別集合中。這
    的頭像 發表于 07-08 17:06 ?1616次閱讀
    主站蜘蛛池模板: 欧美激欧美啪啪片免费看 | 一个综合色 | 亚洲伦理一区二区三区 | 丁香六月婷婷综合 | 美女视频很黄很暴黄是免费的 | 色偷偷尼玛图亚洲综合 | 午夜秒播 | 欧美日韩国产一区 | 在线观看亚洲一区 | 日韩种子| 超级极品白嫩美女在线 | 人人插人人艹 | 中文天堂在线最新版在线www | 成人欧美一区二区三区 | 欧美日韩中文字幕在线 | 天天舔夜夜操 | 爱操综合 | 免费高清在线爱做视频 | 久久综合九色综合98一99久久99久 | 色在线看| www.91在线| 久久这里只有精品免费视频 | 99久久国产免费中文无字幕 | 91亚洲国产成人久久精品网站 | 亚洲国产精品热久久2022 | 日韩一级黄色录像 | 91精品久久久久含羞草 | 国产精品久久久久久久久久影院 | 亚洲欧美在线观看 | 国产精品任我爽爆在线播放6080 | 色噜噜狠狠色综合欧洲selulu | 9久久9久久精品 | 4虎影院永久地址www | 亚洲最新视频 | 真实国产伦子系 | 午夜看黄 | 婷婷激情电影 | 欧美69视频在线 | 永久免费观看视频 | 精品午夜久久福利大片免费 | 日本在线观看成人小视频 |