Приоритизируйте маркировку образцов изображений клеток на основе предполагаемого влияния их метки на производительность модели.

Авторы (равный вклад)

Ади Ниссим, Ноам Сигел, Нимрод Берман

Введение

Одним из основных препятствий, стоящих перед многими задачами машинного обучения, является отсутствие размеченных данных. Маркировка данных может быть утомительной и дорогостоящей. Таким образом, во многих случаях нецелесообразно даже пытаться решить проблему с помощью методов машинного обучения из-за отсутствия меток.

Чтобы решить эту проблему, появилась область машинного обучения, называемая активным обучением. Активное обучение — это метод машинного обучения, который обеспечивает основу для определения приоритетов выборок неразмеченных данных на основе размеченных данных, которые модель уже видела. Мы не будем вдаваться в подробности, вы можете прочитать статью Активное обучение в машинном обучении, в которой подробно объясняется фреймворк.

Наука о данных в визуализации клеток — это область исследований, которая быстро развивается. Тем не менее, как и в других областях машинного обучения, метки обходятся дорого. Чтобы решить эту проблему, в этой статье мы показываем сквозную работу над задачей классификации активного обучения клеток изображения эритроцитов и лейкоцитов.

Наша цель — представить сочетание биологии и активного обучения и помочь другим решать аналогичные и более сложные задачи в области биологии с использованием методов активного обучения.

Статья состоит из 3 основных частей:

  • Предварительная обработка изображений клеток — здесь мы показываем, как выполнять предварительную обработку несегментированных изображений клеток крови.
  • Извлечение признаков клеток с помощью Cell Profiler — где мы показываем, как извлекать морфологические признаки из фотографий биологических клеток, чтобы использовать их в качестве признаков для моделей машинного обучения.
  • Использование активного обучения — где мы показываем эксперимент, имитирующий использование активного обучения, а также сравнение с неиспользованием активного обучения.

Репозиторий проекта находится по адресу:
https://github.com/noamsgl/active_learning_cell_imaging

Предварительная обработка изображения ячейки

Набор данных

Мы будем использовать набор изображений клеток крови, который был загружен на GitHub, а также Kaggle по лицензии MIT. Каждое изображение помечено в соответствии с классами эритроцитов (RBC) и лейкоцитов (WBC). Существуют дополнительные метки для 4 видов лейкоцитов (эозинофилы, лимфоциты, моноциты и нейтрофилы), но мы не использовали эти метки в нашем исследовании.

Вот пример полноразмерного необработанного изображения из набора данных:

Создание образца данных DataFrame

Мы обнаружили, что исходный набор данных содержит скрипт export.py, который анализирует аннотации XML в таблицу CSV с именами файлов, метками типов ячеек и ограничивающими рамками для каждой ячейки.

К сожалению, исходный сценарий не включал столбец cell_id, который необходим, поскольку мы классифицируем отдельные ячейки. Итак, мы немного изменили код, чтобы включить этот столбец, а также выбрать новые имена файлов, которые включают image_id и cell_id:

Обрезка

Первым шагом для работы с данными является обрезка полноразмерных изображений на основе координат ограничивающей рамки. Это приводит к причудливым изображениям ячеек:

И вот код:

Для вашего удобства мы разветвили исходный репозиторий и загрузили обрезанные изображения на GitHub! Их можно найти по адресу:

https://github.com/noamsgl/BCCD_Dataset/tree/master/BCCD/cropped

Вот и все с предварительной обработкой! Теперь приступайте к извлечению признаков с помощью CellProfiler.

Извлечение признаков ячейки с помощью CellProfiler

CellProfiler — это бесплатное программное обеспечение для анализа изображений с открытым исходным кодом, предназначенное для автоматизации количественных измерений фенотипов из крупномасштабных изображений клеток. CellProfiler имеет удобный графический пользовательский интерфейс (GUI), позволяющий вам использовать встроенные пайплайны, а также создавать собственные, адаптированные к вашим конкретным потребностям, используя различные измерения и функции.

Начиная:

Сначала скачайте Cellprofiler. Если CellProfiler не открывается, вам может потребоваться установить Распространяемый пакет Visual C++.

