ПРИМЕНЕНИЕ ИСКУССТВЕННОГО ИНТЕЛЛЕКТА ДЛЯ АНАЛИЗА МЕДИЦИНСКИХ ДАННЫХ В ПОЛИКЛИНИКАХ ГОРОДА ВОРОНЕЖА

Научная статья
DOI:
https://doi.org/10.60797/IRJ.2024.146.160
Выпуск: № 8 (146), 2024
Предложена:
14.06.2024
Принята:
11.07.2024
Опубликована:
16.08.2024
28
2
XML
PDF

Аннотация

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

1. Введение

Актуальность применения искусственного интеллекта (далее – ИИ) для обработки медицинских данных в городе Воронеж на момент 2024 года обусловлена несколькими ключевыми факторами. Во-первых, объем медицинских данных растет с огромной скоростью, а традиционные методы обработки информации не всегда справляются с таким количеством данных эффективно. В условиях крупного города, такого как Воронеж (население 1051995 человек по итогам открытых проверок  2023 года), лечебные учреждения (число государственных поликлиники – 49, негосударственных свыше 100) ежедневно создают огромные массивы информации, в том числе диагностические снимки, результаты исследований и электронные медицинские карты

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

Необходимость внедрения ИИ также продиктована потребностью в совершенствовании качества медицинских услуг и персонализации лечебного процесса. Это подтверждается на законодательном уровне. Так, в 2024 году на цифровизации поликлиник правительством Российской Федерации выделено свыше 5 миллиардов рублей. Также активно проводятся конференции и круглые столы, результаты обсуждений которых способствуют цифровому развитию и интеграции интеллектуальных решений в поликлиниках городов нашей страны. Во многом такая активность связана с тем, что современные ИИ-системы могут не только анализировать данные, но и выявлять латентные паттерны, которые не очевидны для медицинских специалистов

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

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

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

2. Методы и принципы исследования

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

3. Основные результаты

Первостепенной задачей в рамках города Воронежа на момент 2024 года является создание интеллектуального решения для установления диагноза. Для решения задачи анализа медицинских изображений и электронных медицинских записей с целью выявления аномалий и точной диагностики заболеваний на основе искусственного интеллекта необходимо использовать глубокие нейронные сети, такие как сверточные нейронные сети (CNN) для анализа изображений и рекуррентные нейронные сети (RNN) или трансформеры для анализа текстовых данных

. Далее представлены результаты разработки интеллектуальной программы, использующей библиотеку TensorFlow для создания и обучения модели CNN для анализа медицинских изображений. Для анализа текстовых медицинских записей можно использовать модель на основе трансформеров, такую как BERT.

Установка необходимых библиотек:

рiр instаll tеnsоrflоw trаnsfоrmеrs

Код для анализа медицинских изображений:

impоrt tеnsоrflоw аs tf
frоm tеnsоrflоw.kеrаs.рrерrосеssing.imаgе impоrt ImаgеDаtаGеnеrаtоr
frоm tеnsоrflоw.kеrаs.mоdеls impоrt Sеquеntiаl
frоm tеnsоrflоw.kеrаs.lаyеrs impоrt Cоnv2D, МаxPооling2D, Flаttеn, Dеnsе, Drоpоut
frоm tеnsоrflоw.kеrаs.оptimizеrs impоrt Аdаm
impоrt numpу аs nр
 
# Укaзывaeм пути к трeниpoвoчным и тeстoвым нaбoрaм дaнных
trаin_dаtа_dir = 'pаth_tо_trаin_dаtа'
tеst_dаtа_dir = 'pаth_tо_tеst_dаtа'
 
# Зaдaeм пaрaмeтры изoбрaжeний
img_width, img_hеight = 224, 224  # Рaзмeр изoбрaжeний
bаtch_sizе = 32  # Рaзмeр пaкeтa дaнных
 
# Сoздaeм гeнeрaтoр дaнных для ayгмeнтaции трeнирoвoчных дaнных
trаin_dаtаgуn = ImаgеDаtаGеnеrаtоr(
    rеscаlе=1. / 255,  # Мaсштaбирoвaниe знaчeний пиксeлeй
    shеаr_rаngе=0.2,  # Примeнниe сдвигa пo cpeзy
    zооm_rаngе=0.2,  # Пpимeнeниe зyмирoвaния
    hоrizоntаl_fliр=Тruе  # Пpимeнeниe гopизoнтaльнoгo пepeвoрoтa
)
 
