Optimizing machine learning performance for medical imaging analyses in low-resource environments: The prospects of CNN-based Feature Extractors

preprint OA: closed
Full text JSON View at publisher
Full text 114,171 characters · extracted from preprint-html · click to expand
Optimizing machine learning performance for medical... | F1000Research "use strict";function _typeof(t){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}!function(){var t=function(){var t,e,o=[],n=window,r=n;for(;r;){try{if(r.frames.__tcfapiLocator){t=r;break}}catch(t){}if(r===n.top)break;r=r.parent}t||(!function t(){var e=n.document,o=!!n.frames.__tcfapiLocator;if(!o)if(e.body){var r=e.createElement("iframe");r.style.cssText="display:none",r.name="__tcfapiLocator",e.body.appendChild(r)}else setTimeout(t,5);return!o}(),n.__tcfapi=function(){for(var t=arguments.length,n=new Array(t),r=0;r 3&&2===parseInt(n[1],10)&&"boolean"==typeof n[3]&&(e=n[3],"function"==typeof n[2]&&n[2]("set",!0)):"ping"===n[0]?"function"==typeof n[2]&&n[2]({gdprApplies:e,cmpLoaded:!1,cmpStatus:"stub"}):o.push(n)},n.addEventListener("message",(function(t){var e="string"==typeof t.data,o={};if(e)try{o=JSON.parse(t.data)}catch(t){}else o=t.data;var n="object"===_typeof(o)&&null!==o?o.__tcfapiCall:null;n&&window.__tcfapi(n.command,n.version,(function(o,r){var a={__tcfapiReturn:{returnValue:o,success:r,callId:n.callId}};t&&t.source&&t.source.postMessage&&t.source.postMessage(e?JSON.stringify(a):a,"*")}),n.parameter)}),!1))};"undefined"!=typeof module?module.exports=t:t()}(); dataLayer = dataLayer || []; // Standard GTM initialization - Google Consent Mode handles consent automatically (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl+ '>m_auth=hzk0Vc3qFsQYhCrIoHz68A>m_preview=env-1>m_cookies_win=x';f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-MWFK8L5J'); ;window.NREUM||(NREUM={});NREUM.init={distributed_tracing:{enabled:true},privacy:{cookies_enabled:true},ajax:{deny_list:["bam.nr-data.net"]}}; ;NREUM.loader_config={accountID:"438030",trustKey:"438030",agentID:"772317073",licenseKey:"97f8f67f26",applicationID:"772317073"} ;NREUM.info={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net",licenseKey:"97f8f67f26",applicationID:"772317073",sa:1} ;/*! For license information please see nr-loader-spa-1.236.0.min.js.LICENSE.txt */ (()=>{"use strict";var e,t,r={5763:(e,t,r)=>{r.d(t,{P_:()=>l,Mt:()=>g,C5:()=>s,DL:()=>v,OP:()=>T,lF:()=>D,Yu:()=>y,Dg:()=>h,CX:()=>c,GE:()=>b,sU:()=>_});var n=r(8632),i=r(9567);const o={beacon:n.ce.beacon,errorBeacon:n.ce.errorBeacon,licenseKey:void 0,applicationID:void 0,sa:void 0,queueTime:void 0,applicationTime:void 0,ttGuid:void 0,user:void 0,account:void 0,product:void 0,extra:void 0,jsAttributes:{},userAttributes:void 0,atts:void 0,transactionName:void 0,tNamePlain:void 0},a={};function s(e){if(!e)throw new Error("All info objects require an agent identifier!");if(!a[e])throw new Error("Info for ".concat(e," was never set"));return a[e]}function c(e,t){if(!e)throw new Error("All info objects require an agent identifier!");a[e]=(0,i.D)(t,o),(0,n.Qy)(e,a[e],"info")}var u=r(7056);const d=()=>{const e={blockSelector:"[data-nr-block]",maskInputOptions:{password:!0}};return{allow_bfcache:!0,privacy:{cookies_enabled:!0},ajax:{deny_list:void 0,enabled:!0,harvestTimeSeconds:10},distributed_tracing:{enabled:void 0,exclude_newrelic_header:void 0,cors_use_newrelic_header:void 0,cors_use_tracecontext_headers:void 0,allowed_origins:void 0},session:{domain:void 0,expiresMs:u.oD,inactiveMs:u.Hb},ssl:void 0,obfuscate:void 0,jserrors:{enabled:!0,harvestTimeSeconds:10},metrics:{enabled:!0},page_action:{enabled:!0,harvestTimeSeconds:30},page_view_event:{enabled:!0},page_view_timing:{enabled:!0,harvestTimeSeconds:30,long_task:!1},session_trace:{enabled:!0,harvestTimeSeconds:10},harvest:{tooManyRequestsDelay:60},session_replay:{enabled:!1,harvestTimeSeconds:60,sampleRate:.1,errorSampleRate:.1,maskTextSelector:"*",maskAllInputs:!0,get blockClass(){return"nr-block"},get ignoreClass(){return"nr-ignore"},get maskTextClass(){return"nr-mask"},get blockSelector(){return e.blockSelector},set blockSelector(t){e.blockSelector+=",".concat(t)},get maskInputOptions(){return e.maskInputOptions},set maskInputOptions(t){e.maskInputOptions={...t,password:!0}}},spa:{enabled:!0,harvestTimeSeconds:10}}},f={};function l(e){if(!e)throw new Error("All configuration objects require an agent identifier!");if(!f[e])throw new Error("Configuration for ".concat(e," was never set"));return f[e]}function h(e,t){if(!e)throw new Error("All configuration objects require an agent identifier!");f[e]=(0,i.D)(t,d()),(0,n.Qy)(e,f[e],"config")}function g(e,t){if(!e)throw new Error("All configuration objects require an agent identifier!");var r=l(e);if(r){for(var n=t.split("."),i=0;i {r.d(t,{D:()=>i});var n=r(50);function i(e,t){try{if(!e||"object"!=typeof e)return(0,n.Z)("Setting a Configurable requires an object as input");if(!t||"object"!=typeof t)return(0,n.Z)("Setting a Configurable requires a model to set its initial properties");const r=Object.create(Object.getPrototypeOf(t),Object.getOwnPropertyDescriptors(t)),o=0===Object.keys(r).length?e:r;for(let a in o)if(void 0!==e[a])try{"object"==typeof e[a]&&"object"==typeof t[a]?r[a]=i(e[a],t[a]):r[a]=e[a]}catch(e){(0,n.Z)("An error occurred while setting a property of a Configurable",e)}return r}catch(e){(0,n.Z)("An error occured while setting a Configurable",e)}}},6818:(e,t,r)=>{r.d(t,{Re:()=>i,gF:()=>o,q4:()=>n});const n="1.236.0",i="PROD",o="CDN"},385:(e,t,r)=>{r.d(t,{FN:()=>a,IF:()=>u,Nk:()=>f,Tt:()=>s,_A:()=>o,il:()=>n,pL:()=>c,v6:()=>i,w1:()=>d});const n="undefined"!=typeof window&&!!window.document,i="undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self.navigator instanceof WorkerNavigator||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis.navigator instanceof WorkerNavigator),o=n?window:"undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis),a=""+o?.location,s=/iPad|iPhone|iPod/.test(navigator.userAgent),c=s&&"undefined"==typeof SharedWorker,u=(()=>{const e=navigator.userAgent.match(/Firefox[/\s](\d+\.\d+)/);return Array.isArray(e)&&e.length>=2?+e[1]:0})(),d=Boolean(n&&window.document.documentMode),f=!!navigator.sendBeacon},1117:(e,t,r)=>{r.d(t,{w:()=>o});var n=r(50);const i={agentIdentifier:"",ee:void 0};class o{constructor(e){try{if("object"!=typeof e)return(0,n.Z)("shared context requires an object as input");this.sharedContext={},Object.assign(this.sharedContext,i),Object.entries(e).forEach((e=>{let[t,r]=e;Object.keys(i).includes(t)&&(this.sharedContext[t]=r)}))}catch(e){(0,n.Z)("An error occured while setting SharedContext",e)}}}},8e3:(e,t,r)=>{r.d(t,{L:()=>d,R:()=>c});var n=r(2177),i=r(1284),o=r(4322),a=r(3325);const s={};function c(e,t){const r={staged:!1,priority:a.p[t]||0};u(e),s[e].get(t)||s[e].set(t,r)}function u(e){e&&(s[e]||(s[e]=new Map))}function d(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"feature";if(u(e),!e||!s[e].get(t))return a(t);s[e].get(t).staged=!0;const r=[...s[e]];function a(t){const r=e?n.ee.get(e):n.ee,a=o.X.handlers;if(r.backlog&&a){var s=r.backlog[t],c=a[t];if(c){for(var u=0;s&&u {let[t,r]=e;return r.staged}))&&(r.sort(((e,t)=>e[1].priority-t[1].priority)),r.forEach((e=>{let[t]=e;a(t)})))}function f(e,t){var r=e[1];(0,i.D)(t[r],(function(t,r){var n=e[0];if(r[0]===n){var i=r[1],o=e[3],a=e[2];i.apply(o,a)}}))}},2177:(e,t,r)=>{r.d(t,{c:()=>f,ee:()=>u});var n=r(8632),i=r(2210),o=r(1284),a=r(5763),s="nr@context";let c=(0,n.fP)();var u;function d(){}function f(e){return(0,i.X)(e,s,l)}function l(){return new d}function h(){u.aborted=!0,u.backlog={}}c.ee?u=c.ee:(u=function e(t,r){var n={},c={},f={},g=!1;try{g=16===r.length&&(0,a.OP)(r).isolatedBacklog}catch(e){}var p={on:b,addEventListener:b,removeEventListener:y,emit:v,get:x,listeners:w,context:m,buffer:A,abort:h,aborted:!1,isBuffering:E,debugId:r,backlog:g?{}:t&&"object"==typeof t.backlog?t.backlog:{}};return p;function m(e){return e&&e instanceof d?e:e?(0,i.X)(e,s,l):l()}function v(e,r,n,i,o){if(!1!==o&&(o=!0),!u.aborted||i){t&&o&&t.emit(e,r,n);for(var a=m(n),s=w(e),d=s.length,f=0;fn,p:()=>i});var n=r(2177).ee.get("handle");function i(e,t,r,i,o){o?(o.buffer([e],i),o.emit(e,t,r)):(n.buffer([e],i),n.emit(e,t,r))}},4322:(e,t,r)=>{r.d(t,{X:()=>o});var n=r(5546);o.on=a;var i=o.handlers={};function o(e,t,r,o){a(o||n.E,i,e,t,r)}function a(e,t,r,i,o){o||(o="feature"),e||(e=n.E);var a=t[o]=t[o]||{};(a[r]=a[r]||[]).push([e,i])}},3239:(e,t,r)=>{r.d(t,{bP:()=>s,iz:()=>c,m$:()=>a});var n=r(385);let i=!1,o=!1;try{const e={get passive(){return i=!0,!1},get signal(){return o=!0,!1}};n._A.addEventListener("test",null,e),n._A.removeEventListener("test",null,e)}catch(e){}function a(e,t){return i||o?{capture:!!e,passive:i,signal:t}:!!e}function s(e,t){let r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=arguments.length>3?arguments[3]:void 0;window.addEventListener(e,t,a(r,n))}function c(e,t){let r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=arguments.length>3?arguments[3]:void 0;document.addEventListener(e,t,a(r,n))}},4402:(e,t,r)=>{r.d(t,{Ht:()=>u,M:()=>c,Rl:()=>a,ky:()=>s});var n=r(385);const i="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx";function o(e,t){return e?15&e[t]:16*Math.random()|0}function a(){const e=n._A?.crypto||n._A?.msCrypto;let t,r=0;return e&&e.getRandomValues&&(t=e.getRandomValues(new Uint8Array(31))),i.split("").map((e=>"x"===e?o(t,++r).toString(16):"y"===e?(3&o()|8).toString(16):e)).join("")}function s(e){const t=n._A?.crypto||n._A?.msCrypto;let r,i=0;t&&t.getRandomValues&&(r=t.getRandomValues(new Uint8Array(31)));const a=[];for(var s=0;s {r.d(t,{Bq:()=>n,Hb:()=>o,oD:()=>i});const n="NRBA",i=144e5,o=18e5},7894:(e,t,r)=>{function n(){return Math.round(performance.now())}r.d(t,{z:()=>n})},7243:(e,t,r)=>{r.d(t,{e:()=>o});var n=r(385),i={};function o(e){if(e in i)return i[e];if(0===(e||"").indexOf("data:"))return{protocol:"data"};let t;var r=n._A?.location,o={};if(n.il)t=document.createElement("a"),t.href=e;else try{t=new URL(e,r.href)}catch(e){return o}o.port=t.port;var a=t.href.split("://");!o.port&&a[1]&&(o.port=a[1].split("/")[0].split("@").pop().split(":")[1]),o.port&&"0"!==o.port||(o.port="https"===a[0]?"443":"80"),o.hostname=t.hostname||r.hostname,o.pathname=t.pathname,o.protocol=a[0],"/"!==o.pathname.charAt(0)&&(o.pathname="/"+o.pathname);var s=!t.protocol||":"===t.protocol||t.protocol===r.protocol,c=t.hostname===r.hostname&&t.port===r.port;return o.sameOrigin=s&&(!t.hostname||c),"/"===o.pathname&&(i[e]=o),o}},50:(e,t,r)=>{function n(e,t){"function"==typeof console.warn&&(console.warn("New Relic: ".concat(e)),t&&console.warn(t))}r.d(t,{Z:()=>n})},2587:(e,t,r)=>{r.d(t,{N:()=>c,T:()=>u});var n=r(2177),i=r(5546),o=r(8e3),a=r(3325);const s={stn:[a.D.sessionTrace],err:[a.D.jserrors,a.D.metrics],ins:[a.D.pageAction],spa:[a.D.spa],sr:[a.D.sessionReplay,a.D.sessionTrace]};function c(e,t){const r=n.ee.get(t);e&&"object"==typeof e&&(Object.entries(e).forEach((e=>{let[t,n]=e;void 0===u[t]&&(s[t]?s[t].forEach((e=>{n?(0,i.p)("feat-"+t,[],void 0,e,r):(0,i.p)("block-"+t,[],void 0,e,r),(0,i.p)("rumresp-"+t,[Boolean(n)],void 0,e,r)})):n&&(0,i.p)("feat-"+t,[],void 0,void 0,r),u[t]=Boolean(n))})),Object.keys(s).forEach((e=>{void 0===u[e]&&(s[e]?.forEach((t=>(0,i.p)("rumresp-"+e,[!1],void 0,t,r))),u[e]=!1)})),(0,o.L)(t,a.D.pageViewEvent))}const u={}},2210:(e,t,r)=>{r.d(t,{X:()=>i});var n=Object.prototype.hasOwnProperty;function i(e,t,r){if(n.call(e,t))return e[t];var i=r();if(Object.defineProperty&&Object.keys)try{return Object.defineProperty(e,t,{value:i,writable:!0,enumerable:!1}),i}catch(e){}return e[t]=i,i}},1284:(e,t,r)=>{r.d(t,{D:()=>n});const n=(e,t)=>Object.entries(e||{}).map((e=>{let[r,n]=e;return t(r,n)}))},4351:(e,t,r)=>{r.d(t,{P:()=>o});var n=r(2177);const i=()=>{const e=new WeakSet;return(t,r)=>{if("object"==typeof r&&null!==r){if(e.has(r))return;e.add(r)}return r}};function o(e){try{return JSON.stringify(e,i())}catch(e){try{n.ee.emit("internal-error",[e])}catch(e){}}}},3960:(e,t,r)=>{r.d(t,{K:()=>a,b:()=>o});var n=r(3239);function i(){return"undefined"==typeof document||"complete"===document.readyState}function o(e,t){if(i())return e();(0,n.bP)("load",e,t)}function a(e){if(i())return e();(0,n.iz)("DOMContentLoaded",e)}},8632:(e,t,r)=>{r.d(t,{EZ:()=>u,Qy:()=>c,ce:()=>o,fP:()=>a,gG:()=>d,mF:()=>s});var n=r(7894),i=r(385);const o={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net"};function a(){return i._A.NREUM||(i._A.NREUM={}),void 0===i._A.newrelic&&(i._A.newrelic=i._A.NREUM),i._A.NREUM}function s(){let e=a();return e.o||(e.o={ST:i._A.setTimeout,SI:i._A.setImmediate,CT:i._A.clearTimeout,XHR:i._A.XMLHttpRequest,REQ:i._A.Request,EV:i._A.Event,PR:i._A.Promise,MO:i._A.MutationObserver,FETCH:i._A.fetch}),e}function c(e,t,r){let i=a();const o=i.initializedAgents||{},s=o[e]||{};return Object.keys(s).length||(s.initializedAt={ms:(0,n.z)(),date:new Date}),i.initializedAgents={...o,[e]:{...s,[r]:t}},i}function u(e,t){a()[e]=t}function d(){return function(){let e=a();const t=e.info||{};e.info={beacon:o.beacon,errorBeacon:o.errorBeacon,...t}}(),function(){let e=a();const t=e.init||{};e.init={...t}}(),s(),function(){let e=a();const t=e.loader_config||{};e.loader_config={...t}}(),a()}},7956:(e,t,r)=>{r.d(t,{N:()=>i});var n=r(3239);function i(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=arguments.length>2?arguments[2]:void 0,i=arguments.length>3?arguments[3]:void 0;return void(0,n.iz)("visibilitychange",(function(){if(t)return void("hidden"==document.visibilityState&&e());e(document.visibilityState)}),r,i)}},1214:(e,t,r)=>{r.d(t,{em:()=>v,u5:()=>N,QU:()=>S,_L:()=>I,Gm:()=>L,Lg:()=>M,gy:()=>U,BV:()=>Q,Kf:()=>ee});var n=r(2177);const i="nr@original";var o=Object.prototype.hasOwnProperty,a=!1;function s(e,t){return e||(e=n.ee),r.inPlace=function(e,t,n,i,o){n||(n="");var a,s,c,u="-"===n.charAt(0);for(c=0;c 2?n-2:0),o=2;o {r(A[T],e,w),r(E[T],e,w)})),r(l._A,"fetch",y),t.on(y+"end",(function(e,r){var n=this;if(r){var i=r.headers.get("content-length");null!==i&&(n.rxSize=i),t.emit(y+"done",[null,r],n)}else t.emit(y+"done",[e],n)})),t}const O={},j=["pushState","replaceState"];function S(e){const t=function(e){return(e||n.ee).get("history")}(e);return!l.il||O[t.debugId]++||(O[t.debugId]=1,s(t).inPlace(window.history,j,"-")),t}var P=r(3239);const C={},R=["appendChild","insertBefore","replaceChild"];function I(e){const t=function(e){return(e||n.ee).get("jsonp")}(e);if(!l.il||C[t.debugId])return t;C[t.debugId]=!0;var r=s(t),i=/[?&](?:callback|cb)=([^&#]+)/,o=/(.*)\.([^.]+)/,a=/^(\w+)(\.|$)(.*)$/;function c(e,t){var r=e.match(a),n=r[1],i=r[3];return i?c(i,t[n]):t[n]}return r.inPlace(Node.prototype,R,"dom-"),t.on("dom-start",(function(e){!function(e){if(!e||"string"!=typeof e.nodeName||"script"!==e.nodeName.toLowerCase())return;if("function"!=typeof e.addEventListener)return;var n=(a=e.src,s=a.match(i),s?s[1]:null);var a,s;if(!n)return;var u=function(e){var t=e.match(o);if(t&&t.length>=3)return{key:t[2],parent:c(t[1],window)};return{key:e,parent:window}}(n);if("function"!=typeof u.parent[u.key])return;var d={};function f(){t.emit("jsonp-end",[],d),e.removeEventListener("load",f,(0,P.m$)(!1)),e.removeEventListener("error",l,(0,P.m$)(!1))}function l(){t.emit("jsonp-error",[],d),t.emit("jsonp-end",[],d),e.removeEventListener("load",f,(0,P.m$)(!1)),e.removeEventListener("error",l,(0,P.m$)(!1))}r.inPlace(u.parent,[u.key],"cb-",d),e.addEventListener("load",f,(0,P.m$)(!1)),e.addEventListener("error",l,(0,P.m$)(!1)),t.emit("new-jsonp",[e.src],d)}(e[0])})),t}var k=r(5763);const H={};function L(e){const t=function(e){return(e||n.ee).get("mutation")}(e);if(!l.il||H[t.debugId])return t;H[t.debugId]=!0;var r=s(t),i=k.Yu.MO;return i&&(window.MutationObserver=function(e){return this instanceof i?new i(r(e,"fn-")):i.apply(this,arguments)},MutationObserver.prototype=i.prototype),t}const z={};function M(e){const t=function(e){return(e||n.ee).get("promise")}(e);if(z[t.debugId])return t;z[t.debugId]=!0;var r=n.c,o=s(t),a=k.Yu.PR;return a&&function(){function e(r){var n=t.context(),i=o(r,"executor-",n,null,!1);const s=Reflect.construct(a,[i],e);return t.context(s).getCtx=function(){return n},s}l._A.Promise=e,Object.defineProperty(e,"name",{value:"Promise"}),e.toString=function(){return a.toString()},Object.setPrototypeOf(e,a),["all","race"].forEach((function(r){const n=a[r];e[r]=function(e){let i=!1;[...e||[]].forEach((e=>{this.resolve(e).then(a("all"===r),a(!1))}));const o=n.apply(this,arguments);return o;function a(e){return function(){t.emit("propagate",[null,!i],o,!1,!1),i=i||!e}}}})),["resolve","reject"].forEach((function(r){const n=a[r];e[r]=function(e){const r=n.apply(this,arguments);return e!==r&&t.emit("propagate",[e,!0],r,!1,!1),r}})),e.prototype=a.prototype;const n=a.prototype.then;a.prototype.then=function(){var e=this,i=r(e);i.promise=e;for(var a=arguments.length,s=new Array(a),c=0;c e())),t};function m(e,t){i.inPlace(t,["onreadystatechange"],"fn-",E)}function b(){var e=this,t=r.context(e);e.readyState>3&&!t.resolved&&(t.resolved=!0,r.emit("xhr-resolved",[],e)),i.inPlace(e,f,"fn-",E)}if(function(e,t){for(var r in e)t[r]=e[r]}(o,p),p.prototype=o.prototype,i.inPlace(p.prototype,J,"-xhr-",E),r.on("send-xhr-start",(function(e,t){m(e,t),function(e){h.push(e),a&&(y?y.then(A):u?u(A):(w=-w,x.data=w))}(t)})),r.on("open-xhr-start",m),a){var y=c&&c.resolve();if(!u&&!c){var w=1,x=document.createTextNode(w);new a(A).observe(x,{characterData:!0})}}else t.on("fn-end",(function(e){e[0]&&e[0].type===d||A()}));function A(){for(var e=0;e {r.d(t,{t:()=>n});const n=r(3325).D.ajax},6660:(e,t,r)=>{r.d(t,{A:()=>i,t:()=>n});const n=r(3325).D.jserrors,i="nr@seenError"},3081:(e,t,r)=>{r.d(t,{gF:()=>o,mY:()=>i,t9:()=>n,vz:()=>s,xS:()=>a});const n=r(3325).D.metrics,i="sm",o="cm",a="storeSupportabilityMetrics",s="storeEventMetrics"},4649:(e,t,r)=>{r.d(t,{t:()=>n});const n=r(3325).D.pageAction},7633:(e,t,r)=>{r.d(t,{Dz:()=>i,OJ:()=>a,qw:()=>o,t9:()=>n});const n=r(3325).D.pageViewEvent,i="firstbyte",o="domcontent",a="windowload"},9251:(e,t,r)=>{r.d(t,{t:()=>n});const n=r(3325).D.pageViewTiming},3614:(e,t,r)=>{r.d(t,{BST_RESOURCE:()=>i,END:()=>s,FEATURE_NAME:()=>n,FN_END:()=>u,FN_START:()=>c,PUSH_STATE:()=>d,RESOURCE:()=>o,START:()=>a});const n=r(3325).D.sessionTrace,i="bstResource",o="resource",a="-start",s="-end",c="fn"+a,u="fn"+s,d="pushState"},7836:(e,t,r)=>{r.d(t,{BODY:()=>A,CB_END:()=>E,CB_START:()=>u,END:()=>x,FEATURE_NAME:()=>i,FETCH:()=>_,FETCH_BODY:()=>v,FETCH_DONE:()=>m,FETCH_START:()=>p,FN_END:()=>c,FN_START:()=>s,INTERACTION:()=>l,INTERACTION_API:()=>d,INTERACTION_EVENTS:()=>o,JSONP_END:()=>b,JSONP_NODE:()=>g,JS_TIME:()=>T,MAX_TIMER_BUDGET:()=>a,REMAINING:()=>f,SPA_NODE:()=>h,START:()=>w,originalSetTimeout:()=>y});var n=r(5763);const i=r(3325).D.spa,o=["click","submit","keypress","keydown","keyup","change"],a=999,s="fn-start",c="fn-end",u="cb-start",d="api-ixn-",f="remaining",l="interaction",h="spaNode",g="jsonpNode",p="fetch-start",m="fetch-done",v="fetch-body-",b="jsonp-end",y=n.Yu.ST,w="-start",x="-end",A="-body",E="cb"+x,T="jsTime",_="fetch"},5938:(e,t,r)=>{r.d(t,{W:()=>o});var n=r(5763),i=r(2177);class o{constructor(e,t,r){this.agentIdentifier=e,this.aggregator=t,this.ee=i.ee.get(e,(0,n.OP)(this.agentIdentifier).isolatedBacklog),this.featureName=r,this.blocked=!1}}},9144:(e,t,r)=>{r.d(t,{j:()=>m});var n=r(3325),i=r(5763),o=r(5546),a=r(2177),s=r(7894),c=r(8e3),u=r(3960),d=r(385),f=r(50),l=r(3081),h=r(8632);function g(){const e=(0,h.gG)();["setErrorHandler","finished","addToTrace","inlineHit","addRelease","addPageAction","setCurrentRouteName","setPageViewName","setCustomAttribute","interaction","noticeError","setUserId"].forEach((t=>{e[t]=function(){for(var r=arguments.length,n=new Array(r),i=0;i 1?r-1:0),i=1;i {e.exposed&&e.api[t]&&o.push(e.api[t](...n))})),o.length>1?o:o[0]}(t,...n)}}))}var p=r(2587);function m(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},m=arguments.length>2?arguments[2]:void 0,v=arguments.length>3?arguments[3]:void 0,{init:b,info:y,loader_config:w,runtime:x={loaderType:m},exposed:A=!0}=t;const E=(0,h.gG)();y||(b=E.init,y=E.info,w=E.loader_config),(0,i.Dg)(e,b||{}),(0,i.GE)(e,w||{}),(0,i.sU)(e,x),y.jsAttributes??={},d.v6&&(y.jsAttributes.isWorker=!0),(0,i.CX)(e,y),g();const T=function(e,t){t||(0,c.R)(e,"api");const h={};var g=a.ee.get(e),p=g.get("tracer"),m="api-",v=m+"ixn-";function b(t,r,n,o){const a=(0,i.C5)(e);return null===r?delete a.jsAttributes[t]:(0,i.CX)(e,{...a,jsAttributes:{...a.jsAttributes,[t]:r}}),x(m,n,!0,o||null===r?"session":void 0)(t,r)}function y(){}["setErrorHandler","finished","addToTrace","inlineHit","addRelease"].forEach((e=>h[e]=x(m,e,!0,"api"))),h.addPageAction=x(m,"addPageAction",!0,n.D.pageAction),h.setCurrentRouteName=x(m,"routeName",!0,n.D.spa),h.setPageViewName=function(t,r){if("string"==typeof t)return"/"!==t.charAt(0)&&(t="/"+t),(0,i.OP)(e).customTransaction=(r||"http://custom.transaction")+t,x(m,"setPageViewName",!0)()},h.setCustomAttribute=function(e,t){let r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if("string"==typeof e){if(["string","number"].includes(typeof t)||null===t)return b(e,t,"setCustomAttribute",r);(0,f.Z)("Failed to execute setCustomAttribute.\nNon-null value must be a string or number type, but a type of was provided."))}else(0,f.Z)("Failed to execute setCustomAttribute.\nName must be a string type, but a type of was provided."))},h.setUserId=function(e){if("string"==typeof e||null===e)return b("enduser.id",e,"setUserId",!0);(0,f.Z)("Failed to execute setUserId.\nNon-null value must be a string type, but a type of was provided."))},h.interaction=function(){return(new y).get()};var w=y.prototype={createTracer:function(e,t){var r={},i=this,a="function"==typeof t;return(0,o.p)(v+"tracer",[(0,s.z)(),e,r],i,n.D.spa,g),function(){if(p.emit((a?"":"no-")+"fn-start",[(0,s.z)(),i,a],r),a)try{return t.apply(this,arguments)}catch(e){throw p.emit("fn-err",[arguments,this,"string"==typeof e?new Error(e):e],r),e}finally{p.emit("fn-end",[(0,s.z)()],r)}}}};function x(e,t,r,i){return function(){return(0,o.p)(l.xS,["API/"+t+"/called"],void 0,n.D.metrics,g),i&&(0,o.p)(e+t,[(0,s.z)(),...arguments],r?null:this,i,g),r?void 0:this}}function A(){r.e(439).then(r.bind(r,7438)).then((t=>{let{setAPI:r}=t;r(e),(0,c.L)(e,"api")})).catch((()=>(0,f.Z)("Downloading runtime APIs failed...")))}return["actionText","setName","setAttribute","save","ignore","onEnd","getContext","end","get"].forEach((e=>{w[e]=x(v,e,void 0,n.D.spa)})),h.noticeError=function(e,t){"string"==typeof e&&(e=new Error(e)),(0,o.p)(l.xS,["API/noticeError/called"],void 0,n.D.metrics,g),(0,o.p)("err",[e,(0,s.z)(),!1,t],void 0,n.D.jserrors,g)},d.il?(0,u.b)((()=>A()),!0):A(),h}(e,v);return(0,h.Qy)(e,T,"api"),(0,h.Qy)(e,A,"exposed"),(0,h.EZ)("activatedFeatures",p.T),T}},3325:(e,t,r)=>{r.d(t,{D:()=>n,p:()=>i});const n={ajax:"ajax",jserrors:"jserrors",metrics:"metrics",pageAction:"page_action",pageViewEvent:"page_view_event",pageViewTiming:"page_view_timing",sessionReplay:"session_replay",sessionTrace:"session_trace",spa:"spa"},i={[n.pageViewEvent]:1,[n.pageViewTiming]:2,[n.metrics]:3,[n.jserrors]:4,[n.ajax]:5,[n.sessionTrace]:6,[n.pageAction]:7,[n.spa]:8,[n.sessionReplay]:9}}},n={};function i(e){var t=n[e];if(void 0!==t)return t.exports;var o=n[e]={exports:{}};return r[e](o,o.exports,i),o.exports}i.m=r,i.d=(e,t)=>{for(var r in t)i.o(t,r)&&!i.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},i.f={},i.e=e=>Promise.all(Object.keys(i.f).reduce(((t,r)=>(i.f[r](e,t),t)),[])),i.u=e=>(({78:"page_action-aggregate",147:"metrics-aggregate",242:"session-manager",317:"jserrors-aggregate",348:"page_view_timing-aggregate",412:"lazy-feature-loader",439:"async-api",538:"recorder",590:"session_replay-aggregate",675:"compressor",733:"session_trace-aggregate",786:"page_view_event-aggregate",873:"spa-aggregate",898:"ajax-aggregate"}[e]||e)+"."+{78:"ac76d497",147:"3dc53903",148:"1a20d5fe",242:"2a64278a",317:"49e41428",348:"bd6de33a",412:"2f55ce66",439:"30bd804e",538:"1b18459f",590:"cf0efb30",675:"ae9f91a8",733:"83105561",786:"06482edd",860:"03a8b7a5",873:"e6b09d52",898:"998ef92b"}[e]+"-1.236.0.min.js"),i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),e={},t="NRBA:",i.l=(r,n,o,a)=>{if(e[r])e[r].push(n);else{var s,c;if(void 0!==o)for(var u=document.getElementsByTagName("script"),d=0;d {s.onerror=s.onload=null,clearTimeout(h);var i=e[r];if(delete e[r],s.parentNode&&s.parentNode.removeChild(s),i&&i.forEach((e=>e(n))),t)return t(n)},h=setTimeout(l.bind(null,void 0,{type:"timeout",target:s}),12e4);s.onerror=l.bind(null,s.onerror),s.onload=l.bind(null,s.onload),c&&document.head.appendChild(s)}},i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.j=364,i.p="https://js-agent.newrelic.com/",(()=>{var e={364:0,953:0};i.f.j=(t,r)=>{var n=i.o(e,t)?e[t]:void 0;if(0!==n)if(n)r.push(n[2]);else{var o=new Promise(((r,i)=>n=e[t]=[r,i]));r.push(n[2]=o);var a=i.p+i.u(t),s=new Error;i.l(a,(r=>{if(i.o(e,t)&&(0!==(n=e[t])&&(e[t]=void 0),n)){var o=r&&("load"===r.type?"missing":r.type),a=r&&r.target&&r.target.src;s.message="Loading chunk "+t+" failed.\n("+o+": "+a+")",s.name="ChunkLoadError",s.type=o,s.request=a,n[1](s)}}),"chunk-"+t,t)}};var t=(t,r)=>{var n,o,[a,s,c]=r,u=0;if(a.some((t=>0!==e[t]))){for(n in s)i.o(s,n)&&(i.m[n]=s[n]);if(c)c(i)}for(t&&t(r);u {i.r(o);var e=i(3325),t=i(5763);const r=Object.values(e.D);function n(e){const n={};return r.forEach((r=>{n[r]=function(e,r){return!1!==(0,t.Mt)(r,"".concat(e,".enabled"))}(r,e)})),n}var a=i(9144);var s=i(5546),c=i(385),u=i(8e3),d=i(5938),f=i(3960),l=i(50);class h extends d.W{constructor(e,t,r){let n=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];super(e,t,r),this.auto=n,this.abortHandler,this.featAggregate,this.onAggregateImported,n&&(0,u.R)(e,r)}importAggregator(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(this.featAggregate||!this.auto)return;const r=c.il&&!0===(0,t.Mt)(this.agentIdentifier,"privacy.cookies_enabled");let n;this.onAggregateImported=new Promise((e=>{n=e}));const o=async()=>{let t;try{if(r){const{setupAgentSession:e}=await Promise.all([i.e(860),i.e(242)]).then(i.bind(i,3228));t=e(this.agentIdentifier)}}catch(e){(0,l.Z)("A problem occurred when starting up session manager. This page will not start or extend any session.",e)}try{if(!this.shouldImportAgg(this.featureName,t))return void(0,u.L)(this.agentIdentifier,this.featureName);const{lazyFeatureLoader:r}=await i.e(412).then(i.bind(i,8582)),{Aggregate:o}=await r(this.featureName,"aggregate");this.featAggregate=new o(this.agentIdentifier,this.aggregator,e),n(!0)}catch(e){(0,l.Z)("Downloading and initializing ".concat(this.featureName," failed..."),e),this.abortHandler?.(),n(!1)}};c.il?(0,f.b)((()=>o()),!0):o()}shouldImportAgg(r,n){return r!==e.D.sessionReplay||!1!==(0,t.Mt)(this.agentIdentifier,"session_trace.enabled")&&(!!n?.isNew||!!n?.state.sessionReplay)}}var g=i(7633),p=i(7894);class m extends h{static featureName=g.t9;constructor(r,n){let i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(super(r,n,g.t9,i),("undefined"==typeof PerformanceNavigationTiming||c.Tt)&&"undefined"!=typeof PerformanceTiming){const n=(0,t.OP)(r);n[g.Dz]=Math.max(Date.now()-n.offset,0),(0,f.K)((()=>n[g.qw]=Math.max((0,p.z)()-n[g.Dz],0))),(0,f.b)((()=>{const t=(0,p.z)();n[g.OJ]=Math.max(t-n[g.Dz],0),(0,s.p)("timing",["load",t],void 0,e.D.pageViewTiming,this.ee)}))}this.importAggregator()}}var v=i(1117),b=i(1284);class y extends v.w{constructor(e){super(e),this.aggregatedData={}}store(e,t,r,n,i){var o=this.getBucket(e,t,r,i);return o.metrics=function(e,t){t||(t={count:0});return t.count+=1,(0,b.D)(e,(function(e,r){t[e]=w(r,t[e])})),t}(n,o.metrics),o}merge(e,t,r,n,i){var o=this.getBucket(e,t,n,i);if(o.metrics){var a=o.metrics;a.count+=r.count,(0,b.D)(r,(function(e,t){if("count"!==e){var n=a[e],i=r[e];i&&!i.c?a[e]=w(i.t,n):a[e]=function(e,t){if(!t)return e;t.c||(t=x(t.t));return t.min=Math.min(e.min,t.min),t.max=Math.max(e.max,t.max),t.t+=e.t,t.sos+=e.sos,t.c+=e.c,t}(i,a[e])}}))}else o.metrics=r}storeMetric(e,t,r,n){var i=this.getBucket(e,t,r);return i.stats=w(n,i.stats),i}getBucket(e,t,r,n){this.aggregatedData[e]||(this.aggregatedData[e]={});var i=this.aggregatedData[e][t];return i||(i=this.aggregatedData[e][t]={params:r||{}},n&&(i.custom=n)),i}get(e,t){return t?this.aggregatedData[e]&&this.aggregatedData[e][t]:this.aggregatedData[e]}take(e){for(var t={},r="",n=!1,i=0;i t.max&&(t.max=e),e 2&&void 0!==arguments[2])||arguments[2];super(e,r,j.t,n),c.il&&((0,t.OP)(e).initHidden=Boolean("hidden"===document.visibilityState),(0,N.N)((()=>(0,s.p)("docHidden",[(0,p.z)()],void 0,j.t,this.ee)),!0),(0,O.bP)("pagehide",(()=>(0,s.p)("winPagehide",[(0,p.z)()],void 0,j.t,this.ee))),this.importAggregator())}}var P=i(3081);class C extends h{static featureName=P.t9;constructor(e,t){let r=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];super(e,t,P.t9,r),this.importAggregator()}}var R,I=i(2210),k=i(1214),H=i(2177),L={};try{R=localStorage.getItem("__nr_flags").split(","),console&&"function"==typeof console.log&&(L.console=!0,-1!==R.indexOf("dev")&&(L.dev=!0),-1!==R.indexOf("nr_dev")&&(L.nrDev=!0))}catch(e){}function z(e){try{L.console&&z(e)}catch(e){}}L.nrDev&&H.ee.on("internal-error",(function(e){z(e.stack)})),L.dev&&H.ee.on("fn-err",(function(e,t,r){z(r.stack)})),L.dev&&(z("NR AGENT IN DEVELOPMENT MODE"),z("flags: "+(0,b.D)(L,(function(e,t){return e})).join(", ")));var M=i(6660);class B extends h{static featureName=M.t;constructor(r,n){let i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];super(r,n,M.t,i),this.skipNext=0;try{this.removeOnAbort=new AbortController}catch(e){}const o=this;o.ee.on("fn-start",(function(e,t,r){o.abortHandler&&(o.skipNext+=1)})),o.ee.on("fn-err",(function(t,r,n){o.abortHandler&&!n[M.A]&&((0,I.X)(n,M.A,(function(){return!0})),this.thrown=!0,(0,s.p)("err",[n,(0,p.z)()],void 0,e.D.jserrors,o.ee))})),o.ee.on("fn-end",(function(){o.abortHandler&&!this.thrown&&o.skipNext>0&&(o.skipNext-=1)})),o.ee.on("internal-error",(function(t){(0,s.p)("ierr",[t,(0,p.z)(),!0],void 0,e.D.jserrors,o.ee)})),this.origOnerror=c._A.onerror,c._A.onerror=this.onerrorHandler.bind(this),c._A.addEventListener("unhandledrejection",(t=>{const r=function(e){let t="Unhandled Promise Rejection: ";if(e instanceof Error)try{return e.message=t+e.message,e}catch(t){return e}if(void 0===e)return new Error(t);try{return new Error(t+(0,D.P)(e))}catch(e){return new Error(t)}}(t.reason);(0,s.p)("err",[r,(0,p.z)(),!1,{unhandledPromiseRejection:1}],void 0,e.D.jserrors,this.ee)}),(0,O.m$)(!1,this.removeOnAbort?.signal)),(0,k.gy)(this.ee),(0,k.BV)(this.ee),(0,k.em)(this.ee),(0,t.OP)(r).xhrWrappable&&(0,k.Kf)(this.ee),this.abortHandler=this.#e,this.importAggregator()}#e(){this.removeOnAbort?.abort(),this.abortHandler=void 0}onerrorHandler(t,r,n,i,o){"function"==typeof this.origOnerror&&this.origOnerror(...arguments);try{this.skipNext?this.skipNext-=1:(0,s.p)("err",[o||new F(t,r,n),(0,p.z)()],void 0,e.D.jserrors,this.ee)}catch(t){try{(0,s.p)("ierr",[t,(0,p.z)(),!0],void 0,e.D.jserrors,this.ee)}catch(e){}}return!1}}function F(e,t,r){this.message=e||"Uncaught error with no additional information",this.sourceURL=t,this.line=r}let U=1;const q="nr@id";function G(e){const t=typeof e;return!e||"object"!==t&&"function"!==t?-1:e===c._A?0:(0,I.X)(e,q,(function(){return U++}))}function V(e){if("string"==typeof e&&e.length)return e.length;if("object"==typeof e){if("undefined"!=typeof ArrayBuffer&&e instanceof ArrayBuffer&&e.byteLength)return e.byteLength;if("undefined"!=typeof Blob&&e instanceof Blob&&e.size)return e.size;if(!("undefined"!=typeof FormData&&e instanceof FormData))try{return(0,D.P)(e).length}catch(e){return}}}var X=i(7243);class W{constructor(e){this.agentIdentifier=e,this.generateTracePayload=this.generateTracePayload.bind(this),this.shouldGenerateTrace=this.shouldGenerateTrace.bind(this)}generateTracePayload(e){if(!this.shouldGenerateTrace(e))return null;var r=(0,t.DL)(this.agentIdentifier);if(!r)return null;var n=(r.accountID||"").toString()||null,i=(r.agentID||"").toString()||null,o=(r.trustKey||"").toString()||null;if(!n||!i)return null;var a=(0,_.M)(),s=(0,_.Ht)(),c=Date.now(),u={spanId:a,traceId:s,timestamp:c};return(e.sameOrigin||this.isAllowedOrigin(e)&&this.useTraceContextHeadersForCors())&&(u.traceContextParentHeader=this.generateTraceContextParentHeader(a,s),u.traceContextStateHeader=this.generateTraceContextStateHeader(a,c,n,i,o)),(e.sameOrigin&&!this.excludeNewrelicHeader()||!e.sameOrigin&&this.isAllowedOrigin(e)&&this.useNewrelicHeaderForCors())&&(u.newrelicHeader=this.generateTraceHeader(a,s,c,n,i,o)),u}generateTraceContextParentHeader(e,t){return"00-"+t+"-"+e+"-01"}generateTraceContextStateHeader(e,t,r,n,i){return i+"@nr=0-1-"+r+"-"+n+"-"+e+"----"+t}generateTraceHeader(e,t,r,n,i,o){if(!("function"==typeof c._A?.btoa))return null;var a={v:[0,1],d:{ty:"Browser",ac:n,ap:i,id:e,tr:t,ti:r}};return o&&n!==o&&(a.d.tk=o),btoa((0,D.P)(a))}shouldGenerateTrace(e){return this.isDtEnabled()&&this.isAllowedOrigin(e)}isAllowedOrigin(e){var r=!1,n={};if((0,t.Mt)(this.agentIdentifier,"distributed_tracing")&&(n=(0,t.P_)(this.agentIdentifier).distributed_tracing),e.sameOrigin)r=!0;else if(n.allowed_origins instanceof Array)for(var i=0;i 2&&void 0!==arguments[2])||arguments[2];super(r,n,Z.t,i),(0,t.OP)(r).xhrWrappable&&(this.dt=new W(r),this.handler=(e,t,r,n)=>(0,s.p)(e,t,r,n,this.ee),(0,k.u5)(this.ee),(0,k.Kf)(this.ee),function(r,n,i,o){function a(e){var t=this;t.totalCbs=0,t.called=0,t.cbTime=0,t.end=E,t.ended=!1,t.xhrGuids={},t.lastSize=null,t.loadCaptureCalled=!1,t.params=this.params||{},t.metrics=this.metrics||{},e.addEventListener("load",(function(r){_(t,e)}),(0,O.m$)(!1)),c.IF||e.addEventListener("progress",(function(e){t.lastSize=e.loaded}),(0,O.m$)(!1))}function s(e){this.params={method:e[0]},T(this,e[1]),this.metrics={}}function u(e,n){var i=(0,t.DL)(r);i.xpid&&this.sameOrigin&&n.setRequestHeader("X-NewRelic-ID",i.xpid);var a=o.generateTracePayload(this.parsedOrigin);if(a){var s=!1;a.newrelicHeader&&(n.setRequestHeader("newrelic",a.newrelicHeader),s=!0),a.traceContextParentHeader&&(n.setRequestHeader("traceparent",a.traceContextParentHeader),a.traceContextStateHeader&&n.setRequestHeader("tracestate",a.traceContextStateHeader),s=!0),s&&(this.dt=a)}}function d(e,t){var r=this.metrics,i=e[0],o=this;if(r&&i){var a=V(i);a&&(r.txSize=a)}this.startTime=(0,p.z)(),this.listener=function(e){try{"abort"!==e.type||o.loadCaptureCalled||(o.params.aborted=!0),("load"!==e.type||o.called===o.totalCbs&&(o.onloadCalled||"function"!=typeof t.onload)&&"function"==typeof o.end)&&o.end(t)}catch(e){try{n.emit("internal-error",[e])}catch(e){}}};for(var s=0;s 1?e[1]=i:e.push(i)}else e[0]&&e[0].headers&&s(e[0].headers,n)&&(this.dt=n);function s(e,t){var r=!1;return t.newrelicHeader&&(e.set("newrelic",t.newrelicHeader),r=!0),t.traceContextParentHeader&&(e.set("traceparent",t.traceContextParentHeader),t.traceContextStateHeader&&e.set("tracestate",t.traceContextStateHeader),r=!0),r}}function x(e,t){this.params={},this.metrics={},this.startTime=(0,p.z)(),this.dt=t,e.length>=1&&(this.target=e[0]),e.length>=2&&(this.opts=e[1]);var r,n=this.opts||{},i=this.target;"string"==typeof i?r=i:"object"==typeof i&&i instanceof Y?r=i.url:c._A?.URL&&"object"==typeof i&&i instanceof URL&&(r=i.href),T(this,r);var o=(""+(i&&i instanceof Y&&i.method||n.method||"GET")).toUpperCase();this.params.method=o,this.txSize=V(n.body)||0}function A(t,r){var n;this.endTime=(0,p.z)(),this.params||(this.params={}),this.params.status=r?r.status:0,"string"==typeof this.rxSize&&this.rxSize.length>0&&(n=+this.rxSize);var o={txSize:this.txSize,rxSize:n,duration:(0,p.z)()-this.startTime};i("xhr",[this.params,o,this.startTime,this.endTime,"fetch"],this,e.D.ajax)}function E(t){var r=this.params,n=this.metrics;if(!this.ended){this.ended=!0;for(var o=0;o 2&&void 0!==arguments[2])||arguments[2];super(e,t,we.t,r),this.importAggregator()}}new class{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:(0,_.ky)(16);c._A?(this.agentIdentifier=t,this.sharedAggregator=new y({agentIdentifier:this.agentIdentifier}),this.features={},this.desiredFeatures=new Set(e.features||[]),this.desiredFeatures.add(m),Object.assign(this,(0,a.j)(this.agentIdentifier,e,e.loaderType||"agent")),this.start()):(0,l.Z)("Failed to initial the agent. Could not determine the runtime environment.")}get config(){return{info:(0,t.C5)(this.agentIdentifier),init:(0,t.P_)(this.agentIdentifier),loader_config:(0,t.DL)(this.agentIdentifier),runtime:(0,t.OP)(this.agentIdentifier)}}start(){const t="features";try{const r=n(this.agentIdentifier),i=[...this.desiredFeatures];i.sort(((t,r)=>e.p[t.featureName]-e.p[r.featureName])),i.forEach((t=>{if(r[t.featureName]||t.featureName===e.D.pageViewEvent){const n=function(t){switch(t){case e.D.ajax:return[e.D.jserrors];case e.D.sessionTrace:return[e.D.ajax,e.D.pageViewEvent];case e.D.sessionReplay:return[e.D.sessionTrace];case e.D.pageViewTiming:return[e.D.pageViewEvent];default:return[]}}(t.featureName);n.every((e=>r[e]))||(0,l.Z)("".concat(t.featureName," is enabled but one or more dependent features has been disabled (").concat((0,D.P)(n),"). This may cause unintended consequences or missing data...")),this.features[t.featureName]=new t(this.agentIdentifier,this.sharedAggregator)}})),(0,T.Qy)(this.agentIdentifier,this.features,t)}catch(e){(0,l.Z)("Failed to initialize all enabled instrument classes (agent aborted) -",e);for(const e in this.features)this.features[e].abortHandler?.();const r=(0,T.fP)();return delete r.initializedAgents[this.agentIdentifier]?.api,delete r.initializedAgents[this.agentIdentifier]?.[t],delete this.sharedAggregator,r.ee?.abort(),delete r.ee?.get(this.agentIdentifier),!1}}}({features:[J,m,S,class extends h{static featureName=oe;constructor(t,r){if(super(t,r,oe,!(arguments.length>2&&void 0!==arguments[2])||arguments[2]),!c.il)return;const n=this.ee;let i;(0,k.QU)(n),this.eventsEE=(0,k.em)(n),this.eventsEE.on(se,(function(e,t){this.bstStart=(0,p.z)()})),this.eventsEE.on(ae,(function(t,r){(0,s.p)("bst",[t[0],r,this.bstStart,(0,p.z)()],void 0,e.D.sessionTrace,n)})),n.on(ce+ne,(function(e){this.time=(0,p.z)(),this.startPath=location.pathname+location.hash})),n.on(ce+ie,(function(t){(0,s.p)("bstHist",[location.pathname+location.hash,this.startPath,this.time],void 0,e.D.sessionTrace,n)}));try{i=new PerformanceObserver((t=>{const r=t.getEntries();(0,s.p)(te,[r],void 0,e.D.sessionTrace,n)})),i.observe({type:re,buffered:!0})}catch(e){}this.importAggregator({resourceObserver:i})}},C,xe,B,class extends h{static featureName=de;constructor(e,r){if(super(e,r,de,!(arguments.length>2&&void 0!==arguments[2])||arguments[2]),!c.il)return;if(!(0,t.OP)(e).xhrWrappable)return;try{this.removeOnAbort=new AbortController}catch(e){}let n,i=0;const o=this.ee.get("tracer"),a=(0,k._L)(this.ee),s=(0,k.Lg)(this.ee),u=(0,k.BV)(this.ee),d=(0,k.Kf)(this.ee),f=this.ee.get("events"),l=(0,k.u5)(this.ee),h=(0,k.QU)(this.ee),g=(0,k.Gm)(this.ee);function m(e,t){h.emit("newURL",[""+window.location,t])}function v(){i++,n=window.location.hash,this[ve]=(0,p.z)()}function b(){i--,window.location.hash!==n&&m(0,!0);var e=(0,p.z)();this[pe]=~~this[pe]+e-this[ve],this[ye]=e}function y(e,t){e.on(t,(function(){this[t]=(0,p.z)()}))}this.ee.on(ve,v),s.on(be,v),a.on(be,v),this.ee.on(ye,b),s.on(ge,b),a.on(ge,b),this.ee.buffer([ve,ye,"xhr-resolved"],this.featureName),f.buffer([ve],this.featureName),u.buffer(["setTimeout"+le,"clearTimeout"+fe,ve],this.featureName),d.buffer([ve,"new-xhr","send-xhr"+fe],this.featureName),l.buffer([me+fe,me+"-done",me+he+fe,me+he+le],this.featureName),h.buffer(["newURL"],this.featureName),g.buffer([ve],this.featureName),s.buffer(["propagate",be,ge,"executor-err","resolve"+fe],this.featureName),o.buffer([ve,"no-"+ve],this.featureName),a.buffer(["new-jsonp","cb-start","jsonp-error","jsonp-end"],this.featureName),y(l,me+fe),y(l,me+"-done"),y(a,"new-jsonp"),y(a,"jsonp-end"),y(a,"cb-start"),h.on("pushState-end",m),h.on("replaceState-end",m),window.addEventListener("hashchange",m,(0,O.m$)(!0,this.removeOnAbort?.signal)),window.addEventListener("load",m,(0,O.m$)(!0,this.removeOnAbort?.signal)),window.addEventListener("popstate",(function(){m(0,i>1)}),(0,O.m$)(!0,this.removeOnAbort?.signal)),this.abortHandler=this.#e,this.importAggregator()}#e(){this.removeOnAbort?.abort(),this.abortHandler=void 0}}],loaderType:"spa"})})(),window.NRBA=o})(); window.jQuery || document.write(' ') CKEDITOR_BASEPATH='https://f1000research.com/js/vendor/ckeditor/' window.reactTheme = 'research'; window.MathJax = { CommonHTML: { linebreaks: { automatic: true } }, 'HTML-CSS': { linebreaks: { automatic: true } }, SVG: { linebreaks: { automatic: true } }, AuthorInit: function() { MathJax.Hub.Register.MessageHook('End Process', function () { let timeout = false; // holder for timeout id const delay = 250; // delay after event is "complete" to run callback const reflowMath = function() { const dispFormulas = document.querySelectorAll('.disp-formula.panel'); if (!dispFormulas) { return; } for (const dispFormula of dispFormulas) { const child = dispFormula.querySelector('.MathJax_Preview').nextSibling.firstChild; const isMultiline = MathJax.Hub.getAllJax(dispFormula)[0].root.isMultiline; if (dispFormula.offsetWidth < child.offsetWidth || isMultiline) { MathJax.Hub.Queue(['Rerender', MathJax.Hub, dispFormula]); } } }; window.addEventListener('resize', function() { clearTimeout(timeout); // clear the timeout timeout = setTimeout(reflowMath, delay); // start timing for event "completion" }); }); }, }; if (window.location.hash == '#_=_'){ window.location = window.location.href.split('#')[0] } !function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function() {n.callMethod? n.callMethod.apply(n,arguments):n.queue.push(arguments)} ;if(!f._fbq)f._fbq=n; n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0; t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window, document,'script','https://connect.facebook.net/en_US/fbevents.js'); fbq('init', '1641728616063202'); fbq('track', "PixelInitialized", {}); (function(h,o,t,j,a,r){ h.hj=h.hj||function(){(h.hj.q=h.hj.q||[]).push(arguments)}; h._hjSettings={hjid:2318163,hjsv:6}; a=o.getElementsByTagName('head')[0]; r=o.createElement('script');r.async=1; r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); search file_upload Submit your research search menu close search Browse Gateways & Collections How to Publish Submit your Research My Submissions Article Guidelines Article Guidelines (New Versions) Open Data, Software and Code Guidelines Open Data and Accessible Source Materials Guidelines (HSS) Open Data, Software and Code Guidelines (PSE) Prepublication Checks Production Process Posters and Slides Guidelines Document Guidelines Article Processing Charges Peer Review Finding Article Reviewers About How it Works For Reviewers Our Advisors Policies Glossary FAQs For Developers Newsroom Contact My Research Submissions Content and Tracking Alerts My Details Sign In file_upload Submit your research { "@context": "https://schema.org", "@type": "ScholarlyArticle", "mainEntityOfPage": { "@type": "WebPage", "@id": "https://f1000research.com/articles/14-100" }, "headline": "Optimizing machine learning performance for medical imaging analyses in low-resource environments: The...", "datePublished": "2025-01-17T16:01:23", "dateModified": "2025-01-17T16:01:23", "author": [ { "@type": "Person", "name": "Itunuoluwa Isewon" }, { "@type": "Person", "name": "Emmanuel Alagbe" }, { "@type": "Person", "name": "Jelili Oyelade" } ], "publisher": { "@type": "Organization", "name": "F1000Research", "logo": { "@type": "ImageObject", "url": "https://f1000research.com/img/AMP/F1000Research_image.png", "height": 480, "width": 60 } }, "image": { "@type": "ImageObject", "url": "https://f1000research.com/img/AMP/F1000Research_image.png", "height": 1200, "width": 150 }, "description": " Background Machine learning (ML) algorithms have generally enhanced the speed and accuracy of image-based diagnosis, and treatment strategy planning, compared to the traditional approach of interpreting medical images by experienced radiologists. Convolutional neural networks (CNNs) have been particularly useful in this regard. However, training CNNs come with significant time and computational cost necessitating the development of efficient solutions for deploying CNNs in low-resource environments. This study investigates the use of pre-trained CNNs as feature extractors in medical imaging analyses and highlights the key considerations to be taken into account when implementing these extractors. Methods Eight medical imaging datasets covering several diseases (e.g. breast cancer, brain tumor and malaria) were used. Five ML algorithms (k-nearest neighbours, logistic regression, naïve Bayes, random forests and light gradient boosting machine) were implemented with three pre-trained CNN models (VGG-16, EfficientNet-B0, and ResNet-50). These pre-trained models were deployed as feature extractors fed into the classifiers for image classification tasks. The performance of these classifiers was assessed using a ten-fold cross validation scheme with metrics such as accuracy, F1 score, specificity, sensitivity, AUC-ROC, Matthews’ correlation coefficient (MCC), precision, time and space complexities. Results From our experiments, we found a general improvement in ML models’ performance after feature extraction (FE). Of the three FE models tested,EfficientNet-B0 performed best in terms of predicitve performance i.e. accuracy, specificity, sensitivity, AUC-ROC, MCC, F1 score, and precision. However, VGG-16 had the best performance in terms of time and memory efficiency. Our results identify two conditions necessary for the optimal performance of the FE models; (i) balanced datasets - a set where classes or categories are represented in approximately equal proportions, (ii) big data sets - adequate number of objects for training and testing. Interestingly, the performance of the ML models did not correlate with the number of class labels i.e. the type of classification task whether binary or multi-class had no influence in the models’ performance. Of the five algorithms investigated, logistic regression benefitted the most from the adoption of the feature extractors. Conclusion Our results confirm that the use of CNNs as feature extractors offer an effective balance between high performance and computational efficiency, making them well-suited for use in low-resource environments. " } { "@context": "http://schema.org", "@type": "BreadcrumbList", "itemListElement": [ { "@type": "ListItem", "position": "1", "item": { "@id": "https://f1000research.com/", "name": "Home" } }, { "@type": "ListItem", "position": "2", "item": { "@id": "https://f1000research.com/browse/articles", "name": "Browse" } }, { "@type": "ListItem", "position": "3", "item": { "@id": "https://f1000research.com/articles/14-100", "name": "Optimizing machine learning performance for medical imaging analyses..." } } ] } Home Browse Optimizing machine learning performance for medical imaging analyses... ALL Metrics - Views Downloads Get PDF Get XML Cite How to cite this article Isewon I, Alagbe E and Oyelade J. Optimizing machine learning performance for medical imaging analyses in low-resource environments: The prospects of CNN-based Feature Extractors [version 1; peer review: 1 approved with reservations] . F1000Research 2025, 14 :100 ( https://doi.org/10.12688/f1000research.156122.1 ) NOTE: If applicable, it is important to ensure the information in square brackets after the title is included in all citations of this article. Close Copy Citation Details Export Export Citation Sciwheel EndNote Ref. Manager Bibtex ProCite Sente EXPORT Select a format first Track Share ▬ ✚ Research Article Optimizing machine learning performance for medical imaging analyses in low-resource environments: The prospects of CNN-based Feature Extractors [version 1; peer review: 1 approved with reservations] Itunuoluwa Isewon https://orcid.org/0000-0001-9653-8929 1-3 , Emmanuel Alagbe https://orcid.org/0000-0002-1072-0234 1,2 , Jelili Oyelade https://orcid.org/0000-0002-5476-4992 1-3 Itunuoluwa Isewon https://orcid.org/0000-0001-9653-8929 1-3 , Emmanuel Alagbe https://orcid.org/0000-0002-1072-0234 1,2 , Jelili Oyelade https://orcid.org/0000-0002-5476-4992 1-3 PUBLISHED 17 Jan 2025 Author details Author details 1 Department of Computer and Information Sciences, Covenant University, Ota, Ogun State, 112104, Nigeria 2 Covenant Applied Informatics and Communication African Centre of Excellence (CApIC-ACE), Covenant University, Ota, Ogun State, 112104, Nigeria 3 Covenant University Bioinformatics Research (CUBRe), Covenant University, Ota, Ogun State, 112104, Nigeria Itunuoluwa Isewon Roles: Conceptualization, Formal Analysis, Funding Acquisition, Methodology, Resources, Visualization, Writing – Original Draft Preparation, Writing – Review & Editing Emmanuel Alagbe Roles: Formal Analysis, Investigation, Methodology, Software, Validation, Writing – Original Draft Preparation, Writing – Review & Editing Jelili Oyelade Roles: Data Curation, Funding Acquisition, Project Administration, Resources, Supervision, Writing – Original Draft Preparation, Writing – Review & Editing OPEN PEER REVIEW DETAILS REVIEWER STATUS Abstract Background Machine learning (ML) algorithms have generally enhanced the speed and accuracy of image-based diagnosis, and treatment strategy planning, compared to the traditional approach of interpreting medical images by experienced radiologists. Convolutional neural networks (CNNs) have been particularly useful in this regard. However, training CNNs come with significant time and computational cost necessitating the development of efficient solutions for deploying CNNs in low-resource environments. This study investigates the use of pre-trained CNNs as feature extractors in medical imaging analyses and highlights the key considerations to be taken into account when implementing these extractors. Methods Eight medical imaging datasets covering several diseases (e.g. breast cancer, brain tumor and malaria) were used. Five ML algorithms (k-nearest neighbours, logistic regression, naïve Bayes, random forests and light gradient boosting machine) were implemented with three pre-trained CNN models (VGG-16, EfficientNet-B0, and ResNet-50). These pre-trained models were deployed as feature extractors fed into the classifiers for image classification tasks. The performance of these classifiers was assessed using a ten-fold cross validation scheme with metrics such as accuracy, F1 score, specificity, sensitivity, AUC-ROC, Matthews’ correlation coefficient (MCC), precision, time and space complexities. Results From our experiments, we found a general improvement in ML models’ performance after feature extraction (FE). Of the three FE models tested,EfficientNet-B0 performed best in terms of predicitve performance i.e. accuracy, specificity, sensitivity, AUC-ROC, MCC, F1 score, and precision. However, VGG-16 had the best performance in terms of time and memory efficiency. Our results identify two conditions necessary for the optimal performance of the FE models; (i) balanced datasets - a set where classes or categories are represented in approximately equal proportions, (ii) big data sets - adequate number of objects for training and testing. Interestingly, the performance of the ML models did not correlate with the number of class labels i.e. the type of classification task whether binary or multi-class had no influence in the models’ performance. Of the five algorithms investigated, logistic regression benefitted the most from the adoption of the feature extractors. Conclusion Our results confirm that the use of CNNs as feature extractors offer an effective balance between high performance and computational efficiency, making them well-suited for use in low-resource environments. READ ALL READ LESS Keywords Machine learning, feature extraction, image classification, medical imaging, precision medicine, Convolutional neural networks, Deep learning, low resources environments. Corresponding Author(s) Itunuoluwa Isewon ( [email protected] ) Close Corresponding author: Itunuoluwa Isewon Competing interests: No competing interests were disclosed. Grant information: This work was supported by funding from the World Bank awarded to Covenant Applied Informatics, Communication Africa Centre of Excellence (CApIC-ACE) through the ACE Impact Project (2019 – 2024) and Covenant University Center for Research, Innovation and Discovery (CUCRID). The funders had no role in study design, data collection and analysis, decision to publish, or preparation of the manuscript. Copyright: © 2025 Isewon I et al . This is an open access article distributed under the terms of the Creative Commons Attribution License , which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited. How to cite: Isewon I, Alagbe E and Oyelade J. Optimizing machine learning performance for medical imaging analyses in low-resource environments: The prospects of CNN-based Feature Extractors [version 1; peer review: 1 approved with reservations] . F1000Research 2025, 14 :100 ( https://doi.org/10.12688/f1000research.156122.1 ) First published: 17 Jan 2025, 14 :100 ( https://doi.org/10.12688/f1000research.156122.1 ) Latest published: 17 Jan 2025, 14 :100 ( https://doi.org/10.12688/f1000research.156122.1 ) Background Medical imaging performs a significant role in modern medicine. Its advent has revolutionized diagnosis, treatment planning, and monitoring of various diseases. 1 Techniques such as magnetic resonance imaging (MRI), X-ray, ultrasound, and computed tomography (CT) scans among others provide non-invasive methods to visualize the interior structures of the body, enabling timely discovery of conditions like cancer, cardiovascular diseases, and neurological disorders. 2 Accurate diagnosis and effective treatment strategies are achieved traditionally by employing the services of experienced radiologists to reliably interpret these images. However, the continuous increase in volume of medical imaging data produced poses significant challenges, necessitating the development of automated and efficient image analysis methods. 3 Machine learning (ML) and consequently deep learning (DL) has surfaced as a formidable means of handling the complexities resulting from the presence of vast amounts of medical imaging data. 4 Among other use cases, image classification has been a key application area where, ML algorithms aim to automatically classify images into pre-defined classes. This is particularly valuable in medical diagnostics, where rapid and accurate classification of images can significantly improve the clinical decision-making process and treatment outcomes. 5 Convolutional Neural Networks (CNNs) have demonstrated remarkable excellence in image classification tasks, outperforming traditional ML methods and even human performance in certain scenarios. 6 , 7 The hierarchical structure of CNNs allows them to effectively capture spatial hierarchies and intricate features within images making CNNs particularly well-suited for medical imaging. 8 Notable successes of CNNs in medical imaging include the detection of lung cancer, 9 breast cancer, 10 diabetic retinopathy, 11 classification of skin lesions, 12 and segmentation of brain tumours, 13 among others. Despite their advantages, the adoption of CNNs in low-resource environments faces several hindrances such as high computational costs, energy constraints, limited annotated datasets, network connectivity issues, hardware constraints (storage and memory limitations), and limited technical expertise. In addition to increased time complexity, training CNNs requires substantial computational resources, including large amounts of memory and powerful graphics processing units (GPUs), which may not be available in resource-constrained settings. 14 These challenges necessitate the development of more accessible and efficient solutions for deploying CNNs in low-resource environments. In many image classification experiments, CNNs are not only used as classifiers but also as feature extractors. 15 Feature extraction (FE) is a fundamental aspect of image classification. Traditionally, this process relied on manual techniques and domain-specific knowledge to design features that could be fed into ML algorithms. However, CNNs have revolutionized feature extraction by automating this process. Through the successive layers of convolutions and pooling, CNNs can learn to extract hierarchical and informative features directly from raw image data, eradicating the need for handcrafted feature engineering. 16 By leveraging the pre-trained layers of a CNN, researchers can extract features from images and use them as inputs to other ML algorithms or for further analysis. 15 This study investigates the use of pre-trained CNNs as feature extractors in medical imaging analyses and emphasizes the important factors to consider when utilizing these extractors. Questions answered by this study include: 1. What is the overall impact of using the feature extractors? What is the best feature extractor? 2. What is the impact of data imbalance on the performance of the models? 3. What is the impact of the number of classes on the performance of the models? 4. What is the impact of the number of images on the performance of the models? 5. Which model benefits most from the use of feature extractors? The remainder of this paper is structured as follows: Section 2 covers the methods. In Section 3, we present the results for our experiments and provide critical discussions in Section 4. Finally, we end with a conclusion and the lessons learned. Methods Datasets Eight image datasets were used in this study. Table 1 presents the description as well as the links to each of these datasets. Table 1. Datasets used in this study. class Designation Disease nImages nClasses Distribution link Binary DS1 Malaria 27,558 2 Balanced 17 DS2 COVID-19 800 2 Balanced 18 DS3 Breast Cancer 7909 2 Imbalanced 19 DS4 Skin Cancer 9605 2 Imbalanced 20 Multiclass DS5 Brain Tumor 3264 4 Imbalanced 21 DS6 Lung and Colon Cancer 25,000 5 Balanced 22 DS7 Skin Lesions 10,000 7 Imbalanced 23 DS8 Colorectal Cancer 5,000 8 Balanced 24 Feature extractors CNNs have proven to be very beneficial in image preprocessing and classification. The deep (convolutional and pooling) layers in CNN architectures enable them to obtain highly descriptive features that leads to better representation of images in a dataset. 25 , 26 In this study, three pre-trained CNNs were used, they include VGG-16, 27 EfficientNet-B0, 28 and ResNet-50. 29 These feature extractors were implemented with default settings in python using the Tensorflow framework. 30 Machine learning algorithms Five ML algorithms were utilized in this study. They include logistic regression (LR), 31 k-nearest neighbours (KNN), 32 naive Bayes (NB), 33 radom forests (RF), 34 and light gradient boosting machine (LGBM). 35 LR, NB, KNN and RF were executed in python via the Scikit learn library, 36 while LGBM was implemented using the stand-alone python library developed by its authors. 37 Performance metrics Using ten-fold cross validation, the models’ performances were evaluated and benchmarked using the following performance metrics; time and memory requirements, accuracy, sensitivity, specificity, AUC-ROC, MCC, precision, and F1-score. To eliminate bias from excessive hyperparameter tuning, all models’ parameters were left at their default values. As RF and LGBM are affected by randomization, we used a “random state” parameter to ensure reproducibility. All random states were set to zero and other parameters were set to default values. Experimental setting All images were resized into an array of 224 by 224 pixels with 3 colour channels to prevent disparities due to image size. For each of the (n=8) datasets, five ML algorithms were used. To ascertain the impact of the three FE techniques, the baseline performance of each ML algorithm was obtained followed by the performance of the models after FE with each of the FE techniques. As a result, 160 (8 × 5 × 4) experiments were conducted. These experiments were conducted on a server featuring 20 Intel(R) Xeon(R) Silver 4210R CPU processors, 526GB of RAM, and running the Ubuntu 22.04.4 LTS operating system. Results Feature extraction improves model performance Figure 1 shows the averaged performance of ML models across all datasets. it reveals that the adoption of FE generally results in an improvement in ML models’ performance. Our results show that EfficientNet-B0 had the best predicitive performance followed closely by ResNet-50. However, VGG-16 had better efficiency in terms of memory and time utilization ( Figure 2 ). FE generally led to a reduction in memory and time complexities when compared to the baseline models. Figure 1. Average performance of ML models trained with different CNN-based feature extractors. Figure 2. Resource usage of ML models trained with different CNN-based feature extractors. Balanced datasets enhance the effectiveness of feature extraction Four datasets (DS1, DS2, DS6, and DS8) have balanced distributions across the different classes of images while the other four (DS3, DS4, DS5 and DS7) have imbalanced distributions. From our results as presented in Figure 3 , FE improves ML performance, with the effect being more significant on balanced datasets. There is also a reduction in memory and time required irrespective of whether datasets were balanced or not ( Figure 4 ). Figure 3. Performance of ML models on balanced and imbalanced datasets after feature extraction. Figure 4. Resource usage of ML models on balanced and imbalanced datasets after feature extraction. Feature extraction performance not correlated with number of classes Four datasets (DS1, DS2, DS3, and DS4) had two classes of images while DS5, DS6, DS7, and DS8 had four, five, seven and eight classes respectively. As revealed in Figure 5 , there was no correlation between the performance of ML models after FE and number of classes. The best results were obtained on DS6 (5 classes) while the worst results were obtained on DS7 (7 classes). Notably, DS6 had a balanced class distribution, while DS7 had the steepest imbalance among all the datasets used. The Melanocytic Nevi (NV) class had 6705 images, while the other six classes had 3295 images. Figure 6 shows that the least memory and time were required when ML models were trained on DS5 (4 classes). Figure 5. Performance of ML models on datasets with different number of classes after feature extraction. Figure 6. Resource usage of ML models on datasets with different number of classes after feature extraction. Feature extraction excels with more training samples but demands higher computational resources Three datasets (DS2, DS5, and DS8) have between 0 and 5000 images, Three datasets (DS3, DS4, and DS7) have between 5000 and 10000 images, while DS1 and DS6 have above 10000 images. Figure 7 reveals that the best performances were obtained with larger sample sizes. However, the increase in sample sizes also results in increased memory and time consumption ( Figure 8 ). Figure 7. Performance of ML models on datasets with different sample sizes after feature extraction. Figure 8. Resource usage of ML models on datasets with different sample sizes after feature extraction. Logistic regression benefits significantly from feature extraction Figure 9 reveals that LR benefitted the most from the adoption of FE before model training while NB benefitted the least. There was a general increase in model performance after FE regardless of the choice of ML models. In terms of memory and time utilization ( Figure 10 ), there was a general decrease in time spent after FE, however memory utilization increased in NB, KNN, and RF. Figure 9. Performance of ML models after feature extraction. Figure 10. Resource usage of ML models after feature extraction. Feature extraction significantly enhances model performance and resource efficiency for shallow machine learning models The baseline performance and resource usage of LR, LR after FE with VGG-16,and image classification with VGG-16 on the DS2 dataset are presented in Figures 11 and 12 respectively. The VGG-16 classifier was trained for 20 epochs with a batch size of 64 images. While the predictive performance of LR after FE is slightly lower than the end-to-end image classification with VGG-16, it produces comparable results, more resource efficient and it is significantly higher than the baseline LR. The VGG-16 + LR model required considerably lesser memory and time than both the baseline LR and the VGG-16 end-to-end models. Figure 11. Performance of baseline LR, LR after VGG-16 FE and VGG-16 end-to-end image classification. Figure 12. Resource usage of baseline LR, LR after VGG-16 based FE and VGG-16 end-to-end image classification. Discussion Here, we have investigated the use of VGG-16, EfficientNet-B0 and ResNet-50 as feature extractors to improve the performance of ML models. The models performed best after EfficientNet based FE. This is not surprising since EfficientNet has been known in literature to yield high performances. 28 , 38 However, since VGG-16 produced smaller features maps (512 *7 * 7) than EfficientNet-B0 (1280 * 7 * 7), the computational cost for ML models after VGG-16 FE is lesser. Previous studies have reported that ML models perform better with balanced datasets that imbalanced ones. 39 Our findings confirms this as the increase in ML model performance after FE was more pronounced in balanced datasets. We observed that the impact of FE increases with the number of learning samples which agrees with existing studies. 40 , 41 Multiclass classification is often believed to be more challenging than binary classification with many studies aiming to find optimal methods for binarizing multiclass problems. 42 However, our findings reveal for the first time that the number of classes do not provide a hinderance to model improvement if there is adequate representation of learning samples in each class. The impact of FE was most significant when LR was trained on CNN-derived features. As stated in the work of Levy and O’Malley. 43 LR should not be automatically dismissed when conducting ML experiments. Our findings provide novel evidence that simple/shallow ML models have the capacity to deliver comparable results as ensemble or DL models but they require extensive FE. For example, we observed that after FE, LR had a significantly improved predicitive performance and was still able to maintain its resource efficiency as a computational lightweight model. Our comparison in this study also show that LR performed well after VGG-16 FE and resulted in significant reduction in memory and time usage compared to baseline LR (memory = 79.68%, time = 81.28 %) and VGG-16 end-to-end model (memory = 95.39 %, time = 99.79%). This significant reduction in computational cost would greatly enhance the feasibility of adopting ML for medical imaging analysis in low-resource environments. 44 This study however has a few limitations; only five ML algorithms were used, in the future, it would be beneficial to conduct studies involving more ML algorithms. This would enable researchers to compare the performance of CNN-based FE on several groups of ML algorithms (e.g. kernel based models vs tree-based models, shallow models vs ensemble models). Similarly, only three pre-trained CNNs were investigated, there are- more pretrained models such as the Inception and ConvNeXt series. 45 Lastly, all datasets used in this study have less than 30,000 images. From our findings one could extrapolate that the improvement in performance of the models would only increase with more images. Conclusion In conclusion, our study revealed that using pre-trained CNNs as feature extractors holds much promise for improving model performance especially shallow ML models. Its ability to reduce computational demands and accelerate the ML training process makes it especially valuable in resource-limited settings. We observed that small sample sizes and class imbalance, rather than a higher number of classes, pose the greatest challenge to ML model improvement after feature extraction. Data availability All data analysed during this study are openly accessible. 1. Malaria dataset: https://www.kaggle.com/datasets/iarunava/cell-images-for-detecting-malaria 2. Covid dataset: https://www.kaggle.com/datasets/mrtejas/covid-19-and-normal-x-ray-dataset-balanced 3. Breast cancer dataset: http://web.inf.ufpr.br/vri/breast-cancer-database 4. Skin cancer dataset: https://www.kaggle.com/datasets/hasnainjaved/melanoma-skin-cancer-dataset-of-10000-images 5. Brain tumor dataset: https://www.kaggle.com/datasets/sartajbhuvaji/brain-tumor-classification-mri 6. Lung and colon cancer dataset: https://academictorrents.com/details/7a638ed187a6180fd6e464b3666a6ea0499af4af 7. Skin lesions dataset: https://dataverse.harvard.edu/dataset.xhtml?persistentId=doi:10.7910/DVN/DBW86T 8. Colorectal cancer dataset: https://www.kaggle.com/datasets/kmader/colorectal-histology-mnist Software availability Source code available from: https://github.com/ItunuIsewon/Medical-Image-Feature-Extraction Archived software available from Zenodo: https://doi.org/10.5281/zenodo.13693875 . 46 License: Creative Commons Attribution 4.0 International References 1. Hussain S, Mubeen I, Ullah N, et al. : Modern Diagnostic Imaging Technique Applications and Risk Factors in the Medical Field: A Review. Biomed. Res. Int. 2022; 2022 : 1–19. PubMed Abstract | Publisher Full Text | Free Full Text 2. Kumar D, Pratap B, Boora N, et al. : A comparative study of medical imaging modalities. Int. J. Radiol. Sci. 2021; 3 : 9–16. Publisher Full Text 3. Panayides AS, Amini A, Filipovic ND, et al. : AI in Medical Imaging Informatics: Current Challenges and Future Directions. IEEE J. Biomed. Health Inform. 2020; 24 : 1837–1857. PubMed Abstract | Publisher Full Text | Free Full Text 4. Chakraborty C, Bhattacharya M, Pal S, et al. : From machine learning to deep learning: Advances of the recent data-driven paradigm shift in medicine and healthcare. Curr. Res. Biotechnol. 2024; 7 : 100164. Publisher Full Text 5. Li M, Jiang Y, Zhang Y, et al. : Medical image analysis using deep learning algorithms. Front. Public Health. 2023; 11 : 11. Publisher Full Text 6. Ersavas T, Smith MA, Mattick JS: Novel applications of Convolutional Neural Networks in the age of Transformers. Sci. Rep. 2024; 14 : 1–11. 7. Yu S, Jia S, Xu C: Convolutional neural networks for hyperspectral image classification. Neurocomputing. 2017; 219 : 88–98. Publisher Full Text 8. Razzaghi P, Abbasi K, Bayat P: Learning spatial hierarchies of high-level features in deep neural network. J. Vis. Commun. Image Represent. 2020; 70 : 102817. Publisher Full Text 9. Adetiba E, Olugbara OO: Lung cancer prediction using neural network ensemble with histogram of oriented gradient genomic features. Sci. World J. 2015; 2015 . PubMed Abstract | Publisher Full Text | Free Full Text 10. Simonyan EO, Badejo Joke A, Weijin JS: Histopathological breast cancer classification using CNN. Mater. Today Proc. 2023. Publisher Full Text 11. Pratt H, Coenen F, Broadbent DM, et al. : Convolutional Neural Networks for Diabetic Retinopathy. Procedia Comput. Sci. 2016; 90 : 200–205. Publisher Full Text 12. Shetty B, Fernandes R, Rodrigues AP, et al. : Skin lesion classification of dermoscopic images using machine learning and convolutional neural network. Sci. Rep. 2022; 12 : 1–11. 13. Balamurugan T, Gnanamanoharan E: Brain tumor segmentation and classification using hybrid deep CNN with LuNetClassifier. Neural. Comput. Applic. 2023; 35 : 4739–4753. Publisher Full Text 14. Sarker IH: Deep Learning: A Comprehensive Overview on Techniques, Taxonomy, Applications and Research Directions. SN Comput. Sci. 2021; 2 : 420. PubMed Abstract | Publisher Full Text | Free Full Text 15. Zhao HH, Liu H: Multiple classifiers fusion and CNN feature extraction for handwritten digits recognition. Granul. Comput. 2020; 5 : 411–418. Publisher Full Text 16. Kim HE, Cosa-Linan A, Santhanam N, et al. : Transfer learning for medical image classification: a literature review. BMC Med. Imaging. 2022; 22 : 1–13. 17. Malaria Cell Images Dataset: Accessed 9 Jul 2024. Reference Source 18. COVID-19 and Normal X-ray Dataset: Balanced. Accessed 9 Jul 2024. Reference Source 19. Spanhol FA, Oliveira LS, Petitjean C, et al. : A Dataset for Breast Cancer Histopathological Image Classification. IEEE Trans. Biomed. Eng. 2016; 63 : 1455–1462. Publisher Full Text 20. Melanoma Skin Cancer Dataset of 10000 Images. Accessed 9 Jul 2024. Reference Source 21. Brain Tumor Classification (MRI). Accessed 9 Jul 2024. Reference Source 22. Borkowski AA, Bui MM, Thomas LB, et al. : Lung and Colon Cancer Histopathological Image Dataset (LC25000).2019. 23. The HAM10000 dataset, a large collection of multi-source dermatoscopic images of common pigmented skin lesions - ViDIR Dataverse. Accessed 9 Jul 2024. Publisher Full Text 24. Colorectal Histology MNIST. Accessed 9 Jul 2024. Reference Source 25. Liu B, Pan D, Shuai Z, et al. : ECSD-Net: A joint optic disc and cup segmentation and glaucoma classification network based on unsupervised domain adaptation. Comput. Methods Prog. Biomed. 2022; 213 : 106530. PubMed Abstract | Publisher Full Text 26. Khan S, Yairi T: A review on the application of deep learning in system health management. Mech. Syst. Signal Process. 2018; 107 : 241–265. Publisher Full Text 27. Simonyan K, Zisserman A: Very deep convolutional networks for large-scale image recognition. 3rd International Conference on Learning Representations, ICLR 2015 - Conference Track Proceedings. 2015. 28. Tan M, Le QV: EfficientNet: Rethinking model scaling for convolutional neural networks. 36th International Conference on Machine Learning, ICML 2019. 2019-June; 2019 : 10691–700. 29. He K, Zhang X, Ren S, et al. : Deep residual learning for image recognition. Proceedings of the IEEE Computer Society Conference on Computer Vision and Pattern Recognition. 2016; 2016-Decem; pp. 770–778. 30. Abadi M, Barham P, Chen J, et al. : TensorFlow: A system for large-scale machine learning. Proceedings of the 12th USENIX Symposium on Operating Systems Design and Implementation, OSDI 2016. 2016; pp. 265–283. 31. Nazish USI, Salam A, Ullah W, et al. : COVID-19 Lung Image Classification Based on Logistic Regression and Support Vector Machine. Lect. Notes Netw. Syst. 2021; 239 : 13–23. Publisher Full Text 32. Zhou NR, Liu XX, Chen YL, et al. : Quantum K-Nearest-Neighbor Image Classification Algorithm Based on K-L Transform. Int. J. Theor. Phys. 2021; 60 : 1209–1224. Publisher Full Text 33. Sivakumar V, Yogesh CK, Vatchala S, et al. : An efficient lung image classification and detection using spiral-optimized Gabor filter with convolutional neural network. Int. J. Imaging Syst. Technol. 2024; 34 : e23013. Publisher Full Text 34. Kim HE, Cosa-Linan A, Santhanam N, et al. : Transfer learning for medical image classification: a literature review. BMC Med. Imaging. 2022; 22 : 1–13. 35. Li M, Liu L, Qi J, et al. : MRI-based machine learning models predict the malignant biological behavior of meningioma. BMC Med. Imaging. 2023; 23 : 1–9. 36. Pedregosa F, Varoquaux G, Gramfort A, et al. : Scikit-learn: Machine learning in Python. J. Mach. Learn. Res. 2011; 12 : 2825–2830. 37. Microsoft Corporation: Welcome to LightGBM’s documentation! — LightGBM 4.0.0 documentation. Website; 2023. Accessed 5 Jul 2024. Reference Source 38. Mzoughi H, Njeh I, Ben SM, et al. : Deep efficient-nets with transfer learning assisted detection of COVID-19 using chest X-ray radiology imaging. Multimed. Tools Appl. 2023; 82 : 39303–39325. PubMed Abstract | Publisher Full Text | Free Full Text 39. Isewon I, Alagbe E, Rotimi S, et al. : A Multi-Omics Classifier For Prediction Of Androgen Deprivation Treatment Response In Prostate Cancer Patients. Proceedings - 2022 IEEE International Conference on Bioinformatics and Biomedicine. BIBM; 2022; 2022 . : 749–752. 40. Hirahara D, Takaya E, Takahara T, et al. : Effects of data count and image scaling on Deep Learning training. PeerJ. Comput. Sci. 2020; 6 : e312–e313. Publisher Full Text 41. Kempster C, Butler G, Kuznecova E, et al. : Fully automated platelet differential interference contrast image analysis via deep learning. Sci. Rep. 2022; 12 : 1–13. 42. Lan G, Gao Z, Tong L, et al. : Class binarization to neuroevolution for multiclass classification. Neural. Comput. Applic. 2022; 34 : 19845–19862. Publisher Full Text 43. Levy JJ, O’Malley AJ: Don’t dismiss logistic regression: The case for sensible extraction of interactions in the era of machine learning. BMC Med. Res. Methodol. 2020; 20 : 171. PubMed Abstract | Publisher Full Text | Free Full Text 44. Javaid M, Haleem A, Pratap Singh R, et al. : Significance of machine learning in healthcare: Features, pillars and applications. Int. J. Intell. Netw. 2022; 3 : 58–73. Publisher Full Text 45. Keras: Keras Applications. Keras.Io; 2022; 1. Accessed 9 Jul 2024. Reference Source 46. ItunuIsewon: ItunuIsewon/Medical-Image-Feature-Extraction: Medical-image-Feature-Extraction (MIFE). Zenodo. 2024. Publisher Full Text Comments on this article Comments (0) Version 1 VERSION 1 PUBLISHED 17 Jan 2025 ADD YOUR COMMENT Comment Author details Author details 1 Department of Computer and Information Sciences, Covenant University, Ota, Ogun State, 112104, Nigeria 2 Covenant Applied Informatics and Communication African Centre of Excellence (CApIC-ACE), Covenant University, Ota, Ogun State, 112104, Nigeria 3 Covenant University Bioinformatics Research (CUBRe), Covenant University, Ota, Ogun State, 112104, Nigeria Itunuoluwa Isewon Roles: Conceptualization, Formal Analysis, Funding Acquisition, Methodology, Resources, Visualization, Writing – Original Draft Preparation, Writing – Review & Editing Emmanuel Alagbe Roles: Formal Analysis, Investigation, Methodology, Software, Validation, Writing – Original Draft Preparation, Writing – Review & Editing Jelili Oyelade Roles: Data Curation, Funding Acquisition, Project Administration, Resources, Supervision, Writing – Original Draft Preparation, Writing – Review & Editing Competing interests No competing interests were disclosed. Grant information This work was supported by funding from the World Bank awarded to Covenant Applied Informatics, Communication Africa Centre of Excellence (CApIC-ACE) through the ACE Impact Project (2019 – 2024) and Covenant University Center for Research, Innovation and Discovery (CUCRID). The funders had no role in study design, data collection and analysis, decision to publish, or preparation of the manuscript. Article Versions (1) version 1 Published: 17 Jan 2025, 14:100 https://doi.org/10.12688/f1000research.156122.1 Copyright © 2025 Isewon I et al . This is an open access article distributed under the terms of the Creative Commons Attribution License , which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited. Download Export To Sciwheel Bibtex EndNote ProCite Ref. Manager (RIS) Sente metrics Views Downloads F1000Research - - PubMed Central info_outline Data from PMC are received and updated monthly. - - Citations open_in_new 0 open_in_new 0 open_in_new SEE MORE DETAILS CITE how to cite this article Isewon I, Alagbe E and Oyelade J. Optimizing machine learning performance for medical imaging analyses in low-resource environments: The prospects of CNN-based Feature Extractors [version 1; peer review: 1 approved with reservations] . F1000Research 2025, 14 :100 ( https://doi.org/10.12688/f1000research.156122.1 ) NOTE: If applicable, it is important to ensure the information in square brackets after the title is included in all citations of this article. COPY CITATION DETAILS track receive updates on this article Track an article to receive email alerts on any updates to this article. TRACK THIS ARTICLE Share Open Peer Review Current Reviewer Status: ? Key to Reviewer Statuses VIEW HIDE Approved The paper is scientifically sound in its current form and only minor, if any, improvements are suggested Approved with reservations A number of small changes, sometimes more significant revisions are required to address specific details and improve the papers academic merit. Not approved Fundamental flaws in the paper seriously undermine the findings and conclusions Version 1 VERSION 1 PUBLISHED 17 Jan 2025 Views 0 Cite How to cite this report: Cheplygina V. Reviewer Report For: Optimizing machine learning performance for medical imaging analyses in low-resource environments: The prospects of CNN-based Feature Extractors [version 1; peer review: 1 approved with reservations] . F1000Research 2025, 14 :100 ( https://doi.org/10.5256/f1000research.171389.r362705 ) The direct URL for this report is: https://f1000research.com/articles/14-100/v1#referee-response-362705 NOTE: it is important to ensure the information in square brackets after the title is included in this citation. Close Copy Citation Details Reviewer Report 24 Feb 2025 Veronika Cheplygina , IT University Copenhagen, Copenhagen, Denmark Approved with Reservations VIEWS 0 https://doi.org/10.5256/f1000research.171389.r362705 The paper presents a benchmarking study of popular/traditional CNNs as feature extractors for medical images, such that the subsequently trained classifiers can be used in low-resource settings. Experiments on eight medical datasets ranging from 800 to 27K patients show that ... Continue reading READ ALL The paper presents a benchmarking study of popular/traditional CNNs as feature extractors for medical images, such that the subsequently trained classifiers can be used in low-resource settings. Experiments on eight medical datasets ranging from 800 to 27K patients show that class balance and dataset size are important for good performance. The paper is clearly written and organized, it is a plus that the results are split up into subsections which already state the conclusion of a particular experiment. While the methods are not what is considered “state of the art” today, I believe it is a valuable contribution to revisit such benchmarks, in particular in low resource settings. There are some aspects of the paper which I think can be improved. 1) Some relevant medical image analysis literature is missing, for example surveys on deep learning, transfer learning, how to deal with the small sample size setting etc. Specifically, transfer learning (of which off-the-shelf feature extraction is one type) is often used in medical imaging because it allows using weights of already pre-trained models for example on ImageNet or RadImageNet, which then requires little fine-tuning, which is still computationally feasible and leads to good results even for small target datasets. 2) Given the low resource setting, I think it would be relevant to explain more about the setting, what kind of resources might be available in a clinic in Nigeria for example. It would be also relevant to contrast the findings to the memory/time requirements be of a fully trained model like a ResNet-50. I do not suggest the authors do such experiments, but one could try to extrapolate from related literature addressing such topics. 3) Too few details about the ML methods (KNN, RF etc.), since several have parameters that need to be either chosen or tuned on the validation set. Is any feature scaling applied? This could have large effects on performance of KNN in particular. 4) Most importantly, the datasets are taken “as-is” and aside from the basic statistics no details are given as to what is being investigated. For example COVID can be easily diagnosed through PCR tests, so a person with complaints about COVID would not be immediately referred for an X-ray. I have checked some of the datasets that are sourced from Kaggle. I believe these are often not the original data sources (the original being for example NIH, ISIC archive, grand-challenge.org or others), and in many cases a description of the data on Kaggle is missing – for example, the demographics of the patients, how many hospitals the data is from etc. The diversity of the dataset is important for understanding the results. It could be worth trying to find the original source, to give proper credit to the data creators (the sharing on Kaggle is often disregarding the dataset license and terms of use). At the least, there should be a description of what the dataset is actually aiming to do. If data in some of these datasets (as happens on Kaggle) is aggregated from multiple other datasets, this can present problems as some images become duplicated, and the presence of images from different sources can introduce shortcut (see recent literature on shortcut learning in medical images). For example if hospital A has more patients with cancer than hospital B, but A and B use different equipment which is visible in the image, then ML can learn that recognizing the equipment is a shortcut for the cancer diagnosis. Looking at the COVID dataset, I see that some images are in PNG and others in JPG format, which would suggest such aggregation. Although, I do believe this shortcut learning issue would be less prevalent in the types of methods that the authors test (because they are more regularized / less prone to overfitting), so it could be relevant to comment on this in the discussion. Is the work clearly and accurately presented and does it cite the current literature? Partly Is the study design appropriate and is the work technically sound? Yes Are sufficient details of methods and analysis provided to allow replication by others? Partly If applicable, is the statistical analysis and its interpretation appropriate? Not applicable Are all the source data underlying the results available to ensure full reproducibility? Yes Are the conclusions drawn adequately supported by the results? Partly Competing Interests: No competing interests were disclosed. Reviewer Expertise: Machine learning, medical imaging I confirm that I have read this submission and believe that I have an appropriate level of expertise to confirm that it is of an acceptable scientific standard, however I have significant reservations, as outlined above. Close READ LESS CITE CITE HOW TO CITE THIS REPORT Cheplygina V. Reviewer Report For: Optimizing machine learning performance for medical imaging analyses in low-resource environments: The prospects of CNN-based Feature Extractors [version 1; peer review: 1 approved with reservations] . F1000Research 2025, 14 :100 ( https://doi.org/10.5256/f1000research.171389.r362705 ) The direct URL for this report is: https://f1000research.com/articles/14-100/v1#referee-response-362705 NOTE: it is important to ensure the information in square brackets after the title is included in all citations of this article. COPY CITATION DETAILS Report a concern Respond or Comment COMMENT ON THIS REPORT Comments on this article Comments (0) Version 1 VERSION 1 PUBLISHED 17 Jan 2025 ADD YOUR COMMENT Comment keyboard_arrow_left keyboard_arrow_right Open Peer Review Reviewer Status info_outline Alongside their report, reviewers assign a status to the article: Approved The paper is scientifically sound in its current form and only minor, if any, improvements are suggested Approved with reservations A number of small changes, sometimes more significant revisions are required to address specific details and improve the papers academic merit. Not approved Fundamental flaws in the paper seriously undermine the findings and conclusions Reviewer Reports Invited Reviewers 1 Version 1 17 Jan 25 read Veronika Cheplygina , IT University Copenhagen, Copenhagen, Denmark Comments on this article All Comments (0) Add a comment Sign up for content alerts Sign Up You are now signed up to receive this alert Browse by related subjects keyboard_arrow_left Back to all reports Reviewer Report 0 Views copyright © 2025 Cheplygina V. This is an open access peer review report distributed under the terms of the Creative Commons Attribution License , which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited. 24 Feb 2025 | for Version 1 Veronika Cheplygina , IT University Copenhagen, Copenhagen, Denmark 0 Views copyright © 2025 Cheplygina V. This is an open access peer review report distributed under the terms of the Creative Commons Attribution License , which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited. format_quote Cite this report speaker_notes Responses (0) Approved With Reservations info_outline Alongside their report, reviewers assign a status to the article: Approved The paper is scientifically sound in its current form and only minor, if any, improvements are suggested Approved with reservations A number of small changes, sometimes more significant revisions are required to address specific details and improve the papers academic merit. Not approved Fundamental flaws in the paper seriously undermine the findings and conclusions The paper presents a benchmarking study of popular/traditional CNNs as feature extractors for medical images, such that the subsequently trained classifiers can be used in low-resource settings. Experiments on eight medical datasets ranging from 800 to 27K patients show that class balance and dataset size are important for good performance. The paper is clearly written and organized, it is a plus that the results are split up into subsections which already state the conclusion of a particular experiment. While the methods are not what is considered “state of the art” today, I believe it is a valuable contribution to revisit such benchmarks, in particular in low resource settings. There are some aspects of the paper which I think can be improved. 1) Some relevant medical image analysis literature is missing, for example surveys on deep learning, transfer learning, how to deal with the small sample size setting etc. Specifically, transfer learning (of which off-the-shelf feature extraction is one type) is often used in medical imaging because it allows using weights of already pre-trained models for example on ImageNet or RadImageNet, which then requires little fine-tuning, which is still computationally feasible and leads to good results even for small target datasets. 2) Given the low resource setting, I think it would be relevant to explain more about the setting, what kind of resources might be available in a clinic in Nigeria for example. It would be also relevant to contrast the findings to the memory/time requirements be of a fully trained model like a ResNet-50. I do not suggest the authors do such experiments, but one could try to extrapolate from related literature addressing such topics. 3) Too few details about the ML methods (KNN, RF etc.), since several have parameters that need to be either chosen or tuned on the validation set. Is any feature scaling applied? This could have large effects on performance of KNN in particular. 4) Most importantly, the datasets are taken “as-is” and aside from the basic statistics no details are given as to what is being investigated. For example COVID can be easily diagnosed through PCR tests, so a person with complaints about COVID would not be immediately referred for an X-ray. I have checked some of the datasets that are sourced from Kaggle. I believe these are often not the original data sources (the original being for example NIH, ISIC archive, grand-challenge.org or others), and in many cases a description of the data on Kaggle is missing – for example, the demographics of the patients, how many hospitals the data is from etc. The diversity of the dataset is important for understanding the results. It could be worth trying to find the original source, to give proper credit to the data creators (the sharing on Kaggle is often disregarding the dataset license and terms of use). At the least, there should be a description of what the dataset is actually aiming to do. If data in some of these datasets (as happens on Kaggle) is aggregated from multiple other datasets, this can present problems as some images become duplicated, and the presence of images from different sources can introduce shortcut (see recent literature on shortcut learning in medical images). For example if hospital A has more patients with cancer than hospital B, but A and B use different equipment which is visible in the image, then ML can learn that recognizing the equipment is a shortcut for the cancer diagnosis. Looking at the COVID dataset, I see that some images are in PNG and others in JPG format, which would suggest such aggregation. Although, I do believe this shortcut learning issue would be less prevalent in the types of methods that the authors test (because they are more regularized / less prone to overfitting), so it could be relevant to comment on this in the discussion. Is the work clearly and accurately presented and does it cite the current literature? Partly Is the study design appropriate and is the work technically sound? Yes Are sufficient details of methods and analysis provided to allow replication by others? Partly If applicable, is the statistical analysis and its interpretation appropriate? Not applicable Are all the source data underlying the results available to ensure full reproducibility? Yes Are the conclusions drawn adequately supported by the results? Partly Competing Interests No competing interests were disclosed. Reviewer Expertise Machine learning, medical imaging I confirm that I have read this submission and believe that I have an appropriate level of expertise to confirm that it is of an acceptable scientific standard, however I have significant reservations, as outlined above. reply Respond to this report Responses (0) Cheplygina V. Peer Review Report For: Optimizing machine learning performance for medical imaging analyses in low-resource environments: The prospects of CNN-based Feature Extractors [version 1; peer review: 1 approved with reservations] . F1000Research 2025, 14 :100 ( https://doi.org/10.5256/f1000research.171389.r362705) NOTE: it is important to ensure the information in square brackets after the title is included in this citation. The direct URL for this report is: https://f1000research.com/articles/14-100/v1#referee-response-362705 Alongside their report, reviewers assign a status to the article: Approved - the paper is scientifically sound in its current form and only minor, if any, improvements are suggested Approved with reservations - A number of small changes, sometimes more significant revisions are required to address specific details and improve the papers academic merit. Not approved - fundamental flaws in the paper seriously undermine the findings and conclusions Adjust parameters to alter display View on desktop for interactive features Includes Interactive Elements View on desktop for interactive features Competing Interests Policy Provide sufficient details of any financial or non-financial competing interests to enable users to assess whether your comments might lead a reasonable person to question your impartiality. Consider the following examples, but note that this is not an exhaustive list: Examples of 'Non-Financial Competing Interests' Within the past 4 years, you have held joint grants, published or collaborated with any of the authors of the selected paper. You have a close personal relationship (e.g. parent, spouse, sibling, or domestic partner) with any of the authors. You are a close professional associate of any of the authors (e.g. scientific mentor, recent student). You work at the same institute as any of the authors. You hope/expect to benefit (e.g. favour or employment) as a result of your submission. You are an Editor for the journal in which the article is published. Examples of 'Financial Competing Interests' You expect to receive, or in the past 4 years have received, any of the following from any commercial organisation that may gain financially from your submission: a salary, fees, funding, reimbursements. You expect to receive, or in the past 4 years have received, shared grant support or other funding with any of the authors. You hold, or are currently applying for, any patents or significant stocks/shares relating to the subject matter of the paper you are commenting on. Stay Updated Sign up for content alerts and receive a weekly or monthly email with all newly published articles Register with F1000Research Already registered? Sign in Not now, thanks close PLEASE NOTE If you are an AUTHOR of this article, please check that you signed in with the account associated with this article otherwise we cannot automatically identify your role as an author and your comment will be labelled as a “User Comment”. If you are a REVIEWER of this article, please check that you have signed in with the account associated with this article and then go to your account to submit your report, please do not post your review here. If you do not have access to your original account, please contact us . All commenters must hold a formal affiliation as per our Policies . The information that you give us will be displayed next to your comment. User comments must be in English, comprehensible and relevant to the article under discussion. We reserve the right to remove any comments that we consider to be inappropriate, offensive or otherwise in breach of the User Comment Terms and Conditions . Commenters must not use a comment for personal attacks. When criticisms of the article are based on unpublished data, the data should be made available. I accept the User Comment Terms and Conditions Please confirm that you accept the User Comment Terms and Conditions. Affiliation ✕ refresh Please enter your institution. Note: To add your institution or organisation, start typing the name and then select the correct name from the list. Where applicable, the name will appear in both the original language and in English. Do not paste in the name. If the name does not appear in the drop-down list, we will display the information you have entered. ✕ refresh Country/Region * USA UK Canada China France Germany Afghanistan Aland Islands Albania Algeria American Samoa Andorra Angola Anguilla Antarctica Antigua and Barbuda Argentina Armenia Aruba Australia Austria Azerbaijan Bahamas Bahrain Bangladesh Barbados Belarus Belgium Belize Benin Bermuda Bhutan Bolivia Bosnia and Herzegovina Botswana Bouvet Island Brazil British Indian Ocean Territory British Virgin Islands Brunei Bulgaria Burkina Faso Burundi Cambodia Cameroon Canada Cape Verde Cayman Islands Central African Republic Chad Chile China Christmas Island Cocos (Keeling) Islands Colombia Comoros Congo Cook Islands Costa Rica Cote d'Ivoire Croatia Cuba Cyprus Czech Republic Democratic Republic of the Congo Denmark Djibouti Dominica Dominican Republic Ecuador Egypt El Salvador Equatorial Guinea Eritrea Estonia Ethiopia Falkland Islands Faroe Islands Federated States of Micronesia Fiji Finland France French Guiana French Polynesia French Southern Territories Gabon Georgia Germany Ghana Gibraltar Greece Greenland Grenada Guadeloupe Guam Guatemala Guernsey Guinea Guinea-Bissau Guyana Haiti Heard Island and Mcdonald Islands Holy See (Vatican City State) Honduras Hong Kong Hungary Iceland India Indonesia Iran Iraq Ireland Israel Italy Jamaica Japan Jersey Jordan Kazakhstan Kenya Kiribati Kosovo (Serbia and Montenegro) Kuwait Kyrgyzstan Lao People's Democratic Republic Latvia Lebanon Lesotho Liberia Libya Liechtenstein Lithuania Luxembourg Macao Madagascar Malawi Malaysia Maldives Mali Malta Marshall Islands Martinique Mauritania Mauritius Mayotte Mexico Minor Outlying Islands of the United States Moldova Monaco Mongolia Montenegro Montserrat Morocco Mozambique Myanmar Namibia Nauru Nepal Netherlands Antilles New Caledonia New Zealand Nicaragua Niger Nigeria Niue Norfolk Island North Korea North Macedonia Northern Mariana Islands Norway Oman Pakistan Palau Palestinian Territory Panama Papua New Guinea Paraguay Peru Philippines Pitcairn Poland Portugal Puerto Rico Qatar Reunion Romania Russian Federation Rwanda Saint Helena Saint Kitts and Nevis Saint Lucia Saint Pierre and Miquelon Saint Vincent and the Grenadines Samoa San Marino Sao Tome and Principe Saudi Arabia Senegal Serbia Seychelles Sierra Leone Singapore Slovakia Slovenia Solomon Islands Somalia South Africa South Georgia and the South Sandwich Is South Korea South Sudan Spain Sri Lanka Sudan Suriname Svalbard and Jan Mayen Swaziland Sweden Switzerland Syria Taiwan Tajikistan Tanzania Thailand The Gambia The Netherlands Timor-Leste Togo Tokelau Tonga Trinidad and Tobago Tunisia Turkey Turkmenistan Turks and Caicos Islands Tuvalu UK USA Uganda Ukraine United Arab Emirates United States Virgin Islands Uruguay Uzbekistan Vanuatu Venezuela Vietnam Wallis and Futuna West Bank and Gaza Strip Western Sahara Yemen Zambia Zimbabwe Please select your country/region. You must enter a comment. Competing Interests Please disclose any competing interests that might be construed to influence your judgment of the article's or peer review report's validity or importance. Competing Interests Policy Provide sufficient details of any financial or non-financial competing interests to enable users to assess whether your comments might lead a reasonable person to question your impartiality. Consider the following examples, but note that this is not an exhaustive list: Examples of 'Non-Financial Competing Interests' Within the past 4 years, you have held joint grants, published or collaborated with any of the authors of the selected paper. You have a close personal relationship (e.g. parent, spouse, sibling, or domestic partner) with any of the authors. You are a close professional associate of any of the authors (e.g. scientific mentor, recent student). You work at the same institute as any of the authors. You hope/expect to benefit (e.g. favour or employment) as a result of your submission. You are an Editor for the journal in which the article is published. Examples of 'Financial Competing Interests' You expect to receive, or in the past 4 years have received, any of the following from any commercial organisation that may gain financially from your submission: a salary, fees, funding, reimbursements. You expect to receive, or in the past 4 years have received, shared grant support or other funding with any of the authors. You hold, or are currently applying for, any patents or significant stocks/shares relating to the subject matter of the paper you are commenting on. Please state your competing interests The comment has been saved. An error has occurred. Please try again. Cancel Post var lTitle = "Optimizing machine learning performance for...".replace("'", ''); var linkedInUrl = "http://www.linkedin.com/shareArticle?url=https://f1000research.com/articles/14-100/v1" + "&title=" + encodeURIComponent(lTitle) + "&summary=" + encodeURIComponent('Read the article by '); var deliciousUrl = "https://del.icio.us/post?url=https://f1000research.com/articles/14-100/v1&title=" + encodeURIComponent(lTitle); var redditUrl = "http://reddit.com/submit?url=https://f1000research.com/articles/14-100/v1" + "&title=" + encodeURIComponent(lTitle); linkedInUrl += encodeURIComponent('Isewon I et al.'); var offsetTop = /chrome/i.test( navigator.userAgent ) ? 4 : -10; var addthis_config = { ui_offset_top: offsetTop, services_compact : "facebook,twitter,www.linkedin.com,www.mendeley.com,reddit.com", services_expanded : "facebook,twitter,www.linkedin.com,www.mendeley.com,reddit.com", services_custom : [ { name: "LinkedIn", url: linkedInUrl, icon:"/img/icon/at_linkedin.svg" }, { name: "Mendeley", url: "http://www.mendeley.com/import/?url=https://f1000research.com/articles/14-100/v1/mendeley", icon:"/img/icon/at_mendeley.svg" }, { name: "Reddit", url: redditUrl, icon:"/img/icon/at_reddit.svg" }, ] }; var addthis_share = { url: "https://f1000research.com/articles/14-100", templates : { twitter : "Optimizing machine learning performance for medical imaging analyses.... Isewon I et al., published by " + "@F1000Research" + ", https://f1000research.com/articles/14-100/v1" } }; if (typeof(addthis) != "undefined"){ addthis.addEventListener('addthis.ready', checkCount); addthis.addEventListener('addthis.menu.share', checkCount); } $(".f1r-shares-twitter").attr("href", "https://twitter.com/intent/tweet?text=" + addthis_share.templates.twitter); $(".f1r-shares-facebook").attr("href", "https://www.facebook.com/sharer/sharer.php?u=" + addthis_share.url); $(".f1r-shares-linkedin").attr("href", addthis_config.services_custom[0].url); $(".f1r-shares-reddit").attr("href", addthis_config.services_custom[2].url); $(".f1r-shares-mendelay").attr("href", addthis_config.services_custom[1].url); function checkCount(){ setTimeout(function(){ $(".addthis_button_expanded").each(function(){ var count = $(this).text(); if (count !== "" && count != "0") $(this).removeClass("is-hidden"); else $(this).addClass("is-hidden"); }); }, 1000); } close How to cite this report {{reportCitation}} Cancel Copy Citation Details $(function(){R.ui.buttonDropdowns('.dropdown-for-downloads');}); $(function(){R.ui.toolbarDropdowns('.toolbar-dropdown-for-downloads');}); $.get("/articles/acj/156122/171389") new F1000.Clipboard(); new F1000.ThesaurusTermsDisplay("articles", "article", "171389"); $(document).ready(function() { $( "#frame1" ).on('load', function() { var mydiv = $(this).contents().find("div"); var h = mydiv.height(); console.log(h) }); var tooltipLivingFigure = jQuery(".interactive-living-figure-label .icon-more-info"), titleLivingFigure = tooltipLivingFigure.attr("title"); tooltipLivingFigure.simpletip({ fixed: true, position: ["-115", "30"], baseClass: 'small-tooltip', content:titleLivingFigure + " " }); tooltipLivingFigure.removeAttr("title"); $("body").on("click", ".cite-living-figure", function(e) { e.preventDefault(); var ref = $(this).attr("data-ref"); $(this).closest(".living-figure-list-container").find("#" + ref).fadeIn(200); }); $("body").on("click", ".close-cite-living-figure", function(e) { e.preventDefault(); $(this).closest(".popup-window-wrapper").fadeOut(200); }); $(document).on("mouseup", function(e) { var metricsContainer = $(".article-metrics-popover-wrapper"); if (!metricsContainer.is(e.target) && metricsContainer.has(e.target).length === 0) { $(".article-metrics-close-button").click(); } }); var articleId = $('#articleId').val(); if($("#main-article-count-box").attachArticleMetrics) { $("#main-article-count-box").attachArticleMetrics(articleId, { articleMetricsView: true }); } }); var figshareWidget = $(".new_figshare_widget"); if (figshareWidget.length > 0) { window.figshare.load("f1000", function(Widget) { // Select a tag/tags defined in your page. In this tag we will place the widget. _.map(figshareWidget, function(el){ var widget = new Widget({ articleId: $(el).attr("figshare_articleId") //height:300 // this is the height of the viewer part. [Default: 550] }); widget.initialize(); // initialize the widget widget.mount(el); // mount it in a tag that's on your page // this will save the widget on the global scope for later use from // your JS scripts. This line is optional. //window.widget = widget; }); }); } close Error Close Add Reset F1000.MICROSERVICES.AFFILIATION = ''; $(document).ready(function () { $('.js-affiliations-form').each((index, form) => { new AffiliationForm({ formId: form.id, institutionErrorSelector: '.comment-enter-institution', departmentErrorSelector: '.comment-enter-department', placeSelector: '.js-add-comment-place', stateSelector: '.js-add-comment-state', zipCodeSelector: '.js-add-comment-zipcode', countrySelector: '.js-add-comment-country', countryErrorSelector: '.comment-enter-country', }); }); }); $(document).ready(function () { var reportIds = { "416518": 0, "416519": 0, "416516": 0, "416517": 0, "416514": 0, "416515": 0, "364173": 0, "364172": 0, "364175": 0, "364174": 0, "416522": 0, "416520": 0, "364171": 0, "416521": 0, "364170": 0, "369173": 0, "369175": 0, "369174": 0, "364177": 0, "364176": 0, "364179": 0, "364178": 0, "369181": 0, "369180": 0, "369182": 0, "369177": 0, "369176": 0, "369179": 0, "369178": 0, "362701": 0, "362703": 0, "362702": 0, "362709": 0, "362708": 0, "362710": 0, "362705": 9, "362704": 0, "362707": 0, "362706": 0, "367085": 0, "367084": 0, "367087": 0, "367086": 0, "405739": 0, "367083": 0, "367082": 0, "365429": 0, "365428": 0, "365431": 0, "365430": 0, "367089": 0, "367088": 0, "367091": 0, "367090": 0, "365437": 0, "365436": 0, "365433": 0, "365432": 0, "365435": 0, "365434": 0, }; $(".referee-response-container,.js-referee-report").each(function(index, el) { var reportId = $(el).attr("data-reportid"), reportCount = reportIds[reportId] || 0; $(el).find(".comments-count-container,.js-referee-report-views").html(reportCount); }); var uuidInput = $("#article_uuid"), oldUUId = uuidInput.val(), newUUId = "2103d80b-3ae1-4880-ac62-08d4fb7f39b1"; uuidInput.val(newUUId); $("a[href*='article_uuid=']").each(function(index, el) { var newHref = $(el).attr("href").replace(oldUUId, newUUId); $(el).attr("href", newHref); }); }); An innovative open access publishing platform offering rapid publication and open peer review, whilst supporting data deposition and sharing. Browse Gateways Collections How it Works Contact For Developers Cookie Notice Privacy Notice RSS Submit Your Research Follow us © 2012-2026 F1000 Research Ltd. ISSN 2046-1402 | Legal | Partner of Research4Life • CrossRef • ORCID • FAIRSharing R.templateTests.simpleTemplate = R.template(' $text $text $text $text $text '); R.templateTests.runTests(); var F1000platform = new F1000.Platform({ name: "f1000research", displayName: "F1000Research", hostName: "f1000research.com", id: "1", editorialEmail: "[email protected]", infoEmail: "[email protected]", usePmcStats: true }); $(function(){R.ui.dropdowns('.dropdown-for-authors, .dropdown-for-about, .dropdown-for-myresearch');}); // $(function(){R.ui.dropdowns('.dropdown-for-referees');}); $(document).ready(function () { if ($(".cookie-warning").is(":visible")) { $(".sticky").css("margin-bottom", "35px"); $(".devices").addClass("devices-and-cookie-warning"); } $(".cookie-warning .close-button").click(function (e) { $(".devices").removeClass("devices-and-cookie-warning"); $(".sticky").css("margin-bottom", "0"); }); $("#tweeter-feed .tweet-message").each(function (i, message) { var self = $(message); self.html(linkify(self.html())); }); $(".partner").on("mouseenter mouseleave", function() { $(this).find(".gray-scale, .colour").toggleClass("is-hidden"); }); }); Sign In Remember me Forgotten your password? Sign In Cancel Email or password not correct. Please try again Please wait... $(function(){ // Note: All the setup needs to run against a name attribute and *not* the id due the clonish // nature of facebox... $("a[id=googleSignInButton]").click(function(event){ event.preventDefault(); $("input[id=oAuthSystem]").val("GOOGLE"); $("form[id=oAuthForm]").submit(); }); $("a[id=facebookSignInButton]").click(function(event){ event.preventDefault(); $("input[id=oAuthSystem]").val("FACEBOOK"); $("form[id=oAuthForm]").submit(); }); $("a[id=orcidSignInButton]").click(function(event){ event.preventDefault(); $("input[id=oAuthSystem]").val("ORCID"); $("form[id=oAuthForm]").submit(); }); }); If you've forgotten your password, please enter your email address below and we'll send you instructions on how to reset your password. The email address should be the one you originally registered with F1000. Email address not valid, please try again You registered with F1000 via Google, so we cannot reset your password. To sign in, please click here . If you still need help with your Google account password, please click here . You registered with F1000 via Facebook, so we cannot reset your password. To sign in, please click here . If you still need help with your Facebook account password, please click here . Code not correct, please try again Reset password Cancel Email us for further assistance. Server error, please try again. If your email address is registered with us, we will email you instructions to reset your password. If you think you should have received this email but it has not arrived, please check your spam filters and/or contact for further assistance. Please wait... Register $(document).ready(function () { signIn.createSignInAsRow($("#sign-in-form-gfb-popup")); $(".target-field").each(function () { var uris = $(this).val().split("/"); if (uris.pop() === "login") { $(this).val(uris.toString().replace(",","/")); } }); });

Text is read by the "Ask this paper" AI Q&A widget below. Extraction quality varies by source — PMC NXML preserves structure cleanly, OA-HTML may include some navigation residue, and OA-PDF can have broken hyphenation. The publisher copy (via DOI) is the canonical version.

My notes (saved in your browser only)

Ask this paper AI returns verbatim quotes from the full text · source: preprint-html

Answers must be backed by verbatim quotes from this paper's full text. Hallucinated quotes are dropped automatically; if no verbatim passage answers the question, we say so. How this works

Citation neighborhood (no data yet)

We don't have any in-corpus citations linked to this paper yet. This is a recent paper (2025) — citers typically take a year or two to land, and the OpenAlex reference graph may still be filling in.

Source provenance

europepmc
last seen: 2026-05-20T01:45:00.602351+00:00