Как только появится графический интерфейс, загрузите изображения и запишите упорядоченные метаданные в CellProfiler. Если вы выберете создать собственный конвейер, здесь вы можете найти список модулей, доступных через CellProfiler. Большинство модулей разбиты на три основные группы: Обработка изображений, Обработка объектов и Измерения. Вы можете сохранить конфигурацию конвейера и использовать ее повторно или поделиться ею со всем миром.

Теперь мы продемонстрируем процесс извлечения признаков:

  • Обработка изображений – вы можете выполнить несколько манипуляций с изображениями, прежде чем активировать функции. Например, преобразование изображения из цветного в оттенки серого:

  • Обработка объектов. Эти модули обнаруживают и идентифицируют объекты на изображении или позволяют вам манипулировать ими.

  • Измерения. Теперь, после того как мы активировали модули обработки изображений и определили в них первичные объекты, измерения, которые, как известно, полезны для профилирования клеток, могут быть рассчитаны для каждого объекта и суммированы для каждого изображения.

С CellProfiler вы можете сохранять выходные данные в электронные таблицы или другие типы баз данных. Мы сохранили наши выходные данные в виде файла .CSV и загрузили его в Python в качестве функций для модели машинного обучения.

Использование активного обучения

Итак, теперь у нас наконец есть табличные данные, с которыми мы можем попробовать поэкспериментировать. Мы хотим поэкспериментировать, может ли использование стратегии активного обучения сэкономить время за счет маркировки меньшего количества данных и повышения точности. Наша гипотеза состоит в том, что, используя активное обучение, мы потенциально могли бы сэкономить драгоценное время и усилия, значительно сократив количество помеченных данных, необходимых для обучения модели машинного обучения задаче классификации клеток.

Структура активного обучения

Прежде чем мы углубимся в наш эксперимент, мы хотим провести краткое введение в modAL. ModAL — это активная обучающая среда для Python. Он использует API Sklearn, поэтому его очень легко интегрировать в ваш код, если вы работаете со Sklearn. Эта структура позволяет вам легко использовать различные современные стратегии активного обучения. Их документацию легко понять, и мы настоятельно рекомендуем использовать ее в процессе активного обучения.

Активное обучение VS случайный подход

Эксперимент

Чтобы подтвердить нашу гипотезу, мы проведем эксперимент, который сравнит стратегию случайной подвыборки для добавления новых помеченных данных со стратегией активного обучения. Мы начнем обучать 2 оценщика логистической регрессии с несколькими одинаковыми помеченными образцами. Затем мы собираемся использовать стратегию «Случайное» для одной модели и стратегию «Активное обучение» для второй модели. Позже мы объясним, как именно это будет работать.

Подготовка данных для эксперимента

Сначала мы загружаем функции, созданные Cell Profiler. Чтобы упростить задачу, мы фильтруем тромбоциты, которые представляют собой бесцветные клетки крови. Мы сохраняем только красные и белые кровяные тельца. Таким образом, мы пытаемся решить проблему бинарной классификации - эритроциты и лейкоциты. Затем мы устанавливаем метку с помощью кодировщика меток sklearn, извлекаем функции обучения из данных в X и, наконец, разделяем данные для обучения и тестирования.

Подготовка данных для эксперимента

Теперь установим модели

Ученик-пустышка будет моделью, которая будет использовать случайную стратегию, в то время как активный ученик будет использовать стратегию активного обучения. Чтобы создать модель активного ученика, мы используем объект ActiveLearner из пакета modAL. В поле оценщик вы можете вставить любую модель sklearn, которая будет соответствовать данным. В поле query_strategy вы выбираете конкретную стратегию активного обучения. Мы использовали ‘uncertainty_sampling()’. Для получения дополнительной информации ознакомьтесь с документацией modAL.

Разделение обучающих данных

Чтобы создать наш эксперимент с виртуальными стратегиями, мы разделили обучающие данные на 2 группы. Первый — это обучающие данные, метки которых нам известны, и мы будем использовать их для обучения наших моделей. Второй — это обучающие данные, которые мы действуем так, как будто не знаем их меток. Мы устанавливаем известный размер поезда на 5 выборок.

Имитировать активный VS манекен