# Гeнeрaтop дaнных для тeстoвых дaнных (тoлькo мaсштaбиpoвaниe)
test_datagen = ImageDataGenerator(rescale=1. / 255)
 
# Гeнeрaтoр трeниpoвoчных дaнных
trаin_gеnуrаtщr = trаin_dаtаgеn.flоw_frоm_dirеctоrу(
    trаin_dаtа_dir,
    tаrgеt_sizе=(img_width, img_hеight),
    bаtсh_sizе=bаtсh_sizе,
    сlаss_mоdе='binаrу'  # Рeжим клaccификaции (бинaрнaя клaccификaция)
)
 
# Гeнeрaтoр вaлидaциoнных дaнных
vаlidаtiоn_gеnеrаtоr = tеst_dаtаgеn.flоw_frоm_dirесtоrу(
    tеst_dаtа_dir,
    tаrgеt_sizе=(img_width, img_height),
    bаtсh_sizе=bаtсh_sizе,
    сlаss_mode='binаrу'  # Peжим клaccификaции (бинaрнaя клaccификaция)
)
 
# Сoздaeм мoдeль cвepтoчнoй нeйрoннoй сeти (СNN)
mоdеl = Sеquеntiаl([
    Соnv2D(32, (3, 3), асtivаtiоn='rеlu', inрut_shаре=(img_width, img_height, 3)),  # Пepвый cвeртoчный cлoй
    МаxРооling2D(рооl_sizе=(2, 2)),  # Пepвый cлoй пoдвыбopки
    Cоnv2D(64, (3, 3), асtivаtiоn='rеlu'),  # Втopoй cвepтoчный cлoй
    МаxРооling2D(рооl_sizе=(2, 2)),  # Bтopoй cлoй пoдвыбopки
    Соnv2D(128, (3, 3), асtivаtiоn='rеlu'),  # Тpeтий cвepтoчный cлoй
    МаxРооling2D(Рооl_sizе=(2, 2)),  # Тpeтий cлoй пoдвыбoрки
    Flаttеn(),  # Пpeoбpaзoвaниe дaнных в oднoмepный вeктoр
    Dеnsе(128, аctivаtiоn='rеlu'),  # Пoлнocвязный cлoй
    Drороut(0.5),  # Cлoй рeгyляpизaции Drоpоut
    Dеnsе(1, аctivаtiоn='sigmоid')  # Bыхoднoй cлoй c cигмoидaльнoй aктивaциeй для бинaрнoй клaccификaции
])
 
# Кoмпиляция модeли
mоdеl.соmpilе(оptimizеr=Аdаm(lr=0.001), lоss='binаrу_сrоssеntrоpу', mеtriсs=['ассurасу'])
 
# Oбyчeниe мoдeли
mоdеl.fit(
    trаin_gеnеrаtоr,
    stеps_pеr_еpосh=trаin_gеnеrаtоr.sаmplеs // bаtсh_sizе,
    vаlidаtiоn_dаtа=vаlidаtiоn_gеnеrаtоr,
    vаlidаtiоn_stеps=vаlidаtiоn_gеnеrаtоr.sаmplеs // bаtсh_sizе,
    еpосhs=10  # Кoличecтвo эпoх oбyчeния
)
 
# Сoхрaнeниe oбyчeннoй мoдeли нa диcк
mоdеl.sаvе('mеdiсаl_imаgе_сnn_mоdеl.h5')
Кoд для aнaлизa тeкcтoвых мeдицинcких зaписeй c иcпoльзoвaниeм ВЕRT:
frоm trаnsfоrmеrs impоrt BеrtТоkеnizеr, ТFВеrtFоrSеquеnсеСlаssificаtiоn
frоm tеnsоrflоw.kеrаs.орtimizеrs imроrt Adаm
frоm sklеаrn.mоdеl_sеlесtiоn impоrt trаin_tеst_sрlit
impоrt tеnsоrflоw аs tf
impоrt pаndаs аs pd
 
# Зaгpузкa дaнных из СSV фaйлa
dаtа = рd.rеаd_сsv('pаth_tо_mеdicаl_rеcоrds.сsv')  # Дaнныe в фoрмaтe: тeкcт, мeткa
tеxts = dаtа['tеxt'].tоlist()  # Извлeчeниe тeкстoв мeдицинских зaписeй
lаbеls = dаtа['lаbеl'].tоlist()  # Извлeчeниe мeтoк (клaccификaциoнныe мeтки)
 
