تشخیص بیماری کووید 19 با استفاده از راهکارهای هوش مصنوعی
تشخیص بیماری کووید 19
در شرایط فعلی، روشهای تشخیصی سریع و دقیق برای مقابله با این بیماری ضروری هستند. «شوآی وانگ» و همکارانش در مقاله اخیر خود با عنوان «یک الگوریتم یادگیری عمیق با استفاده از عکسهای سیتیاسکن برای تشخیص ویروس کرونا» از روش یادگیری عمیق برای استخراج ویژگیهای گرافیکیِ بیماری کووید-19 از عکسهای سیتیاسکن استفاده کردهاند تا عمل تشخیص بالینی را انجام دهند. هدف از این کار، صرفهجویی در زمان برای کنترل بیماری عنوان شده است. آنان در مقالۀ خود از روش یادگیری انتقال Transfer Learning با شبکه عصبی پیچشی (CNN) در 1119 عکس سیتیاسکن استفاده کردند. دقت اعتبارسنجی درونی و بیرونیِ مدل به ترتیب 89.5 درصد و 79.3 درصد بود.
ما در آزمایش خود از روش تحلیل مشابهی استفاده کردیم، اما تحلیل ما با استفاده از رادیوگرافی قفسه سینه افراد انجام شده است. دلیل اصلی آن هم این است که تهیه رادیوگرافی قفسه سینه راحتتر از عکس سیتیاسکن است. این مسئله در مناطق محروم و روستایی بیشتر مشهود است. از آنجاییکه در رادیوگرافی، امواج اشعه ایکس از پشت تابیده میشود به این روش پرتو ایکس هم گفته میشود. حالا بگذارید توضیح دهیم که از چه مجموعهدادهای در این آزمایش استفاده شد. دکتر «جوزف پائول کوهن» دانشجوی فوقدکتری در دانشگاه مونترال اخیرا از یک پایگاه دادهای رونمایی کرد که حاوی رادیوگرافی قفسه سینه بیمارانِ مبتلا به کووید-19 بود. این مجموعهداده در قالب یک مجموعهداده منبع باز مورد استفاده قرار میگیرد که در آن عکسهای کووید-19 به همراه عکسهای ریه افراد مبتلا به بیماریهای مختلف نظیر سارس و استرپتوکوکوس، از منابع منبعباز مختلف جمع آوری شده اند.
بنابراین، این دیتاست دربردارندۀ عکسهای اسکن پرتو ایکس بیماری کووید-19 و همچنین زاویه تهیه عکس است. گویا این دیدگاه رایج ترین دیدگاه است و ما از اسکن پرتو ایکس COVID-19 PA در فرایند تحلیل استفاده کردیم. ما از مجموعهداده رقابت پرتو ایکس «Kaggle» برای استخراج پرتو ایکس افراد سالم و بیماران مبتلا به ذاتالریه استفاده کردیم. ما همچنین برای هر کلاس 100 عکس نمونهبرداری کردیم تا تعادل با عکسهای موجود از کووید-19 برقرار شود. اگرچه کارهای تحقیقاتی در این بخش ادامه دارد و ما همچنان پیگیر روشی برای تشخیص بیماری کووید 19 با هوش مصنوعی هستیم.
استفاده از روش شبکه عصبی پیچشی برای تشخیص بیماری کووید-19 به کمک رادیوگرافی قفسه سینه
1) طبقه بندی نمونههای نرمال از نمونههای COVID-19. (مسئله 2 کلاسه)
2) طبقه بندی نمونههای ذات الریه از نمونههای COVID-19. (مسئله 2 کلاسه)
3) طبقه بندی نمونههای نرمال از نمونههای ذاتالریه و COVID-19. (مسئله 3 کلاسه)
نکته اصلی در تحلیل ما این است که مثبت کاذب و منفی کاذب را کاهش دهیم. حالا نوبت به بررسی روش تحلیل ما رسیده است. ما از یادگیری انتقال با منبای مدل VGG-16 استفاده کردیم که در آن چند لایه آخر به صورت زیر تنظیم شده است.
,"vgg_pretrained_model = VGG16(weights="imagenet ,include_top= False input_tensor=Input(shape=(224, 224,3)))new_model = vgg_pretrained_model.output (new_model = AveragePooling2D(pool_size=(4, 4))(new_model (new_model = Flatten(name="flatten")(new_model (new_model = Dense(64, activation="relu")(new_model (new_model = Dropout(0.4)(new_model (new_model = Dense(2, activation="softmax")(new_model (model = Model(inputs=vgg_pretrained_model.input, outputs=new_mode
تعداد نهاییِ پارامترهای مدل ما در زیر نشان داده شده است. این مدل با استفاده از Kaggle GPU آموزش داده شد.
کل پارامترها: 14.747.650
پارامترهای قابل آموزش: 2.392.770
پارامترهای غیرقابل آموزش: 12.354.880
مورد 1: نتایج طبقهبندی افراد عادی و مبتلایان به بیماری کووید-19
همانطور که در شکل فوق ملاحظه میکنید، مدل ما میتواند تقریباً با 100 درصد دقت افراد سالم را از مبتلایان به کووید-19 تفکیک نماید. ما از مفاهیم نگاشتهای فعالسازیِ کلاس گرادیانمحور GRADient-based Class Activation Maps GRAD-CAM استفاده کردیم تا مهمترین بخشهای عکس را شناسایی کرده و بینش خوبی در اختیار خوانندگان مقاله قرار دهیم. این عامل در افزایش دقت مدل در هنگام طبقهبندی نیز موثر بود.
کدهای ترسیم نقشه گرمایی Grad-CAM در زیر ارائه شده است. ما یک سری اصلاحات انجام دادیم تا خوانندگان به شکل بهتری به کدها دسترسی داشته باشند.
def get_class_activation_map(ind,path,files) : img_path = path + files[ind] img = cv2.imread(img_path) img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) img = cv2.resize(img, (224, 224)) img = np.expand_dims(img,axis=0) predict = model.predict(img) target_class = np.argmax(predict[0]) last_conv = model.get_layer('block5_conv3') grads =K.gradients(model.output[:,target_class],last_conv.output)[0] pooled_grads = K.mean(grads,axis=(0,1,2)) iterate = K.function([model.input],[pooled_grads,last_conv.output[0]]) pooled_grads_value,conv_layer_output = iterate([img]) for i in range(512): conv_layer_output[:,:,i] *= pooled_grads_value[i] heatmap = np.mean(conv_layer_output,axis=-1) for x in range(heatmap.shape[0]): for y in range(heatmap.shape[1]): heatmap[x,y] = np.max(heatmap[x,y],0) heatmap = np.maximum(heatmap,0) heatmap /= np.max(heatmap) plt.imshow(heatmap)img_gray = cv2.cvtColor(img[0], cv2.COLOR_BGR2GRAY) upsample = cv2.resize(heatmap, (224,224)) output_path_gradcam = '/kaggle/working/' + files[ind] + 'gradcam.jpeg' plt.imsave(output_path_gradcam,upsample * img_gray)
خروجی نگاشت فعال سازی کلاس برای نمونههای نرمال
پس ملاحظه میکنید که مدل بیشتر بر روی آن بخش هایلایتشده تمرکز میکند تا آنها را به عنوان بیمارهای نرمال طبقهبندی کند.
خروجی نگاشت فعال سازی کلاس برای نمونههای COVID-19
بهطور مشابه، بخش هایلایتشده در انتهای سمت راست عکس نشان دهنده آن بخش از اجزای مهم عکس است و مشخص میکند که آیا بیماران به کووید-19 مبتلا هستند یا خیر. بررسیهای بالینی این مورد را تصدیق کرده است.
مورد 2: نتایج طبقهبندی مبتلایان به ذات الریه و مبتلایان به بیماری کووید-19
خروجی نگاشت فعال سازی کلاس برای نمونههای ذات الریه
مورد 3: نتایج طبقهبندی نمونههای عادی، مبتلایان به ذات الریه و مبتلایان به بیماری کووید-19
این مدل حتی با برخورداری از چنین مجموعهداده کوچکی عملکرد بسیار خوبی از خود برجای گذاشت. افزون براین، هدف از ساخت سه مدل مختلف این بود که قابلیت مدلها در تشخیص مبتلایان به بیماری کووید-19 مورد ارزیابی قرار بگیرد. در هر سه مدل، دو معیار دقت و یادآوری Recall برای نمونههای آزمایش COVID-19 بسیار خوب بدست آمده است.
این آزمایش تنها بر روی چند عکس انجام شده و مورد تایید سازمانهای بهداشتی یا پزشکان قرار نگرفته است. هیچ مطالعه بالینی بر اساس این روش انجام نشده است. بنابراین، امکان نتیجهگیری بر اساس مدل حاضر وجود ندارد. اما محققان ابراز امیدواری کردهاند که این مدل قابلیت تبدیل شدن به یک ابزار مفید را دارد. برخی دیگر نیز مدعی شدهاند که میتوان از آن به عنوان یک روش تشخیص سریع و کارآمد بهره جست.
نتیجهگیری
این تحلیل روی مجموعه داده محدودی به انجام رسیده و نتایجِ بدستآمده مقدماتی هستند. بنابراین، امکان تعمیم نتایج وجود ندارد. روشهای تحلیلیِ استفاده شده در این تحقیق مورد تایید پزشکی و آزمایشهای بالینی قرار نگرفته است. ما در نظر داریم تا با بکارگیری اسکنهای پرتو ایکسِ بیشتر این مدل را تقویت کرده و امکان تعمیمِ آن را در سایر بخشها فراهم کنیم و تشخیص بیماری کووید 19 با هوش مصنوعی را امکانپذیر کنیم. افزون براین، شمار مبتلایان به بیماری کووید-19 علیرغم افزایش تصاعدی که اخیراً شاهدش بودیم، کمتر از شمار افراد سالم است. بنابراین، نوعی عدم توازن دسته در اینجا وجود خواهد داشت. باید به ارتقای شیوههای نمونهگیری پرداخته و مدلی بسازیم که بتواند این عدم توازن را برطرف نماید. تحقق این هدف مستلزم دادههای بیشتری است.
راهحل پیش رو مبتنی بر تنظیم دقیق وزنهای ImageNet ارائه شده است، اما ما میتوانیم برای کاربرد مورد بحث، یک شبکه عصبی عمیق را بر اساس دادههای موجود از ابتدا آموزش دهیم. نتایج حاصل از این شبکه میتواند بسیار امیدوارکننده باشد.
MIT به تازگی از ارائه یک پایگاهدادهای خبر داده که دربردارندهی عکسهای پرتو ایکس بیمارانِ مبتلا به کووید-19 است. ما قصد داریم از این دادهها در روش مدلسازی خودمان استفاده کرده و سپس نتایج را بررسی کنیم.