Теперь мы запустим 298 эпох, в каждой из которых мы будем обучать каждую модель, выберем следующую выборку, в которую мы вставим базовые данные по стратегии каждой модели, и измерим ее точность вдоль каждой эпоха. Мы будем использовать среднюю оценку точности для измерения производительности моделей. Мы выбрали эту метрику из-за несбалансированного характера набора данных.

Чтобы выбрать следующую выборку в стратегии «Случайный», мы просто добавим следующую выборку в группу «new» фиктивного набора данных. Этот набор данных перемешивается, поэтому нет необходимости в повторном перемешивании. Чтобы выбрать следующий образец с активной структурой обучения, мы будем использовать метод ActiveLearner с именем «query», который получает немаркированные данные группы «new» и возвращает индекс образца, который он рекомендует добавить в обучающую группу «base». Каждый выбранный образец будет удален из группы new, чтобы ни один образец нельзя было выбрать дважды или более.

В этом примере мы добавили 1 образец на каждой итерации. В реальном мире может быть более практичным делать выборку из k выборок за раз.

Полученные результаты

Различия между стратегиями поразительны!

Мы видим, что, используя активное обучение, мы можем достичь средней точности 0,9 балла всего с 25 образцами! В то время как с фиктивной стратегией для достижения той же точности требуется 175 образцов! Какой пробел!

Кроме того, активная модель достигает высокого балла почти 0,99, в то время как манекен останавливается около 0,95! Если бы мы использовали все данные, то в конечном итоге они достигли бы одного и того же балла, но для нашей цели мы ограничились 300 случайными выборками из набора данных.

Код для сюжета:

Заключение / Обсуждение

Методы контролируемого машинного обучения для классификации изображений клеток требуют помеченных наборов данных. Успех этих методов будет сдерживаться внебюджетными ярлыками по мере роста данных. Чтобы преодолеть эту проблему, мы покажем, как легко использовать активное обучение, чтобы выбрать наименьшее количество изображений для маркировки и при этом получить самые высокие оценки классификации. Наши эксперименты показывают, что стратегия активного обучения имеет среднюю точность 0,9 (метрика, подходящая для несбалансированных наборов данных) всего с 25 метками по сравнению с 0,4 при использовании фиктивной стратегии случайного выбора.

Визуализация клеток внесла большой вклад в области биологии, медицины и фармакологии. Он используется для определения типа клетки, ее токсичности, целостности и фазы, и эта информация необходима медицинским работникам и ученым для выявления заболеваний и расширения нашего понимания клеточной биологии.
Раньше анализ изображений клеток требовал ценных профессиональный человеческий капитал. Современное улучшение качества и доступности методов микроскопии, а также передовые алгоритмы машинного обучения позволили области науки о данных совершить революцию в визуализации клеток. Эти новые технологии привели к динамическим и многомерным качественным базам данных, и способность обрабатывать эти современные данные визуализации клеток играет решающую роль в развитии области клеточной биологии.

Надеемся, что клеточные биологи и другие специалисты найдут эту статью полезной для понимания стратегий активного обучения, способов их реализации в пользовательских решениях для машинного обучения и облегчения использования методов обработки данных в своих исследованиях.

Наконец, вы можете поделиться своими мыслями и предложениями в разделе комментариев после использования Active Learning для ваших проектов!

Рекомендации

[1] Активное обучение в машинном обучении | Ана Солагурен-Беаскоа, доктор философии | На пути к науке о данных

[2] GitHub — Shenggan/BCCD_Dataset: набор данных BCCD (подсчет и обнаружение клеток крови) — это небольшой набор данных для обнаружения клеток крови.

[3] Изображения клеток крови | Kaggle

[4] Карпентер, А. Э., Джонс, Т. Р., Лампрехт, М. Р., Кларк, К., Канг, И. Х., Фриман, О., … и Сабатини, Д. М. (2006). CellProfiler: программное обеспечение для анализа изображений для идентификации и количественной оценки клеточных фенотипов. Геномная биология, 7(10), 1–11.

[5] Стирлинг, Д. Р., Суэйн-Боуден, М. Дж., Лукас, А. М., Карпентер, А. Э., Чимини, Б. А., и Гудман, А. (2021). CellProfiler 4: улучшения в скорости, полезности и удобстве использования. Биоинформатика BMC, 22(1), 1–11.