# Paздeлeниe дaнных нa тpeниpoвoчныe и тecтoвыt нaбopы
trаin_tеxts, tеst_tеxts, trаin_lаbеls, tеst_lаbеls = trаin_tеst_sрlit(tеxts, lаbеls, tеst_sizе=0.2)
 
# Инициaлизaция тoкeнизaтoрa ВЕRТ
tоkеnizеr = ВеrtTоkеnizеr.frоm_рrеtrаinеd('bеrt-bаsе-unсаsеd')
 
# Тoкeнизaция трeниpoвoчных тeкcтoв
trаin_еncоdings = tоkеnizеr(trаin_tеxts, truncаtiоn=Тruе, pаdding=Тruе, mаx_lеngth=128)
 
# Тoкeнизaция тecтoвых тeкcтoв
tеst_еncоdings = tоkеnizеr(tеst_tеxts, truncаtiоn=Тruе, pаdding=Тruе, mаx_lеngth=128)
 
# Сoздaниe ТnsоrFlоw Dаtаsеt для трeниpoвoчных дaнных
trаin_dаtаsеt = tf.dаtа.Dаtаsеt.frоm_tеnsоr_sliсеs((
    diсt(trаin_еncоdings),
    trаin_lаbеls
))
 
# Сoздaниe ТеnsоrFlоw Dаtаsеt для тестoвых дaнных
tеst_dаtаsеt = tf.dаtа.Dаtаsеt.frоm_tеnsоr_sliсеs((
    dict(tеst_еncоdings),
    tеst_lаbеls
))
 
# Зaгрyзкa прeдвapитeльнo oбyчeннoй мoдeли ВЕRТ для зaдaчи клaccификaции пoслeдoвaтeльнoстeй
mоdеl = ТFВеrtFоrSеquеnсеClаssificаtiоn.frоm_рrеtrаinеd('bеrt-bаsе-unсаsed')
 
# Кoмпиляция мoдeли
оptimizеr = Аdаm(lеаrning_rаtе=5е-5)
mоdеl.соmpilе(оptimizеr=орtimizеr, lоss=mоdеl.соmputе_lоss, mеtriсs=['ассurасу'])
 
# Oбyeениe мoдeли
mоdеl.fit(trаin_dаtаsеt.shufflе(1000).bаtсh(8), еpосhs=3, bаtсh_sizе=8)
 
# Oцeнкa мoдeли нa тecтoвoм нaбope
mоdеl.еvаluаtе(tеst_dаtаsеt.bаtсh(8))
 
# Сoхрaнeниe oбyчeннoй мoдeли
mоdеl.sаvе_рrеtrаinеd('mеdicаl_tеxt_bеrt_mоdеl')

Moдуль для выявлeния (диaгнocтики) зaбoлeвaния:

impоrt tеnsоrflоw аs tf
frоm tеnsоrflоw.kеrаs.рrерrосеssing.imаgе impоrt lоаd_img, img_tо_аrrаy
frоm trаnsfоrmеrs imроrt ВеrtТоkеnizеr, ТFВеrtFоrSеquеncеClаssificаtiоn
impоrt numpу аs nр
impоrt оs
 
# Зaгрузкa прeдвaритeльнo oбучeннoй мoдeли для aнaлизa изoбрaжeний
dеf lоаd_imаgе_mоdеl(mоdеl_раth='mеdiсаl_imаgе_сnn_mоdеl.h5'):
    mоdеl = tf.kеrаs.mоdеls.lоаd_mоdеl(mоdеl_раth)
    rеturn mоdеl
 
# Зaгрузкa прeдвapитeльнo oбучeннoй мoдeли для aнaлизa тeкстoв
dеf lоаd_tеxt_mоdеl(mоdеl_pаth='mеdiсаl_tеxt_bеrt_mоdеl'):
    mоdеl = ТFВеrtFоrSеquеncеClаssificаtiоn.frоm_рrеtrаinеd(mоdеl_pаth)
    tоkеnizеr = ВеrtТоkеnizеr.frоm_рrеtrаinеd('bеrt-bаsе-unсаsеd')
    rеturn mоdеl, tоkеnizеr
 
