minivision-ai / silent-face-anti-spoofing-apk Goto Github PK
View Code? Open in Web Editor NEWLicense: Apache License 2.0
License: Apache License 2.0
I have used this code in my project's custom library module and created a dependency of that custom library module. However, when I try to integrate that dependency into another project, I encounter an error related to OpenCV library conflicts with another library also using OpenCV. Could you please suggest what needs to be done in this case?
That error is:
2 files found with path 'lib/arm64-v8a/libopencv_core.so' from inputs:
I meet an error when open project on Android Studio "Unresolved reference: BR". Can you help me how to fix this?
so i tested it on Redmi Pad SE, and i need to change the display orientation from potrait to landscape. On Potrait mode, the detection is working properly. But, suddenly when i change it to landscape, the detection is not working properly, so it will give the results fake face while the face is already on the frame. how to fix this?
binding issues
对着iMac 5K 高清屏幕显示为真人
Hi @zhuyingSeu,
thank your project.
I have a question: Does face detection in this project support detecting landmarks?
下载了代码测试,在手机上跑起来后,效果还不错。
同一份APK安装到RK3288板子上,USB摄像头,能跑起来,但是活体置信度就非常的不准确了。
影响这个效果的原因是什么?像素?分辨率?画面?比例?还是其他?
I'm trying to integrate this with my face recognition application.
The Face detection and Live detection is not working. I'm using CameraX api.
It's throwing exception "Invalid yuv data"
Base on your model, we have already a flutter plugin for support both iOS & android to anti spoofing. Our company saved a lot of money. Thanks minivisioun-ai for yours support.
Hope this help some one https://github.com/TnexTechnology/TnexEkyc
活体检测是在人脸检测后,截取的人脸区域进行是否是活体,还是怎么检测的?
您好,我最近在尝试从openCV的源代码编译得到libopencv_*.so,编译似乎是成功了,但是替换掉当前repo里面的文件,就会报错。
能介绍一下当前repo里面的*.so文件是如何编译得到的吗?多谢🙏
请问一下,能否提供java版本呢?
如何同时识别多张人脸状态呢
Hello,
Thank you for developing the open-source silent anti-spoofing project! I'm currently working on integrating it into my application and have successfully fine-tuned your base models (versions 2.7_80x80_MiniFASNetV2.pth and 4_0_0_80x80_MiniFASNetV1SE.pth) by modifying the code.
To deploy these models on Android and iOS devices, I need them in a binary format. While you offer pre-built binaries for the base models, I'd like to convert my fine-tuned weights for optimal performance. Unfortunately, converting them myself with Caffe seems impractical as the framework hasn't received updates since 2020. I have tried to convert pth -> caffe -> ncnn but this solution works for the first model (2.7_80x80_MiniFASNetV2.pth), it's not compatible with the second model (4_0_0_80x80_MiniFASNetV1SE.pth). This is because the second model uses an SE module, which is not supported by the Pytorch2Caffe library.
I would greatly appreciate your assistance in converting our fine-tuned weights into a binary format suitable for mobile deployment. Since the conversion code isn't publicly available, any guidance or support would be extremely helpful.
In project, orientation config when detect liveness default isquals 7.
Do I need to change it in another case? Ex: camera front/back
Hi,
Thanks for sharing this awesome repo.
However, the whole repo is big (about 50M) to be git cloned, and building its APK also cost some time.
If convenient, I suggest release apk in the github release page.
Thanks.
Hi.
I was manually converting the anti spoof pth models given here into bin and param files (i.e. ncnn format) after referring to #3 issue, and following these steps.
However, the architecture of my onnx/param files is different from the actual param files given here
This is the param file given in the repo:
model_2.param
And this is my param file architecture:
ncnn_07Apr.zip
And I checked the architectures on https://netron.app/
And they're clearly different.
And the original APK script is running fine with the original models, but crashes with the new ones.
No traceback or warning or error is displayed upon crashing. There is nothing in the logs.
Would you have any idea why that might be?
Any insight is appreciated.
Thanks.
你好,编译的时候一直报这个错
2 files found with path 'lib/arm64-v8a/libopencv_core.so'.
请问有办法解决吗?~谢谢~
Hi @zhuyingSeu,
thank your project.
I have a question: can i convert detect image in bitmap
Execution failed for task ':app:kaptDebugKotlin'.
A failure occurred while executing org.jetbrains.kotlin.gradle.internal.KaptExecution
java.lang.reflect.InvocationTargetException (no error message)
Try:
Run with --stacktrace option to get the stack trace. Run with --scan to get full insights.
Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:kaptDebugKotlin'.
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$3.accept(ExecuteActionsTaskExecuter.java:166)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$3.accept(ExecuteActionsTaskExecuter.java:163)
at org.gradle.internal.Try$Failure.ifSuccessfulOrElse(Try.java:191)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:156)
at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:62)
at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:108)
at org.gradle.api.internal.tasks.execution.ResolveBeforeExecutionOutputsTaskExecuter.execute(ResolveBeforeExecutionOutputsTaskExecuter.java:67)
at org.gradle.api.internal.tasks.execution.ResolveAfterPreviousExecutionStateTaskExecuter.execute(ResolveAfterPreviousExecutionStateTaskExecuter.java:46)
at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:94)
at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)
at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:95)
at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)
at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:56)
at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:416)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:406)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:102)
at org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52)
at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:43)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:355)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:343)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:336)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:322)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker$1.execute(DefaultPlanExecutor.java:134)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker$1.execute(DefaultPlanExecutor.java:129)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:202)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:193)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:129)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
Caused by: org.gradle.workers.internal.DefaultWorkerExecutor$WorkExecutionException: A failure occurred while executing org.jetbrains.kotlin.gradle.internal.KaptExecution
at org.gradle.workers.internal.DefaultWorkerExecutor$WorkItemExecution.waitForCompletion(DefaultWorkerExecutor.java:375)
at org.gradle.internal.work.DefaultAsyncWorkTracker.waitForItemsAndGatherFailures(DefaultAsyncWorkTracker.java:142)
at org.gradle.internal.work.DefaultAsyncWorkTracker.access$000(DefaultAsyncWorkTracker.java:34)
at org.gradle.internal.work.DefaultAsyncWorkTracker$1.run(DefaultAsyncWorkTracker.java:106)
at org.gradle.internal.Factories$1.create(Factories.java:26)
at org.gradle.internal.work.DefaultWorkerLeaseService.withoutLocks(DefaultWorkerLeaseService.java:260)
at org.gradle.internal.work.DefaultWorkerLeaseService.withoutProjectLock(DefaultWorkerLeaseService.java:171)
at org.gradle.internal.work.DefaultWorkerLeaseService.withoutProjectLock(DefaultWorkerLeaseService.java:165)
at org.gradle.internal.work.StopShieldingWorkerLeaseService.withoutProjectLock(StopShieldingWorkerLeaseService.java:95)
at org.gradle.internal.work.DefaultAsyncWorkTracker.waitForItemsAndGatherFailures(DefaultAsyncWorkTracker.java:102)
at org.gradle.internal.work.DefaultAsyncWorkTracker.waitForAll(DefaultAsyncWorkTracker.java:80)
at org.gradle.internal.work.DefaultAsyncWorkTracker.waitForCompletion(DefaultAsyncWorkTracker.java:68)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$5.run(ExecuteActionsTaskExecuter.java:484)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:402)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:394)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:92)
at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:461)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:444)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.access$200(ExecuteActionsTaskExecuter.java:93)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$TaskExecution.execute(ExecuteActionsTaskExecuter.java:237)
at org.gradle.internal.execution.steps.ExecuteStep.lambda$execute$0(ExecuteStep.java:32)
at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:32)
at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:26)
at org.gradle.internal.execution.steps.CleanupOutputsStep.execute(CleanupOutputsStep.java:58)
at org.gradle.internal.execution.steps.CleanupOutputsStep.execute(CleanupOutputsStep.java:35)
at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:48)
at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:33)
at org.gradle.internal.execution.steps.CancelExecutionStep.execute(CancelExecutionStep.java:39)
at org.gradle.internal.execution.steps.TimeoutStep.executeWithoutTimeout(TimeoutStep.java:73)
at org.gradle.internal.execution.steps.TimeoutStep.execute(TimeoutStep.java:54)
at org.gradle.internal.execution.steps.CatchExceptionStep.execute(CatchExceptionStep.java:35)
at org.gradle.internal.execution.steps.CreateOutputsStep.execute(CreateOutputsStep.java:51)
at org.gradle.internal.execution.steps.SnapshotOutputsStep.execute(SnapshotOutputsStep.java:45)
at org.gradle.internal.execution.steps.SnapshotOutputsStep.execute(SnapshotOutputsStep.java:31)
at org.gradle.internal.execution.steps.CacheStep.executeWithoutCache(CacheStep.java:208)
at org.gradle.internal.execution.steps.CacheStep.execute(CacheStep.java:70)
at org.gradle.internal.execution.steps.CacheStep.execute(CacheStep.java:45)
at org.gradle.internal.execution.steps.BroadcastChangingOutputsStep.execute(BroadcastChangingOutputsStep.java:49)
at org.gradle.internal.execution.steps.StoreSnapshotsStep.execute(StoreSnapshotsStep.java:43)
at org.gradle.internal.execution.steps.StoreSnapshotsStep.execute(StoreSnapshotsStep.java:32)
at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:38)
at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:24)
at org.gradle.internal.execution.steps.SkipUpToDateStep.executeBecause(SkipUpToDateStep.java:96)
at org.gradle.internal.execution.steps.SkipUpToDateStep.lambda$execute$0(SkipUpToDateStep.java:89)
at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:54)
at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:38)
at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:76)
at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:37)
at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:36)
at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:26)
at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:90)
at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:48)
at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:69)
at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:47)
at org.gradle.internal.execution.impl.DefaultWorkExecutor.execute(DefaultWorkExecutor.java:33)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:140)
... 34 more
Caused by: java.lang.reflect.InvocationTargetException
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at org.jetbrains.kotlin.gradle.internal.KaptExecution.run(KaptWithoutKotlincTask.kt:158)
at org.gradle.workers.internal.AdapterWorkAction.execute(AdapterWorkAction.java:50)
at org.gradle.workers.internal.DefaultWorkerServer.execute(DefaultWorkerServer.java:47)
at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1$1.create(NoIsolationWorkerFactory.java:65)
at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1$1.create(NoIsolationWorkerFactory.java:61)
at org.gradle.internal.classloader.ClassLoaderUtils.executeInClassloader(ClassLoaderUtils.java:98)
at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1.execute(NoIsolationWorkerFactory.java:61)
at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:44)
at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:41)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:416)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:406)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:102)
at org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36)
at org.gradle.workers.internal.AbstractWorker.executeWrappedInBuildOperation(AbstractWorker.java:41)
at org.gradle.workers.internal.NoIsolationWorkerFactory$1.execute(NoIsolationWorkerFactory.java:56)
at org.gradle.workers.internal.DefaultWorkerExecutor$3.call(DefaultWorkerExecutor.java:215)
at org.gradle.workers.internal.DefaultWorkerExecutor$3.call(DefaultWorkerExecutor.java:210)
at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runExecution(DefaultConditionalExecutionQueue.java:215)
at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runBatch(DefaultConditionalExecutionQueue.java:164)
at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.run(DefaultConditionalExecutionQueue.java:131)
... 3 more
Caused by: java.util.ServiceConfigurationError: javax.annotation.processing.Processor: android.databinding.annotationprocessor.ProcessDataBinding Unable to get public no-arg constructor
at kotlin.collections.CollectionsKt___CollectionsKt.toCollection(_Collections.kt:1200)
at kotlin.collections.CollectionsKt___CollectionsKt.toMutableList(_Collections.kt:1233)
at kotlin.collections.CollectionsKt___CollectionsKt.toList(_Collections.kt:1224)
at org.jetbrains.kotlin.kapt3.base.ProcessorLoader.doLoadProcessors(ProcessorLoader.kt:80)
at org.jetbrains.kotlin.kapt3.base.ProcessorLoader.loadProcessors(ProcessorLoader.kt:45)
at org.jetbrains.kotlin.kapt3.base.Kapt.kapt(Kapt.kt:42)
... 29 more
Caused by: java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException
... 35 more
Caused by: java.lang.ClassNotFoundException: javax.xml.bind.JAXBException
... 35 more
多次人脸检测后 libncnn.a 报的异常,请问一下是不是编译的官方的还是有修改过呢
_ZNK4ncnn15Convolution_arm7forwardERKNS_3MatERS1_RKNS_6OptionE
/home/yuanhao/osc/ncnn-20200413/src/layer/arm/convolution_arm.cpp:697
_ZNK4ncnn3Net13forward_layerEiRNSt6__ndk16vectorINS_3MatENS1_9allocatorIS3_EEEERNS_6OptionE
/home/yuanhao/osc/ncnn-20200413/src/net.cpp:1189
_ZNK4ncnn3Net13forward_layerEiRNSt6__ndk16vectorINS_3MatENS1_9allocatorIS3_EEEERNS_6OptionE
/home/yuanhao/osc/ncnn-20200413/src/net.cpp:1119
Great work. How can i detect face spoofing in ios?Please help
I want to implement an active liveness feature in my project, which requires detecting face movement (left/right), facial smiles, and blinking eyes. Is this possible?
学校发的平板是个杂牌, 只能横着拿,屏幕宽和高手机如果是 640 x 480的话,它是反着的 480x640
摄像头的预览是一个非镜像的,也就是他们都被认为是后置摄像头,不是前置。明明安装在前面啊。滑稽。。。
我的问题是:
不胜感激!
请问工程中很多的opencv函数可以使用ncnn中的函数替换,例如ncnn中的yuv420sp2rgb可以将nv21转化为像素格式;为啥本工程使用了opencv的函数,是因为使用前者会使得模型效果变差吗?
我想使用Vulkan来测试一下加速效果,但是我按照ncnn-vulkan的编译教程https://github.com/Tencent/ncnn/wiki/how-to-build#build-for-android编译好了之后,替换原来的libncnn.a,会报错:
当不使用vulkan编译之后的库替换libncnn.a时,会报如下错:
不能识别undefined reference to `ncnn::Extractor::extract(char const*, ncnn::Mat&)'这个取数据的过程,
因此我想请问您的libncnn.a是怎么编译得到的呢?
你好,看训练代码中是进行了数据归一化 x / 255 。https://github.com/minivision-ai/Silent-Face-Anti-Spoofing/blob/master/src/data_io/dataset_loader.py#L22。
但是在模型测试的时候,是没有加归一化。(https://github.com/minivision-ai/Silent-Face-Anti-Spoofing-APK/blob/master/engine/src/main/cpp/live/live.cpp#L60~L63)
是否是在pytorch模型转ncnn的时候,进行了特殊的/255的处理?
Its also tells the real face of 2d static image
Hi,
I created Face Antispoof .pth model which is similar to the layers of model_1.param. The .pth model gives good results on my PC. I am getting prediction scores between 0-100. However, the model is giving optimised prediction scores such as 0 and 1 while running on android ( I used Silent-Face-Anti-Spoofing-APK project's code).
I did the following preprocessing for training the model:
transform = transforms.Compose([
transforms.RandomResizedCrop(size=tuple([80, 80]),
scale=(0.9, 1.1)),
transforms.ColorJitter(brightness=0.4,
contrast=0.4, saturation=0.4, hue=0.1),
transforms.RandomRotation(10),
transforms.RandomHorizontalFlip(),
transforms.ToTensor()
])
I need to implement the same preprocessing in 'Silent-Face-Anti-Spoofing-APK' project's code to get the correct prediction scores on android. Can anyone help?
If the preprocessing is not the problem, what else could it be? I tried to fix the conversion ( pth-> onnx -> param,bin). The onnx file is giving good results as well. So I'm guessing it could be because of the preprocessing. Please help. Thanks. :)
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.