From 0c3a6665021900cbe90eaee0fd364fc00632a576 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Nicolas <6371790+pynicolas@users.noreply.github.com> Date: Thu, 29 May 2025 21:02:00 +0200 Subject: [PATCH] Switch to a pytorch-based model detecting documents --- .../main/assets/IMG_20250329_132414_900.jpg | Bin 0 -> 81429 bytes .../myscan/ImageSegmentationService.kt | 92 ++++++++++++------ .../java/org/mydomain/myscan/MainViewModel.kt | 14 +-- 3 files changed, 64 insertions(+), 42 deletions(-) create mode 100644 app/src/main/assets/IMG_20250329_132414_900.jpg diff --git a/app/src/main/assets/IMG_20250329_132414_900.jpg b/app/src/main/assets/IMG_20250329_132414_900.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a41867f1debf1152fd464b4569fed8fe1f2afbe1 GIT binary patch literal 81429 zcmbTdcU)7!(>EGIOHd#Qpb&ZzIw~cA^bijrbm>Jwnlw@A2r2{!8jzBJNbkKVRY6ff zkt!Wgii-4V14I<%9)HjCy!XBLulwH3=fLKi-I>|h-PxJ%`oP!{YNQNW`6B84J z41OSopM*p8ulaaFAclsr5E$fN;Q}u>fqjXu7yX$QsZvjro|_urrk}ymywy3U0hOHR$ftARo&Rs-16{I zYun=&FS}lK_w@GlkBv{fnSA?hYWmas!s62M%Iezsx9{6KyFd1R?*IBXE+%kN|EK)d z!2Vz3LW1Lhvam3-u>Ttu6EqCGn2{{3;)-l2Jqvc%03M7|G>n(XC~D}0W0ftx^0@_$ zava0qKS_N1H?;qZ?El-qV*Y=P?0*gH{~p&g z%!Ej~vd(LS-i6OA3H0L)UlRO-dUi{7uW|JheU@p{OqgT)8+^1LcU0lspq5awfuEXp+p`=BdcWIxiZ+Y{pRc8C|M5n6Y3&XRCAg~3-49sxA+IoU z_g*RXr+v>Wrl{9%P}C2q=HzZpQ;<7lN12wJkqVaF5&5UR=#iggME|^ztf>(_d$Xox z^wxVNrbLwTes-lnR+@TXNsh7H6ioDD-t#$@@f@S4e+4z8cM{(Qz&eNP9NAia$h8$b z^eW)gJmoPKUtRm~UFJH6Wa=stKWFQP1K^D|r2 zT3S>b-tl~`m+JTJAyxFwSD%j2-H=)BC!66h=g!|dvS{3#Od7YU%Uclr`6F|Ia-%U& zS9T|i;YJ+tFR7}i>oVe6Y+RfzSf00`@LyIk9hmhcUfj>TnkgrMWIe{k}%*%Imd*6muWT&ZIuuTb! zY`_kkGkD|L{TogbeJ}Vt;}GIl@^|nVE~S3fYg+OU!m%^rs}SjX!6qf(kLwSu{&U7T z{#qM8m|d%D37iE&_`C=R|__ZaH$_3S9jKz7wg0nhmGrd#Y;> zKkoKLrTbrs+q?gx<8o8MR(I8BUo4>DZFnK_ciO}bE zjd?ON(>_D_>Th|3W-CZShFU?WtVX^Y5pexHL{#rOflKcnLx84DXo+ zxJ6>`-+lqr>yX!1DKYSi8Q3Xt%UyB`=r+LIt-U7t^vwD06^S0-i2U3DiH*Na)X{rw`}xA_=VivP^R!4+wYSpe>~rt=;4s%>~x^GS!5m(2e!|Nh0IvocC5{ z4t(2>yTZ5mD7vcGnNrqLChN+kdH7dOtpyWwjb$jad0Bi9Zk2Ki{x5bzf()zs^!s&)4=~9*2O1ek?2KPzO zwTLSH885$$xcpB3x%(@O%b;M3Ln-E@;oLp#YdgYEua96%8+(P#O*=xiUYW2^+<9MW z`PV$jtI0P!kp69av&s$0BS7pn*-_``-|IW5qWrL%R??+KDO%wO$_-YjB=xP7Lx_`I z!lxx_a|1su1LCEA_8t2-e%&O;p?N?#Eh674M1HSHtA>E^_i)+Na!I(c-r1 z(X}w)$QQq${POLYH+K68+qdJmW&Ll~jJ4#d-ToYSP2p|MWw%HNcF_;Ztqr;;jmjJH zw_QmPMvC(-#v|tbM~mDWR`dEpq?<;$6CN_!b}29F)zkx$cjnmLO?W?9v*x%yUY5|F zjnepn(c<_d-}Ivwva)yQVB>KLh4nJIzvy&=YOgFz3u%7t+8HRqLnt9h=*kS^$$jnW z5S4~_*;k@_zBcii90@Xf6G|)W6K)km4bN;Ioc-H6qe{hzUlV#0h&BOj*^p|9lp~*g z^)CdO@X321JJ~Yhrt+8bma4S2jaaqyp-7iRit67MOeg>Q?|(kGkJBNtdM0N8Sitwc z&7fpL51gC78Jn=d+~23RCu@ws+-J=`R7{q#XPayj6428ResIq3T#!yF3(rK60=Yg- zKh->U2%$@S*4Q_7_7tYqM0BHCXVbFJ%|JQK6Lw(PXR zZXJUm8(#4KkIyFulVmK@yTF$Mr`JqT#p$!_O8!a#X;yG#X5~d3lFn^ZY)F3|DH}4R z@i(1`DdhupHQ;RBM5O6!>UpLsWY_ogO#3$@7S=fxkADrToPE!|Q{|p0`zes!`E(@$ z+6yErRm2#y7;PIs%#}i&J|nNO%SUkC?IMeFjFFYw6R&)U9*L~juCmqraAo$rg1QPU zTkRhCn5Pn{uyM|xD`4i`o4fosyNM*lM~OFmij=Ia)}v$tt6Y>K6tz<7WEsiDc>;p$ zm@LfPufKOYgx%E{nHj@k{_wSqHOm+c53jN8%_k8l?Yemikcx11d{El(n)$5qgjLx6 zYp%m)-be$h{dV1;*0h|Uw4Zj_RAx>7m2s6dN5&x}A#&yK)0snv-UC&ep=&E26BfEY zC%5aocF&D%i*((Xq$@8l-O}`!Xh$$hD)zoo?tkB(u4@HaLJV(&XvcVuFn`KkoC0?Q z-Rtdk9b{zmdx&%+)7*FNhWo82&vGo`_44#1Enehbs&!^psnbsMy&`(iRw%!fWua2I zy6fy^LRnu&w+~ObZ}6I9iDFE*q~bA�$Y`AKz}+Vp@Q(5K-lNPxTE7`%al-o^L## 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
IEPdSw-V>GVX$Cj|(OY%$iiug~g zwtV7_5lC^qO-R7@QIjrIwezk3?(rMyumRk;NW)5`d7638^b;G2I|HoCn)NdkV%~X{ zCSiR~c$dQ~Ws=Uc!E2M=CF@K|(MkzqyBcCER4=R2T;t9o#HwLO46^ciM7d@LJ7VdhUfFdSH@)23zV(AbLQT zdp@x)0awIU7t-nva6WedSvBers#d+}BT%7DzhnSVuUNLRt_ot{LT>LW&6M*sE{*r= z1t6^>Od*|AIA3;S62>$6Lw+rWzvNo5mrzd3yOSz9pV@FCHg|5n5iGskC7nLz1`>T% zy*1W53vdAQjnGs~*?WDcIvv1&D1*gXaVpa`KGBtdtf$QV#1T|%s@#k+mNixmiFfS8 z9aZ87;Fg5bd5$k^La#4$664f>YLKz9O63IxiQWa-C>D|y*ui?-QE-AIY(qt)72DDS zj>#*kc1E3$D`~zWCQ+B1RKu?iyPu!0tT$!jIh=^lMaaVVhVoE2T|A`(+q|oGH03=f5;`zOSI!d4R_~;0+~VSjk$X((9^}Q}(bfZm z4<=^j$A%`r_B58&seG7>8GU8|j+T)LO?GAbhtZd~PBi+?0*368g%~4K}MG^hJSp4rRy~!0?z_jl z2)d9>oKB__h*<<2!?j|%$_hyBps2tps(M9aV~)9%Op-DxqF~vy<;PMA?44s&ZL|?( z!3d=t$N({WL#vgal(4JG21N_#LsVKs3hl&M5NBut&`z (pixel shr 16 and 0xFF) // R + 1 -> (pixel shr 8 and 0xFF) // G + 2 -> (pixel and 0xFF) // B + else -> 0 + } + val normalized = (value / 255f - mean[c]) / std[c] + buffer.put(normalized) + } + } + } + + buffer.rewind() + return buffer + } + + private fun processOutputBuffer(outputBuffer: FloatBuffer, w: Int, h: Int, c: Int): Segmentation { outputBuffer.rewind() val inferenceData = InferenceData(width = w, height = h, channels = c, buffer = outputBuffer) @@ -116,15 +148,15 @@ class ImageSegmentationService(private val context: Context) { val mask = ByteBuffer.allocateDirect(inferenceData.width * inferenceData.height) for (i in 0 until inferenceData.height) { for (j in 0 until inferenceData.width) { - val offset = inferenceData.channels * (i * inferenceData.width + j) - var maxIndex = 0 - var maxValue = inferenceData.buffer.get(offset) + var maxValue = inferenceData.buffer.get(i * inferenceData.width + j) - for (index in 1 until inferenceData.channels) { - if (inferenceData.buffer.get(offset + index) > maxValue) { - maxValue = inferenceData.buffer.get(offset + index) - maxIndex = index + for (c in 1 until inferenceData.channels) { + val value = inferenceData.buffer.get( + c * inferenceData.height * inferenceData.width + i * inferenceData.width + j) + if (value > maxValue) { + maxValue = value + maxIndex = c } } @@ -164,4 +196,4 @@ class ImageSegmentationService(private val context: Context) { val channels: Int, val buffer: FloatBuffer, ) -} \ No newline at end of file +} diff --git a/app/src/main/java/org/mydomain/myscan/MainViewModel.kt b/app/src/main/java/org/mydomain/myscan/MainViewModel.kt index ce8bbfd..1caec79 100644 --- a/app/src/main/java/org/mydomain/myscan/MainViewModel.kt +++ b/app/src/main/java/org/mydomain/myscan/MainViewModel.kt @@ -1,6 +1,7 @@ package org.mydomain.myscan import android.content.Context +import android.graphics.Bitmap import android.util.Log import androidx.camera.core.ImageProxy import androidx.lifecycle.ViewModel @@ -34,7 +35,7 @@ class MainViewModel(private val imageSegmentationService: ImageSegmentationServi .filterNotNull() .map { UiState( - "Found ${numberOfObjectsDetected(it.segmentation)} objects!", + "Inference done", it.inferenceTime, it.segmentation.toBitmap()) } @@ -45,18 +46,7 @@ class MainViewModel(private val imageSegmentationService: ImageSegmentationServi } } - fun numberOfObjectsDetected(segmentation: ImageSegmentationService.Segmentation) : Int { - val tensor = segmentation.mask; - val buffer = tensor.buffer - val uniqueValues = HashSet() - for (i in 0..tensor.width * tensor.height - 1) { - uniqueValues.add(buffer[i].toInt()) - } - return uniqueValues.size - 1; - } - fun segment(imageProxy: ImageProxy) { - Log.d("MyScan", "MainViewModel.Calling segment") viewModelScope.launch { imageSegmentationService.runSegmentation( imageProxy.toBitmap(),