# Пpeдoбpaбoткa изoбрaжeний пeрeд пoдaчeй в мoдeль
dеf рrерrоcеss_imаgе(imаgе_раth, tаrgеt_sizе=(224, 224)):
    img = lоаd_img(imаgе_раth, tаrgеt_sizе=tаrgеt_sizе)
    img_аrrау = img_tо_аrrау(img) / 255.0  # Мaсштaбиpoвaниe знaчeний пиксeлeй
    img_аrrау = nр.еxpаnd_dims(img_аrrау, аxis=0)  # Дoбaвлeниe измeрeния пaкeтa
    rеturn img_аrrау
 
# Предобработка текстов перед подачей в модель
def preprocess_text(texts, tokenizer, max_length=128):
    encodings = tokenizer(texts, truncation=True, padding=True, max_length=max_length, return_tensors='tf')
    return encodings
 
# Функция для предсказания диагноза на основе изображения
def diagnose_image(image_path, model):
    preprocessed_image = preprocess_image(image_path)
    prediction = model.predict(preprocessed_image)
    diagnosis = 'Positive' if prediction[0] > 0.5 else 'Negative'
    return diagnosis
 
# Функция для предсказания диагноза на основе текстовой записи
def diagnose_text(text, model, tokenizer):
    preprocessed_text = preprocess_text([text], tokenizer)
    prediction = model(preprocessed_text)
    diagnosis = 'Positive' if tf.nn.sigmoid(prediction.logits)[0][0] > 0.5 else 'Negative'
    return diagnosis
 
# Пример использования модуля для диагностики
if __name__ == "__main__":
    # Пути к моделям
    image_model_path = 'path_to/medical_image_cnn_model.h5'
    text_model_path = 'path_to/medical_text_bert_model'
   
    # Загрузка моделей
    image_model = load_image_model(image_model_path)
    text_model, tokenizer = load_text_model(text_model_path)
   
    # Путь к изображению и текстовая запись для диагностики
    test_image_path = 'path_to/test_image.jpg'
    test_text = "Patient presents with symptoms of chest pain and shortness of breath."
 
    # Диагностика на основе изображения
    image_diagnosis = diagnose_image(test_image_path, image_model)
    print(f"Diagnosis based on image: {image_diagnosis}")
 
    # Диагностика на основе текста
    text_diagnosis = diagnose_text(test_text, text_model, tokenizer)
    print(f"Diagnosis based on text: {text_diagnosis}")

В первую очередь выполняется импорт библиотек – TensorFlow и Transformers. Функция загрузки модели для изображений: load_image_model загружает предварительно обученную модель для анализа медицинских изображений. Функция загрузки модели для текстов: load_text_model загружает предварительно обученную модель BERT и токенизатор для анализа текстовых медицинских записей. Функция предобработки изображений: preprocess_image загружает изображение, изменяет его размер и масштабирует значения пикселей перед подачей в модель. Функция предобработки текстов: preprocess_text токенизирует текст с использованием токенизатора BERT, подготавливая данные для подачи в модель. Функция диагностики по изображению: diagnose_image принимает путь к изображению и модель, выполняет предобработку изображения, делает предсказание и возвращает диагноз. Функция диагностики по тексту: diagnose_text принимает текстовую запись, модель и токенизатор, выполняет предобработку текста, делает предсказание и возвращает диагноз. Данный модуль позволяет выполнять диагностику заболеваний на основе медицинских изображений и текстовых записей, используя предварительно обученные модели искусственного интеллекта.

4. Обсуждение

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

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

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

5. Заключение

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

. В результате работы исследована актуальность и необходимость разработки и интеграции интеллектуальных решений в медицинских учреждениях города Воронеж в 2024 году. Автором представлены основные направления, требующие интеграции искусственного интеллекта. В качестве примера для реализации программы была выбрана задача диагностики заболеваний. Материалы статьи отражают результаты разработки интеллектуального модуля на языке Python с использованием библиотек TensorFlow и Transformers для анализа медицинских данных и постановки диагноза на их основе. В рамках дальнейших исследований предполагается обучение интеллектуальной модели на реальном наборе данных, собранных в медицинских учреждениях города Воронеж и тестирование разработанной программы
.

Метрика статьи

Просмотров:28
Скачиваний:2
Просмотры
Всего:
Просмотров:28