Moving to AVX instead of AVX2, compiler warning fixes. Losing dependency on OpenCV C style bindings for affine warping.

This commit is contained in:
Tadas Baltrusaitis
2018-05-07 21:54:52 +01:00
parent c376351145
commit e6849c6b52
182 changed files with 155 additions and 232 deletions

View File

@@ -147,7 +147,7 @@
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(SolutionDir)\lib\local\LandmarkDetector\include;$(SolutionDir)\lib\local\FaceAnalyser\include;$(SolutionDir)\lib\local\GazeAnalyser\include;$(SolutionDir)\lib\local\Utilities\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(SolutionDir)\lib\local\LandmarkDetector\include;$(SolutionDir)\lib\local\FaceAnalyser\include;$(SolutionDir)\lib\local\GazeAnalyser\include;$(SolutionDir)\lib\local\Utilities\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<OpenMPSupport>false</OpenMPSupport> <OpenMPSupport>false</OpenMPSupport>
<EnableEnhancedInstructionSet>AdvancedVectorExtensions2</EnableEnhancedInstructionSet> <EnableEnhancedInstructionSet>AdvancedVectorExtensions</EnableEnhancedInstructionSet>
<MultiProcessorCompilation>true</MultiProcessorCompilation> <MultiProcessorCompilation>true</MultiProcessorCompilation>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed> <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
</ClCompile> </ClCompile>
@@ -169,7 +169,7 @@
<PreprocessorDefinitions>WIN64;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>WIN64;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(SolutionDir)\lib\local\LandmarkDetector\include;$(SolutionDir)\lib\local\FaceAnalyser\include;$(SolutionDir)\lib\local\GazeAnalyser\include;$(SolutionDir)\lib\local\Utilities\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(SolutionDir)\lib\local\LandmarkDetector\include;$(SolutionDir)\lib\local\FaceAnalyser\include;$(SolutionDir)\lib\local\GazeAnalyser\include;$(SolutionDir)\lib\local\Utilities\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<OpenMPSupport>false</OpenMPSupport> <OpenMPSupport>false</OpenMPSupport>
<EnableEnhancedInstructionSet>AdvancedVectorExtensions2</EnableEnhancedInstructionSet> <EnableEnhancedInstructionSet>AdvancedVectorExtensions</EnableEnhancedInstructionSet>
<MultiProcessorCompilation>true</MultiProcessorCompilation> <MultiProcessorCompilation>true</MultiProcessorCompilation>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed> <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
</ClCompile> </ClCompile>

View File

@@ -150,7 +150,7 @@
<AdditionalIncludeDirectories>$(SolutionDir)\lib\local\LandmarkDetector\include;$(SolutionDir)\lib\local\FaceAnalyser\include;$(SolutionDir)\lib\local\GazeAnalyser\include;$(SolutionDir)\lib\local\Utilities\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(SolutionDir)\lib\local\LandmarkDetector\include;$(SolutionDir)\lib\local\FaceAnalyser\include;$(SolutionDir)\lib\local\GazeAnalyser\include;$(SolutionDir)\lib\local\Utilities\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<OpenMPSupport>false</OpenMPSupport> <OpenMPSupport>false</OpenMPSupport>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed> <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
<EnableEnhancedInstructionSet>AdvancedVectorExtensions2</EnableEnhancedInstructionSet> <EnableEnhancedInstructionSet>AdvancedVectorExtensions</EnableEnhancedInstructionSet>
<MultiProcessorCompilation>true</MultiProcessorCompilation> <MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile> </ClCompile>
<Link> <Link>
@@ -172,7 +172,7 @@
<AdditionalIncludeDirectories>$(SolutionDir)\lib\local\LandmarkDetector\include;$(SolutionDir)\lib\local\FaceAnalyser\include;$(SolutionDir)\lib\local\GazeAnalyser\include;$(SolutionDir)\lib\local\Utilities\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(SolutionDir)\lib\local\LandmarkDetector\include;$(SolutionDir)\lib\local\FaceAnalyser\include;$(SolutionDir)\lib\local\GazeAnalyser\include;$(SolutionDir)\lib\local\Utilities\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<OpenMPSupport>false</OpenMPSupport> <OpenMPSupport>false</OpenMPSupport>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed> <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
<EnableEnhancedInstructionSet>AdvancedVectorExtensions2</EnableEnhancedInstructionSet> <EnableEnhancedInstructionSet>AdvancedVectorExtensions</EnableEnhancedInstructionSet>
<MultiProcessorCompilation>true</MultiProcessorCompilation> <MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile> </ClCompile>
<Link> <Link>

View File

@@ -133,7 +133,7 @@
</FunctionLevelLinking> </FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions> <IntrinsicFunctions>true</IntrinsicFunctions>
<AdditionalIncludeDirectories>$(SolutionDir)\lib\local\LandmarkDetector\include;$(SolutionDir)\lib\local\Utilities\include;$(SolutionDir)\lib\local\FaceAnalyser\include;$(SolutionDir)\lib\local\GazeAnalyser\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(SolutionDir)\lib\local\LandmarkDetector\include;$(SolutionDir)\lib\local\Utilities\include;$(SolutionDir)\lib\local\FaceAnalyser\include;$(SolutionDir)\lib\local\GazeAnalyser\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<EnableEnhancedInstructionSet>AdvancedVectorExtensions2</EnableEnhancedInstructionSet> <EnableEnhancedInstructionSet>AdvancedVectorExtensions</EnableEnhancedInstructionSet>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary> <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<MultiProcessorCompilation>true</MultiProcessorCompilation> <MultiProcessorCompilation>true</MultiProcessorCompilation>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed> <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
@@ -152,7 +152,7 @@
</FunctionLevelLinking> </FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions> <IntrinsicFunctions>true</IntrinsicFunctions>
<AdditionalIncludeDirectories>$(SolutionDir)\lib\local\LandmarkDetector\include;$(SolutionDir)\lib\local\Utilities\include;$(SolutionDir)\lib\local\FaceAnalyser\include;$(SolutionDir)\lib\local\GazeAnalyser\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(SolutionDir)\lib\local\LandmarkDetector\include;$(SolutionDir)\lib\local\Utilities\include;$(SolutionDir)\lib\local\FaceAnalyser\include;$(SolutionDir)\lib\local\GazeAnalyser\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<EnableEnhancedInstructionSet>AdvancedVectorExtensions2</EnableEnhancedInstructionSet> <EnableEnhancedInstructionSet>AdvancedVectorExtensions</EnableEnhancedInstructionSet>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary> <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<MultiProcessorCompilation>true</MultiProcessorCompilation> <MultiProcessorCompilation>true</MultiProcessorCompilation>
<PreprocessorDefinitions>WIN64;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>WIN64;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>

View File

@@ -149,7 +149,7 @@
<AdditionalIncludeDirectories>$(SolutionDir)\lib\local\FaceAnalyser\include;$(SolutionDir)\lib\local\LandmarkDetector\include;$(SolutionDir)\lib\local\GazeAnalyser\include;$(SolutionDir)\lib\local\Utilities\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(SolutionDir)\lib\local\FaceAnalyser\include;$(SolutionDir)\lib\local\LandmarkDetector\include;$(SolutionDir)\lib\local\GazeAnalyser\include;$(SolutionDir)\lib\local\Utilities\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<OpenMPSupport>false</OpenMPSupport> <OpenMPSupport>false</OpenMPSupport>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed> <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
<EnableEnhancedInstructionSet>AdvancedVectorExtensions2</EnableEnhancedInstructionSet> <EnableEnhancedInstructionSet>AdvancedVectorExtensions</EnableEnhancedInstructionSet>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary> <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<MultiProcessorCompilation>true</MultiProcessorCompilation> <MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile> </ClCompile>
@@ -172,7 +172,7 @@
<AdditionalIncludeDirectories>$(SolutionDir)\lib\local\FaceAnalyser\include;$(SolutionDir)\lib\local\LandmarkDetector\include;$(SolutionDir)\lib\local\GazeAnalyser\include;$(SolutionDir)\lib\local\Utilities\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(SolutionDir)\lib\local\FaceAnalyser\include;$(SolutionDir)\lib\local\LandmarkDetector\include;$(SolutionDir)\lib\local\GazeAnalyser\include;$(SolutionDir)\lib\local\Utilities\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<OpenMPSupport>false</OpenMPSupport> <OpenMPSupport>false</OpenMPSupport>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed> <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
<EnableEnhancedInstructionSet>AdvancedVectorExtensions2</EnableEnhancedInstructionSet> <EnableEnhancedInstructionSet>AdvancedVectorExtensions</EnableEnhancedInstructionSet>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary> <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<MultiProcessorCompilation>true</MultiProcessorCompilation> <MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile> </ClCompile>

View File

@@ -104,7 +104,7 @@
<IntrinsicFunctions>true</IntrinsicFunctions> <IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed> <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
<EnableEnhancedInstructionSet>AdvancedVectorExtensions2</EnableEnhancedInstructionSet> <EnableEnhancedInstructionSet>AdvancedVectorExtensions</EnableEnhancedInstructionSet>
</ClCompile> </ClCompile>
<Link> <Link>
<SubSystem>Windows</SubSystem> <SubSystem>Windows</SubSystem>
@@ -122,7 +122,7 @@
<IntrinsicFunctions>true</IntrinsicFunctions> <IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed> <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
<EnableEnhancedInstructionSet>AdvancedVectorExtensions2</EnableEnhancedInstructionSet> <EnableEnhancedInstructionSet>AdvancedVectorExtensions</EnableEnhancedInstructionSet>
</ClCompile> </ClCompile>
<Link> <Link>
<SubSystem>Windows</SubSystem> <SubSystem>Windows</SubSystem>

View File

@@ -141,7 +141,7 @@
<ClCompile> <ClCompile>
<AdditionalIncludeDirectories>$(SolutionDir)dlib/include/dlib/..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(SolutionDir)dlib/include/dlib/..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<CompileAs>CompileAsCpp</CompileAs> <CompileAs>CompileAsCpp</CompileAs>
<EnableEnhancedInstructionSet>AdvancedVectorExtensions2</EnableEnhancedInstructionSet> <EnableEnhancedInstructionSet>AdvancedVectorExtensions</EnableEnhancedInstructionSet>
<ExceptionHandling>Sync</ExceptionHandling> <ExceptionHandling>Sync</ExceptionHandling>
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion> <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
<Optimization>Full</Optimization> <Optimization>Full</Optimization>
@@ -178,7 +178,7 @@
<ClCompile> <ClCompile>
<AdditionalIncludeDirectories>$(SolutionDir)dlib/include/dlib/..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(SolutionDir)dlib/include/dlib/..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<CompileAs>CompileAsCpp</CompileAs> <CompileAs>CompileAsCpp</CompileAs>
<EnableEnhancedInstructionSet>AdvancedVectorExtensions2</EnableEnhancedInstructionSet> <EnableEnhancedInstructionSet>AdvancedVectorExtensions</EnableEnhancedInstructionSet>
<ExceptionHandling>Sync</ExceptionHandling> <ExceptionHandling>Sync</ExceptionHandling>
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion> <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
<Optimization>Full</Optimization> <Optimization>Full</Optimization>

View File

@@ -145,7 +145,7 @@
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;CPPINEROP_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;CPPINEROP_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>./;$(SolutionDir)lib\local\LandmarkDetector\include;$(SolutionDir)lib\local\FaceAnalyser\include;$(SolutionDir)lib\local\GazeAnalyser\include;$(SolutionDir)lib\local\Utilities\include;$(SolutionDir)lib\3rdParty\CameraEnumerator;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>./;$(SolutionDir)lib\local\LandmarkDetector\include;$(SolutionDir)lib\local\FaceAnalyser\include;$(SolutionDir)lib\local\GazeAnalyser\include;$(SolutionDir)lib\local\Utilities\include;$(SolutionDir)lib\3rdParty\CameraEnumerator;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed> <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
<EnableEnhancedInstructionSet>AdvancedVectorExtensions2</EnableEnhancedInstructionSet> <EnableEnhancedInstructionSet>AdvancedVectorExtensions</EnableEnhancedInstructionSet>
</ClCompile> </ClCompile>
<Link> <Link>
<SubSystem>Windows</SubSystem> <SubSystem>Windows</SubSystem>
@@ -166,7 +166,7 @@
<PreprocessorDefinitions>NDEBUG;_WINDOWS;_USRDLL;CPPINEROP_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>NDEBUG;_WINDOWS;_USRDLL;CPPINEROP_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>./;$(SolutionDir)lib\local\LandmarkDetector\include;$(SolutionDir)lib\local\FaceAnalyser\include;$(SolutionDir)lib\local\GazeAnalyser\include;$(SolutionDir)lib\local\Utilities\include;$(SolutionDir)lib\3rdParty\CameraEnumerator;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>./;$(SolutionDir)lib\local\LandmarkDetector\include;$(SolutionDir)lib\local\FaceAnalyser\include;$(SolutionDir)lib\local\GazeAnalyser\include;$(SolutionDir)lib\local\Utilities\include;$(SolutionDir)lib\3rdParty\CameraEnumerator;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed> <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
<EnableEnhancedInstructionSet>AdvancedVectorExtensions2</EnableEnhancedInstructionSet> <EnableEnhancedInstructionSet>AdvancedVectorExtensions</EnableEnhancedInstructionSet>
</ClCompile> </ClCompile>
<Link> <Link>
<SubSystem>Windows</SubSystem> <SubSystem>Windows</SubSystem>

View File

@@ -0,0 +1,24 @@
svm_disfa/AU_1_dynamic.dat AU01
svm_disfa/AU_2_dynamic.dat AU02
svm_disfa/AU_4_static.dat AU04
svm_disfa/AU_5_dynamic.dat AU05
svm_disfa/AU_6_static.dat AU06
svm_disfa/AU_9_dynamic.dat AU09
svm_disfa/AU_12_dynamic.dat AU12
svm_disfa/AU_15_dynamic.dat AU15
svm_disfa/AU_17_dynamic.dat AU17
svm_disfa/AU_20_dynamic.dat AU20
svm_disfa/AU_25_dynamic.dat AU25
svm_disfa/AU_26_dynamic.dat AU26
svr_disfa/AU_1_dynamic_intensity.dat AU01
svr_disfa/AU_2_dynamic_intensity.dat AU02
svr_disfa/AU_4_dynamic_intensity_comb.dat AU04
svr_disfa/AU_5_dynamic_intensity.dat AU05
svr_disfa/AU_6_dynamic_intensity_comb.dat AU06
svr_disfa/AU_9_dynamic_intensity.dat AU09
svr_disfa/AU_12_dynamic_intensity_comb.dat AU12
svr_disfa/AU_15_dynamic_intensity_comb.dat AU15
svr_disfa/AU_17_dynamic_intensity_comb.dat AU17
svr_disfa/AU_20_dynamic_intensity.dat AU20
svr_disfa/AU_25_dynamic_intensity_comb.dat AU25
svr_disfa/AU_26_dynamic_intensity_comb.dat AU26

View File

@@ -0,0 +1,24 @@
svm_disfa/AU_1_static.dat AU01
svm_disfa/AU_2_static.dat AU02
svm_disfa/AU_4_static.dat AU04
svm_disfa/AU_5_static.dat AU05
svm_disfa/AU_6_static.dat AU06
svm_disfa/AU_9_static.dat AU09
svm_disfa/AU_12_static.dat AU12
svm_disfa/AU_15_static.dat AU15
svm_disfa/AU_17_static.dat AU17
svm_disfa/AU_20_static.dat AU20
svm_disfa/AU_25_static.dat AU25
svm_disfa/AU_26_static.dat AU26
svr_disfa/AU_1_static_intensity.dat AU01
svr_disfa/AU_2_static_intensity.dat AU02
svr_disfa/AU_4_static_intensity.dat AU04
svr_disfa/AU_5_static_intensity.dat AU05
svr_disfa/AU_6_static_intensity.dat AU06
svr_disfa/AU_9_static_intensity.dat AU09
svr_disfa/AU_12_static_intensity.dat AU12
svr_disfa/AU_15_static_intensity.dat AU15
svr_disfa/AU_17_static_intensity.dat AU17
svr_disfa/AU_20_static_intensity.dat AU20
svr_disfa/AU_25_static_intensity.dat AU25
svr_disfa/AU_26_static_intensity.dat AU26

View File

@@ -0,0 +1,3 @@
AUPredictor AU_DISFA_best.txt
PDM In-the-wild_aligned_PDM_68.txt
Triangulation tris_68_full.txt

View File

@@ -0,0 +1,3 @@
AUPredictor AU_DISFA_static.txt
PDM In-the-wild_aligned_PDM_68.txt
Triangulation tris_68_full.txt

View File

@@ -141,7 +141,7 @@
<SDLCheck> <SDLCheck>
</SDLCheck> </SDLCheck>
<AdditionalIncludeDirectories>./include;$(SolutionDir)lib/local/Utilities/include;$(SolutionDir)lib/local/LandmarkDetector/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>./include;$(SolutionDir)lib/local/Utilities/include;$(SolutionDir)lib/local/LandmarkDetector/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<EnableEnhancedInstructionSet>AdvancedVectorExtensions2</EnableEnhancedInstructionSet> <EnableEnhancedInstructionSet>AdvancedVectorExtensions</EnableEnhancedInstructionSet>
<MultiProcessorCompilation>true</MultiProcessorCompilation> <MultiProcessorCompilation>true</MultiProcessorCompilation>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed> <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
</ClCompile> </ClCompile>
@@ -167,7 +167,7 @@
<SDLCheck> <SDLCheck>
</SDLCheck> </SDLCheck>
<AdditionalIncludeDirectories>./include;$(SolutionDir)lib/local/Utilities/include;$(SolutionDir)lib/local/LandmarkDetector/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>./include;$(SolutionDir)lib/local/Utilities/include;$(SolutionDir)lib/local/LandmarkDetector/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<EnableEnhancedInstructionSet>AdvancedVectorExtensions2</EnableEnhancedInstructionSet> <EnableEnhancedInstructionSet>AdvancedVectorExtensions</EnableEnhancedInstructionSet>
<MultiProcessorCompilation>true</MultiProcessorCompilation> <MultiProcessorCompilation>true</MultiProcessorCompilation>
<PreprocessorDefinitions>WIN64;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>WIN64;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed> <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>

View File

@@ -116,7 +116,7 @@
<AdditionalIncludeDirectories>./include;../LandmarkDetector/include;../Utilities/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>./include;../LandmarkDetector/include;../Utilities/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<MultiProcessorCompilation>true</MultiProcessorCompilation> <MultiProcessorCompilation>true</MultiProcessorCompilation>
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<EnableEnhancedInstructionSet>AdvancedVectorExtensions2</EnableEnhancedInstructionSet> <EnableEnhancedInstructionSet>AdvancedVectorExtensions</EnableEnhancedInstructionSet>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed> <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
</ClCompile> </ClCompile>
<Link> <Link>
@@ -135,7 +135,7 @@
<AdditionalIncludeDirectories>./include;../LandmarkDetector/include;../Utilities/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>./include;../LandmarkDetector/include;../Utilities/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<MultiProcessorCompilation>true</MultiProcessorCompilation> <MultiProcessorCompilation>true</MultiProcessorCompilation>
<PreprocessorDefinitions>WIN64;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>WIN64;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<EnableEnhancedInstructionSet>AdvancedVectorExtensions2</EnableEnhancedInstructionSet> <EnableEnhancedInstructionSet>AdvancedVectorExtensions</EnableEnhancedInstructionSet>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed> <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
</ClCompile> </ClCompile>
<Link> <Link>

View File

@@ -148,7 +148,7 @@ xcopy /I /E /Y /D "$(SolutionDir)lib\3rdParty\OpenCV3.4\classifiers" "$(OutDir)c
<PrecompiledHeader>Use</PrecompiledHeader> <PrecompiledHeader>Use</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel> <WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<EnableEnhancedInstructionSet>AdvancedVectorExtensions2</EnableEnhancedInstructionSet> <EnableEnhancedInstructionSet>AdvancedVectorExtensions</EnableEnhancedInstructionSet>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed> <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
<OpenMPSupport>false</OpenMPSupport> <OpenMPSupport>false</OpenMPSupport>
<AdditionalOptions>/Zm300 %(AdditionalOptions)</AdditionalOptions> <AdditionalOptions>/Zm300 %(AdditionalOptions)</AdditionalOptions>
@@ -173,7 +173,7 @@ xcopy /I /E /Y /D "$(SolutionDir)lib\3rdParty\OpenCV3.4\classifiers" "$(OutDir)c
<PrecompiledHeader>Use</PrecompiledHeader> <PrecompiledHeader>Use</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel> <WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<EnableEnhancedInstructionSet>AdvancedVectorExtensions2</EnableEnhancedInstructionSet> <EnableEnhancedInstructionSet>AdvancedVectorExtensions</EnableEnhancedInstructionSet>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed> <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
<OpenMPSupport>false</OpenMPSupport> <OpenMPSupport>false</OpenMPSupport>
<AdditionalOptions>/Zm300 %(AdditionalOptions)</AdditionalOptions> <AdditionalOptions>/Zm300 %(AdditionalOptions)</AdditionalOptions>

View File

@@ -53,8 +53,8 @@ namespace LandmarkDetector
public: public:
// Width and height of the patch expert support area // Width and height of the patch expert support area
int width; int width_support;
int height; int height_support;
// Neural weights // Neural weights
std::vector<cv::Mat_<float>> biases; std::vector<cv::Mat_<float>> biases;

View File

@@ -455,8 +455,7 @@ void CCNF_patch_expert::ResponseOpenBlas(const cv::Mat_<float> &area_of_interest
// Perform matrix multiplication in OpenBLAS (fortran call) // Perform matrix multiplication in OpenBLAS (fortran call)
float alpha1 = 1.0; float alpha1 = 1.0;
float beta1 = 0.0; float beta1 = 0.0;
char *nT = "N"; sgemm_("N", "N", &normalized_input.cols, &weight_matrix.rows, &weight_matrix.cols, &alpha1, (float*)normalized_input.data, &normalized_input.cols, (float*)weight_matrix.data, &weight_matrix.cols, &beta1, (float*)neuron_resp_full.data, &normalized_input.cols);
sgemm_(nT, nT, &normalized_input.cols, &weight_matrix.rows, &weight_matrix.cols, &alpha1, (float*)normalized_input.data, &normalized_input.cols, (float*)weight_matrix.data, &weight_matrix.cols, &beta1, (float*)neuron_resp_full.data, &normalized_input.cols);
// Above is a faster version of this // Above is a faster version of this
//cv::Mat_<float> neuron_resp_full = this->weight_matrix * normalized_input; //cv::Mat_<float> neuron_resp_full = this->weight_matrix * normalized_input;
@@ -500,8 +499,7 @@ void CCNF_patch_expert::ResponseOpenBlas(const cv::Mat_<float> &area_of_interest
// Perform matrix multiplication in OpenBLAS (fortran call) // Perform matrix multiplication in OpenBLAS (fortran call)
alpha1 = 1.0; alpha1 = 1.0;
beta1 = 0.0; beta1 = 0.0;
nT = "N"; sgemm_("N", "N", &resp_vec_f.cols, &Sigmas[s_to_use].rows, &Sigmas[s_to_use].cols, &alpha1, (float*)resp_vec_f.data, &resp_vec_f.cols, (float*)Sigmas[s_to_use].data, &Sigmas[s_to_use].cols, &beta1, (float*)out.data, &resp_vec_f.cols);
sgemm_(nT, nT, &resp_vec_f.cols, &Sigmas[s_to_use].rows, &Sigmas[s_to_use].cols, &alpha1, (float*)resp_vec_f.data, &resp_vec_f.cols, (float*)Sigmas[s_to_use].data, &Sigmas[s_to_use].cols, &beta1, (float*)out.data, &resp_vec_f.cols);
// Above is a faster version of this // Above is a faster version of this
//cv::Mat out = Sigmas[s_to_use] * resp_vec_f; //cv::Mat out = Sigmas[s_to_use] * resp_vec_f;

View File

@@ -77,7 +77,7 @@
using namespace LandmarkDetector; using namespace LandmarkDetector;
// Copy constructor // Copy constructor
CEN_patch_expert::CEN_patch_expert(const CEN_patch_expert& other) : confidence(other.confidence), width(other.width), height(other.height) CEN_patch_expert::CEN_patch_expert(const CEN_patch_expert& other) : confidence(other.confidence), width_support(other.width_support), height_support(other.height_support)
{ {
// Copy the layer weights in a deep way // Copy the layer weights in a deep way
@@ -106,8 +106,8 @@ void CEN_patch_expert::Read(ifstream &stream)
// the number of neurons for this patch // the number of neurons for this patch
int num_layers; int num_layers;
stream.read((char*)&width, 4); stream.read((char*)&width_support, 4);
stream.read((char*)&height, 4); stream.read((char*)&height_support, 4);
stream.read((char*)&num_layers, 4); stream.read((char*)&num_layers, 4);
if (num_layers == 0) if (num_layers == 0)
@@ -221,11 +221,11 @@ void im2colBias(const cv::Mat_<float>& input, int width, int height, cv::Mat_<fl
void CEN_patch_expert::Response(const cv::Mat_<float> &area_of_interest, cv::Mat_<float> &response) void CEN_patch_expert::Response(const cv::Mat_<float> &area_of_interest, cv::Mat_<float> &response)
{ {
int response_height = area_of_interest.rows - height + 1; int response_height = area_of_interest.rows - height_support + 1;
int response_width = area_of_interest.cols - width + 1; int response_width = area_of_interest.cols - width_support + 1;
cv::Mat_<float> input_col; cv::Mat_<float> input_col;
im2colBias(area_of_interest, width, height, input_col); im2colBias(area_of_interest, width_support, height_support, input_col);
// Mean and standard deviation normalization // Mean and standard deviation normalization
contrastNorm(input_col, response); contrastNorm(input_col, response);
@@ -246,8 +246,7 @@ void CEN_patch_expert::Response(const cv::Mat_<float> &area_of_interest, cv::Mat
// Perform matrix multiplication in OpenBLAS (fortran call) // Perform matrix multiplication in OpenBLAS (fortran call)
float alpha1 = 1.0; float alpha1 = 1.0;
float beta1 = 0.0; float beta1 = 0.0;
char *nT = "N"; sgemm_("N", "N", &resp.cols, &weight.rows, &weight.cols, &alpha1, m1, &resp.cols, m2, &weight.cols, &beta1, m3, &resp.cols);
sgemm_(nT, nT, &resp.cols, &weight.rows, &weight.cols, &alpha1, m1, &resp.cols, m2, &weight.cols, &beta1, m3, &resp.cols);
// The above is a faster version of this, by calling the fortran version directly // The above is a faster version of this, by calling the fortran version directly
//cblas_sgemm(CblasColMajor, CblasNoTrans, CblasNoTrans, resp.cols, weight.rows, weight.cols, 1, m1, resp.cols, m2, weight.cols, 0.0, m3, resp.cols); //cblas_sgemm(CblasColMajor, CblasNoTrans, CblasNoTrans, resp.cols, weight.rows, weight.cols, 1, m1, resp.cols, m2, weight.cols, 0.0, m3, resp.cols);
@@ -507,11 +506,11 @@ void LandmarkDetector::interpolationMatrix(cv::Mat_<float>& mapMatrix, int respo
void CEN_patch_expert::ResponseSparse(const cv::Mat_<float> &area_of_interest, cv::Mat_<float> &response, cv::Mat_<float>& mapMatrix, cv::Mat_<float>& im2col_prealloc) void CEN_patch_expert::ResponseSparse(const cv::Mat_<float> &area_of_interest, cv::Mat_<float> &response, cv::Mat_<float>& mapMatrix, cv::Mat_<float>& im2col_prealloc)
{ {
int response_height = area_of_interest.rows - height + 1; int response_height = area_of_interest.rows - height_support + 1;
int response_width = area_of_interest.cols - width + 1; int response_width = area_of_interest.cols - width_support + 1;
// Extract im2col but in a sparse way and contrast normalize // Extract im2col but in a sparse way and contrast normalize
im2colBiasSparseContrastNorm(area_of_interest, width, height, im2col_prealloc); im2colBiasSparseContrastNorm(area_of_interest, width_support, height_support, im2col_prealloc);
response = im2col_prealloc.t(); response = im2col_prealloc.t();
for (size_t layer = 0; layer < activation_function.size(); ++layer) for (size_t layer = 0; layer < activation_function.size(); ++layer)
@@ -529,8 +528,7 @@ void CEN_patch_expert::ResponseSparse(const cv::Mat_<float> &area_of_interest, c
// Perform matrix multiplication in OpenBLAS (fortran call) // Perform matrix multiplication in OpenBLAS (fortran call)
float alpha1 = 1.0; float alpha1 = 1.0;
float beta1 = 0.0; float beta1 = 0.0;
char *nT = "N"; sgemm_("N", "N", &resp.cols, &weight.rows, &weight.cols, &alpha1, m1, &resp.cols, m2, &weight.cols, &beta1, m3, &resp.cols);
sgemm_(nT, nT, &resp.cols, &weight.rows, &weight.cols, &alpha1, m1, &resp.cols, m2, &weight.cols, &beta1, m3, &resp.cols);
// The above is a faster version of this, by calling the fortran version directly // The above is a faster version of this, by calling the fortran version directly
//cblas_sgemm(CblasColMajor, CblasNoTrans, CblasNoTrans, resp.cols, weight.rows, weight.cols, 1, m1, resp.cols, m2, weight.cols, 0.0, m3, resp.cols); //cblas_sgemm(CblasColMajor, CblasNoTrans, CblasNoTrans, resp.cols, weight.rows, weight.cols, 1, m1, resp.cols, m2, weight.cols, 0.0, m3, resp.cols);
@@ -585,13 +583,13 @@ void CEN_patch_expert::ResponseSparse(const cv::Mat_<float> &area_of_interest, c
void CEN_patch_expert::ResponseSparse_mirror(const cv::Mat_<float> &area_of_interest, cv::Mat_<float> &response, cv::Mat_<float>& mapMatrix, cv::Mat_<float>& im2col_prealloc) void CEN_patch_expert::ResponseSparse_mirror(const cv::Mat_<float> &area_of_interest, cv::Mat_<float> &response, cv::Mat_<float>& mapMatrix, cv::Mat_<float>& im2col_prealloc)
{ {
int response_height = area_of_interest.rows - height + 1; int response_height = area_of_interest.rows - height_support + 1;
int response_width = area_of_interest.cols - width + 1; int response_width = area_of_interest.cols - width_support + 1;
cv::flip(area_of_interest, area_of_interest, 1); cv::flip(area_of_interest, area_of_interest, 1);
// Extract im2col but in a sparse way and contrast normalize // Extract im2col but in a sparse way and contrast normalize
im2colBiasSparseContrastNorm(area_of_interest, width, height, im2col_prealloc); im2colBiasSparseContrastNorm(area_of_interest, width_support, height_support, im2col_prealloc);
response = im2col_prealloc.t(); response = im2col_prealloc.t();
@@ -610,8 +608,7 @@ void CEN_patch_expert::ResponseSparse_mirror(const cv::Mat_<float> &area_of_inte
// Perform matrix multiplication in OpenBLAS (fortran call) // Perform matrix multiplication in OpenBLAS (fortran call)
float alpha1 = 1.0; float alpha1 = 1.0;
float beta1 = 0.0; float beta1 = 0.0;
char *nT = "N"; sgemm_("N", "N", &resp.cols, &weight.rows, &weight.cols, &alpha1, m1, &resp.cols, m2, &weight.cols, &beta1, m3, &resp.cols);
sgemm_(nT, nT, &resp.cols, &weight.rows, &weight.cols, &alpha1, m1, &resp.cols, m2, &weight.cols, &beta1, m3, &resp.cols);
// The above is a faster version of this, by calling the fortran version directly // The above is a faster version of this, by calling the fortran version directly
//cblas_sgemm(CblasColMajor, CblasNoTrans, CblasNoTrans, resp.cols, weight.rows, weight.cols, 1, m1, resp.cols, m2, weight.cols, 0.0, m3, resp.cols); //cblas_sgemm(CblasColMajor, CblasNoTrans, CblasNoTrans, resp.cols, weight.rows, weight.cols, 1, m1, resp.cols, m2, weight.cols, 0.0, m3, resp.cols);
@@ -665,14 +662,14 @@ void CEN_patch_expert::ResponseSparse_mirror(const cv::Mat_<float> &area_of_inte
void CEN_patch_expert::ResponseSparse_mirror_joint(const cv::Mat_<float> &area_of_interest_left, const cv::Mat_<float> &area_of_interest_right, cv::Mat_<float> &response_left, cv::Mat_<float> &response_right, cv::Mat_<float>& mapMatrix, cv::Mat_<float>& im2col_prealloc_left, cv::Mat_<float>& im2col_prealloc_right) void CEN_patch_expert::ResponseSparse_mirror_joint(const cv::Mat_<float> &area_of_interest_left, const cv::Mat_<float> &area_of_interest_right, cv::Mat_<float> &response_left, cv::Mat_<float> &response_right, cv::Mat_<float>& mapMatrix, cv::Mat_<float>& im2col_prealloc_left, cv::Mat_<float>& im2col_prealloc_right)
{ {
int response_height = area_of_interest_left.rows - height + 1; int response_height = area_of_interest_left.rows - height_support + 1;
int response_width = area_of_interest_left.cols - width + 1; int response_width = area_of_interest_left.cols - width_support + 1;
cv::flip(area_of_interest_right, area_of_interest_right, 1); cv::flip(area_of_interest_right, area_of_interest_right, 1);
// Extract im2col but in a sparse way and contrast normalize // Extract im2col but in a sparse way and contrast normalize
im2colBiasSparseContrastNorm(area_of_interest_left, width, height, im2col_prealloc_left); im2colBiasSparseContrastNorm(area_of_interest_left, width_support, height_support, im2col_prealloc_left);
im2colBiasSparseContrastNorm(area_of_interest_right, width, height, im2col_prealloc_right); im2colBiasSparseContrastNorm(area_of_interest_right, width_support, height_support, im2col_prealloc_right);
cv::Mat_<float> response; cv::Mat_<float> response;
cv::vconcat(im2col_prealloc_left, im2col_prealloc_right, response); cv::vconcat(im2col_prealloc_left, im2col_prealloc_right, response);
@@ -695,8 +692,7 @@ void CEN_patch_expert::ResponseSparse_mirror_joint(const cv::Mat_<float> &area_o
// Perform matrix multiplication in OpenBLAS (fortran call) // Perform matrix multiplication in OpenBLAS (fortran call)
float alpha1 = 1.0; float alpha1 = 1.0;
float beta1 = 0.0; float beta1 = 0.0;
char *nT = "N"; sgemm_("N", "N", &resp.cols, &weight.rows, &weight.cols, &alpha1, m1, &resp.cols, m2, &weight.cols, &beta1, m3, &resp.cols);
sgemm_(nT, nT, &resp.cols, &weight.rows, &weight.cols, &alpha1, m1, &resp.cols, m2, &weight.cols, &beta1, m3, &resp.cols);
// The above is a faster version of this, by calling the fortran version directly // The above is a faster version of this, by calling the fortran version directly
//cblas_sgemm(CblasColMajor, CblasNoTrans, CblasNoTrans, resp.cols, weight.rows, weight.cols, 1, m1, resp.cols, m2, weight.cols, 0.0, m3, resp.cols); //cblas_sgemm(CblasColMajor, CblasNoTrans, CblasNoTrans, resp.cols, weight.rows, weight.cols, 1, m1, resp.cols, m2, weight.cols, 0.0, m3, resp.cols);

View File

@@ -563,8 +563,7 @@ namespace LandmarkDetector
float alpha = 1.0f; float alpha = 1.0f;
float beta = 0.0f; float beta = 0.0f;
// Call fortran directly (faster) // Call fortran directly (faster)
char *nT = "N"; sgemm_("N", "N", &m2_cols, &num_rows, &pre_alloc_im2col.cols, &alpha, m2, &m2_cols, m1, &pre_alloc_im2col.cols, &beta, m3, &m2_cols);
sgemm_(nT, nT, &m2_cols, &num_rows, &pre_alloc_im2col.cols, &alpha, m2, &m2_cols, m1, &pre_alloc_im2col.cols, &beta, m3, &m2_cols);
// Above is equivalent to out = pre_alloc_im2col * weight_matrix; // Above is equivalent to out = pre_alloc_im2col * weight_matrix;

View File

@@ -762,7 +762,8 @@ bool FaceDetectorMTCNN::DetectFaces(vector<cv::Rect_<float> >& o_regions, const
rectify(proposal_boxes_all); rectify(proposal_boxes_all);
// Creating proposal images from previous step detections // Creating proposal images from previous step detections
vector<bool> above_thresh(proposal_boxes_all.size()); vector<bool> above_thresh;
above_thresh.resize(proposal_boxes_all.size(), false);
//tbb::parallel_for(0, (int)proposal_boxes_all.size(), [&](int k) { //tbb::parallel_for(0, (int)proposal_boxes_all.size(), [&](int k) {
for (size_t k = 0; k < proposal_boxes_all.size(); ++k) for (size_t k = 0; k < proposal_boxes_all.size(); ++k)
{ {

View File

@@ -1115,8 +1115,7 @@ float CLNF::NU_RLMS(cv::Vec6f& final_global, cv::Mat_<float>& final_local, const
// Perform matrix multiplication in OpenBLAS (fortran call) // Perform matrix multiplication in OpenBLAS (fortran call)
float alpha1 = 1.0; float alpha1 = 1.0;
float beta1 = 1.0; float beta1 = 1.0;
char *nT = "N"; sgemm_("N", "N", &J.cols, &J_w_t.rows, &J_w_t.cols, &alpha1, (float*)J.data, &J.cols, (float*)J_w_t.data, &J_w_t.cols, &beta1, (float*)Hessian.data, &J.cols);
sgemm_(nT, nT, &J.cols, &J_w_t.rows, &J_w_t.cols, &alpha1, (float*)J.data, &J.cols, (float*)J_w_t.data, &J_w_t.cols, &beta1, (float*)Hessian.data, &J.cols);
// Above is a fast (but ugly) version of // Above is a fast (but ugly) version of
// cv::Mat_<float> Hessian = J_w_t * J + regTerm; // cv::Mat_<float> Hessian = J_w_t * J + regTerm;

View File

@@ -429,8 +429,7 @@ namespace LandmarkDetector
// Get the rotation // Get the rotation
cv::Matx22f R = AlignShapesKabsch2D_f(src_mean_normed, dst_mean_normed); cv::Matx22f R = AlignShapesKabsch2D_f(src_mean_normed, dst_mean_normed);
cv::Matx22f A; cv::Matx22f A = s * R;
cv::Mat(s * R).copyTo(A);
cv::Mat_<float> aligned = (cv::Mat(cv::Mat(A) * src.t())).t(); cv::Mat_<float> aligned = (cv::Mat(cv::Mat(A) * src.t())).t();
cv::Mat_<float> offset = dst - aligned; cv::Mat_<float> offset = dst - aligned;

View File

@@ -150,8 +150,7 @@ void PDM::CalcShape3D(cv::Mat_<float>& out_shape, const cv::Mat_<float>& p_local
int p_local_cols = p_local.cols; int p_local_cols = p_local.cols;
int princ_comp_rows = princ_comp.rows; int princ_comp_rows = princ_comp.rows;
int princ_comp_cols = princ_comp.cols; int princ_comp_cols = princ_comp.cols;
char *nT = "N"; sgemm_("N", "N", &p_local_cols, &princ_comp_rows, &princ_comp_cols, &alpha1, (float*)p_local.data, &p_local_cols, (float*)princ_comp.data, &princ_comp_cols, &beta1, (float*)out_shape.data, &p_local_cols);
sgemm_(nT, nT, &p_local_cols, &princ_comp_rows, &princ_comp_cols, &alpha1, (float*)p_local.data, &p_local_cols, (float*)princ_comp.data, &princ_comp_cols, &beta1, (float*)out_shape.data, &p_local_cols);
// Above is a fast (but ugly) version of // Above is a fast (but ugly) version of
// out_shape = mean_shape + princ_comp * p_local; // out_shape = mean_shape + princ_comp * p_local;
@@ -639,8 +638,7 @@ void PDM::CalcParams(cv::Vec6f& out_params_global, cv::Mat_<float>& out_params_l
// Perform matrix multiplication in OpenBLAS (fortran call) // Perform matrix multiplication in OpenBLAS (fortran call)
float alpha1 = 1.0; float alpha1 = 1.0;
float beta1 = 1.0; float beta1 = 1.0;
char *nT = "N"; sgemm_("N", "N", &J.cols, &J_w_t.rows, &J_w_t.cols, &alpha1, (float*)J.data, &J.cols, (float*)J_w_t.data, &J_w_t.cols, &beta1, (float*)Hessian.data, &J.cols);
sgemm_(nT, nT, &J.cols, &J_w_t.rows, &J_w_t.cols, &alpha1, (float*)J.data, &J.cols, (float*)J_w_t.data, &J_w_t.cols, &beta1, (float*)Hessian.data, &J.cols);
// Above is a fast (but ugly) version of // Above is a fast (but ugly) version of
// cv::Mat_<float> Hessian2 = J_w_t * J + regularisations; // cv::Mat_<float> Hessian2 = J_w_t * J + regularisations;

View File

@@ -162,10 +162,13 @@ void Patch_experts::Response(vector<cv::Mat_<float> >& patch_expert_responses, c
sim_img_to_ref = AlignShapesWithScale_f(image_shape_2D, reference_shape_2D); sim_img_to_ref = AlignShapesWithScale_f(image_shape_2D, reference_shape_2D);
sim_ref_to_img = sim_img_to_ref.inv(cv::DECOMP_LU); sim_ref_to_img = sim_img_to_ref.inv(cv::DECOMP_LU);
float a1 = sim_ref_to_img(0, 0); float a1 = sim_ref_to_img(0, 0);
float b1 = -sim_ref_to_img(0, 1); float b1 = -sim_ref_to_img(0, 1);
cv::Mat_<float> gray_image_flt;
grayscale_image.convertTo(gray_image_flt, CV_32F);
bool use_ccnf = !this->ccnf_expert_intensity.empty(); bool use_ccnf = !this->ccnf_expert_intensity.empty();
bool use_cen = !this->cen_expert_intensity.empty(); bool use_cen = !this->cen_expert_intensity.empty();
@@ -230,8 +233,8 @@ void Patch_experts::Response(vector<cv::Mat_<float> >& patch_expert_responses, c
if (use_cen) if (use_cen)
{ {
area_of_interest_width = window_size + cen_expert_intensity[scale][view_id][ind].width - 1; area_of_interest_width = window_size + cen_expert_intensity[scale][view_id][ind].width_support - 1;
area_of_interest_height = window_size + cen_expert_intensity[scale][view_id][ind].height - 1; area_of_interest_height = window_size + cen_expert_intensity[scale][view_id][ind].height_support - 1;
} }
else if (use_ccnf) else if (use_ccnf)
{ {
@@ -245,17 +248,13 @@ void Patch_experts::Response(vector<cv::Mat_<float> >& patch_expert_responses, c
} }
// scale and rotate to mean shape to reference frame // scale and rotate to mean shape to reference frame
cv::Mat sim = (cv::Mat_<float>(2, 3) << a1, -b1, landmark_locations.at<float>(ind, 0), b1, a1, landmark_locations.at<float>(ind + n, 0)); cv::Mat sim = (cv::Mat_<float>(2, 3) << a1, -b1, landmark_locations.at<float>(ind, 0) - a1 * (area_of_interest_width - 1.0f) / 2.0f + b1 * (area_of_interest_width - 1.0f) / 2.0f, b1, a1, landmark_locations.at<float>(ind + n, 0) - a1 * (area_of_interest_width - 1.0f) / 2.0f - b1 * (area_of_interest_width - 1.0f) / 2.0f);
// Extract the region of interest around the current landmark location // Extract the region of interest around the current landmark location
cv::Mat_<float> area_of_interest(area_of_interest_height, area_of_interest_width); cv::Mat_<float> area_of_interest(area_of_interest_height, area_of_interest_width, 0.0f);
// Using C style openCV as it does what we need
CvMat area_of_interest_o = area_of_interest;
CvMat sim_o = sim;
IplImage im_o = grayscale_image;
cvGetQuadrangleSubPix(&im_o, &area_of_interest_o, &sim_o);
cv::warpAffine(gray_image_flt, area_of_interest, sim, area_of_interest.size(), cv::WARP_INVERSE_MAP + CV_INTER_LINEAR);
// Get intensity response either from the SVR, CCNF, or CEN patch experts (prefer CEN as they are the most accurate so far) // Get intensity response either from the SVR, CCNF, or CEN patch experts (prefer CEN as they are the most accurate so far)
if (!cen_expert_intensity.empty()) if (!cen_expert_intensity.empty())
@@ -281,15 +280,14 @@ void Patch_experts::Response(vector<cv::Mat_<float> >& patch_expert_responses, c
{ {
// Grab mirrored area of interest // Grab mirrored area of interest
cv::Mat sim_r = (cv::Mat_<float>(2, 3) << a1, -b1, landmark_locations.at<float>(mirror_id, 0), b1, a1, landmark_locations.at<float>(mirror_id + n, 0));
// scale and rotate to mean shape to reference frame
cv::Mat sim_r = (cv::Mat_<float>(2, 3) << a1, -b1, landmark_locations.at<float>(mirror_id, 0) - a1 * (area_of_interest_width - 1.0f) / 2.0f + b1 * (area_of_interest_width - 1.0f) / 2.0f, b1, a1, landmark_locations.at<float>(mirror_id + n, 0) - a1 * (area_of_interest_width - 1.0f) / 2.0f - b1 * (area_of_interest_width - 1.0f) / 2.0f);
// Extract the region of interest around the current landmark location // Extract the region of interest around the current landmark location
cv::Mat_<float> area_of_interest_r(area_of_interest_height, area_of_interest_width); cv::Mat_<float> area_of_interest_r(area_of_interest_height, area_of_interest_width, 0.0f);
// Using C style openCV as it does what we need
CvMat area_of_interest_o_r = area_of_interest_r; cv::warpAffine(gray_image_flt, area_of_interest_r, sim_r, area_of_interest_r.size(), cv::WARP_INVERSE_MAP + CV_INTER_LINEAR);
CvMat sim_o_r = sim_r;
IplImage im_o_r = grayscale_image;
cvGetQuadrangleSubPix(&im_o_r, &area_of_interest_o_r, &sim_o_r);
cv::Mat_<float> prealloc_mat_right = preallocated_im2col[mirror_id][im2col_size]; cv::Mat_<float> prealloc_mat_right = preallocated_im2col[mirror_id][im2col_size];

View File

@@ -126,7 +126,7 @@
<AdditionalIncludeDirectories>./include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>./include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion> <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed> <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
<EnableEnhancedInstructionSet>AdvancedVectorExtensions2</EnableEnhancedInstructionSet> <EnableEnhancedInstructionSet>AdvancedVectorExtensions</EnableEnhancedInstructionSet>
</ClCompile> </ClCompile>
<Link> <Link>
<SubSystem>Windows</SubSystem> <SubSystem>Windows</SubSystem>
@@ -147,7 +147,7 @@
<AdditionalIncludeDirectories>./include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>./include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed> <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion> <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
<EnableEnhancedInstructionSet>AdvancedVectorExtensions2</EnableEnhancedInstructionSet> <EnableEnhancedInstructionSet>AdvancedVectorExtensions</EnableEnhancedInstructionSet>
</ClCompile> </ClCompile>
<Link> <Link>
<SubSystem>Windows</SubSystem> <SubSystem>Windows</SubSystem>

View File

@@ -1,4 +1,4 @@
Model, mean, median Model, mean, median
OpenFace (CE-CLM): 0.0499, 0.0474 OpenFace (CE-CLM): 0.0499, 0.0474
OpenFace (CLNF): 0.0553, 0.0515 OpenFace (CLNF): 0.0553, 0.0516
CLM: 0.0635, 0.0588 CLM: 0.0644, 0.0592

View File

@@ -1,4 +1,4 @@
Type, mean, median Type, mean, median
err ce-clm: 0.042605, 0.034724 err ce-clm: 0.043346, 0.034804
err clnf: 0.055018, 0.038367 err clnf: 0.055347, 0.038637
err svr: 0.069573, 0.049737 err svr: 0.070061, 0.049981

View File

@@ -1,56 +0,0 @@
clear;
% fitting parameters more suitable for clnf
%%
% Run the BU test with clnf
if exist('D:/Datasets/HeadPose', 'file')
database_root = 'D:/Datasets/HeadPose/';
elseif(exist([getenv('USERPROFILE') '/Dropbox/AAM/test data/'], 'file'))
database_root = [getenv('USERPROFILE') '/Dropbox/AAM/test data/'];
elseif(exist([getenv('USERPROFILE') 'F:/Dropbox/Dropbox/AAM/test data/'], 'file'))
database_root = 'F:/Dropbox/Dropbox/AAM/test data/';
elseif(exist('F:/Dropbox/AAM/test data/', 'file'))
database_root = 'F:/Dropbox/AAM/test data/';
elseif(exist('/multicomp/datasets/head_pose_dbs', 'file'))
database_root = '/multicomp/datasets/head_pose_dbs/';
elseif(exist('/media/tadas/5E08AE0D08ADE3ED/Dropbox/AAM/test data', 'file'))
database_root = '/media/tadas/5E08AE0D08ADE3ED/Dropbox/AAM/test data';
end
buDir = [database_root, '/bu/uniform-light/'];
% The fast and accurate clnf
%%
[resFolderBU_OF] = run_bu_experiment(buDir, false, 'model', 'model/main_clnf_general.txt');
[bu_error_OF, pred_hp_bu, gt_hp_bu, all_errors_bu_OF, rels_bu] = calcBUerror(resFolderBU_OF, buDir);
%%
% Run the Biwi test
biwi_dir = '/biwi pose/';
[res_folder_biwi_OF] = run_biwi_experiment(database_root, biwi_dir, false, 'model', 'model/main_clnf_general.txt');
% Calculate the resulting errors
[biwi_error_OF, pred_hp_biwi, gt_hp_biwi, ~, all_errors_biwi_OF, rels_biwi] = calcBiwiError(res_folder_biwi_OF, [database_root biwi_dir]);
%% Run the ICT test
ict_dir = ['/ict/'];
% Intensity
[res_folder_ict_OF] = run_ict_experiment(database_root, ict_dir, false, 'model', 'model/main_clnf_general.txt');
% Calculate the resulting errors
[ict_error_OF, pred_hp_ict, gt_hp_ict, ~, all_errors_ict_OF, rel_ict] = calcIctError(res_folder_ict_OF, [database_root ict_dir]);
%% Save the results
filename = 'results/Pose_OF';
save(filename);
% Also save them in a reasonable .txt format for easy comparison
f = fopen('results/Pose_OF.txt', 'w');
fprintf(f, 'Dataset and model, pitch, yaw, roll, mean, median\n');
fprintf(f, 'biwi error: %.3f, %.3f, %.3f, %.3f, %.3f\n', biwi_error_OF, mean(all_errors_biwi_OF(:)), median(all_errors_biwi_OF(:)));
fprintf(f, 'bu error: %.3f, %.3f, %.3f, %.3f, %.3f\n', bu_error_OF, mean(all_errors_bu_OF(:)), median(all_errors_bu_OF(:)));
fprintf(f, 'ict error: %.3f, %.3f, %.3f, %.3f, %.3f\n', ict_error_OF, mean(all_errors_ict_OF(:)), median(all_errors_ict_OF(:)));
fclose(f);
clear 'f'

View File

@@ -8,9 +8,9 @@ if(~exist(output_dir, 'dir'))
end end
%% select database and load bb initializations %% select database and load bb initializations
db_root = 'D:\Datasets\300VW_Dataset_2015_12_14\300VW_Dataset_2015_12_14/'; db_root = 'E:\datasets\300VW\300VW_Dataset_2015_12_14/';
bb_root = './300VW_dets_mtcnn/'; bb_root = './300VW_dets_mtcnn/';
extra_dir = 'D:\Datasets\300VW_Dataset_2015_12_14\extra'; extra_dir = 'E:\datasets\300VW\300VW_Dataset_2015_12_14\extra';
[ vid_locs, bboxes, gts_all, invalid_frames ] = CollectTestData(db_root, bb_root, extra_dir); [ vid_locs, bboxes, gts_all, invalid_frames ] = CollectTestData(db_root, bb_root, extra_dir);
%% loading the patch experts and the PDM %% loading the patch experts and the PDM

View File

@@ -2,11 +2,13 @@ clear;
addpath(genpath('../')); addpath(genpath('../'));
output_dir = './CECLM_res_menpo/'; output_dir = './CECLM_res_menpo/';
if(~exist(output_dir, 'dir'))
mkdir(output_dir)
end
%% select database and load bb initializations %% select database and load bb initializations
db_root = 'D:\Datasets\300VW_Dataset_2015_12_14\300VW_Dataset_2015_12_14/'; db_root = 'E:\datasets\300VW\300VW_Dataset_2015_12_14/';
bb_root = './300VW_dets_mtcnn/'; bb_root = './300VW_dets_mtcnn/';
extra_dir = 'D:\Datasets\300VW_Dataset_2015_12_14\extra'; extra_dir = 'E:\datasets\300VW\300VW_Dataset_2015_12_14\extra';
[ vid_locs, bboxes, gts_all, invalid_frames ] = CollectTestData(db_root, bb_root, extra_dir); [ vid_locs, bboxes, gts_all, invalid_frames ] = CollectTestData(db_root, bb_root, extra_dir);
%% loading the patch experts and the PDM %% loading the patch experts and the PDM

View File

@@ -2,27 +2,25 @@ clear;
addpath(genpath('../')); addpath(genpath('../'));
output_dir = './CLM_res/'; output_dir = './CLM_res/';
if(~exist(output_dir, 'dir'))
mkdir(output_dir)
end
%% select database and load bb initializations %% select database and load bb initializations
db_root = 'C:\datasets\300VW_Dataset_2015_12_14/'; db_root = 'E:\datasets\300VW\300VW_Dataset_2015_12_14/';
bb_root = './300VW_dets_mtcnn/'; bb_root = './300VW_dets_mtcnn/';
extra_dir = 'C:\datasets\300VW_Dataset_2015_12_14\extra'; extra_dir = 'E:\datasets\300VW\300VW_Dataset_2015_12_14\extra';
[ vid_locs, bboxes, gts_all, invalid_frames ] = CollectTestData(db_root, bb_root, extra_dir); [ vid_locs, bboxes, gts_all, invalid_frames ] = CollectTestData(db_root, bb_root, extra_dir);
%% loading the patch experts and the PDM %% loading the patch experts and the PDM
[ patches, pdm, clmParams ] = Load_CLM_general(); [ patches, pdm, clmParams ] = Load_CLM_wild();
% Adapt the parameters for video % Defining the view orientations that will be evaluated
clmParams.window_size = [25,25; 23,23; 21,21; 19,19; 17,17;]; %views = [0,0,0];
clmParams.numPatchIters = size(clmParams.window_size,1); views = [0,0,0; 0,-30,0; 0,30,0; 0,-55,0; 0,55,0; 0,0,30; 0,0,-30];
clmParams.regFactor = [35, 27, 20, 20]; views = views * pi/180;
clmParams.sigmaMeanShift = [1.25, 1.375, 1.5, 1.5];
clmParams.tikhonov_factor = [0,0,0, 0];
clmParams.numPatchIters = 4;
num_points = numel(pdm.M) / 3; num_points = numel(pdm.M) / 3;
multi_view = true;
verbose = true; verbose = true;
%% Select video %% Select video
@@ -57,34 +55,12 @@ for i=1:numel(vid_locs)
% have a multi-view version for initialization, otherwise use % have a multi-view version for initialization, otherwise use
% previous shape % previous shape
if(reset && multi_view) if(reset)
clmParams.window_size = [25,25; 23,23; 21,21; 21,21]; clmParams.window_size = [25,25; 23,23; 21,21; 21,21];
clmParams.numPatchIters = 4; clmParams.numPatchIters = 4;
clmParams.startScale = 1; clmParams.startScale = 1;
% The number of hyps is different in CLM from CE-CLM as too
% many actually harm it
views = [0,0,0; 0,-30,0; 0,30,0; 0,-55,0; 0,55,0; 0,0,30; 0,0,-30];
views = views * pi/180;
shapes = zeros(num_points, 2, size(views,1)); [shape,g_param,l_param,lhood,lmark_lhood,view_used] = Fitting_from_bb_multi_hyp(input_image, [], bb, pdm, patches, clmParams, views);
ls = zeros(size(views,1),1);
lmark_lhoods = zeros(num_points,size(views,1));
views_used = zeros(num_points,size(views,1));
g_params = cell(size(views,1),1);
l_params = cell(size(views,1),1);
% Find the best orientation
for v = 1:size(views,1)
[shapes(:,:,v),g_params{v},l_params{v},ls(v),lmark_lhoods(:,v),views_used(v)] = Fitting_from_bb(input_image, [], bb, pdm, patches, clmParams, 'orientation', views(v,:));
end
[lhood, v_ind] = max(ls);
lmark_lhood = lmark_lhoods(:,v_ind);
g_param = g_params{v_ind};
l_param = l_params{v_ind};
shape = shapes(:,:,v_ind);
view_used = views_used(v);
else else
clmParams.window_size = [23,23; 21,21; 19,19; 17,17]; clmParams.window_size = [23,23; 21,21; 19,19; 17,17];

View File

@@ -8,40 +8,19 @@ if(~exist(output_dir, 'dir'))
end end
%% select database and load bb initializations %% select database and load bb initializations
db_root = 'D:\Datasets\300VW_Dataset_2015_12_14\300VW_Dataset_2015_12_14/'; db_root = 'E:\datasets\300VW\300VW_Dataset_2015_12_14/';
bb_root = './300VW_dets_mtcnn/'; bb_root = './300VW_dets_mtcnn/';
extra_dir = 'D:\Datasets\300VW_Dataset_2015_12_14\extra'; extra_dir = 'E:\datasets\300VW\300VW_Dataset_2015_12_14\extra';
[ vid_locs, bboxes, gts_all, invalid_frames ] = CollectTestData(db_root, bb_root, extra_dir); [ vid_locs, bboxes, gts_all, invalid_frames ] = CollectTestData(db_root, bb_root, extra_dir);
%% loading the patch experts and the PDM %% loading the patch experts and the PDM
clmParams = struct;
clmParams.window_size = [25,25; 23,23; 21,21; 19,19; 17,17;]; [ patches, pdm, clmParams ] = Load_CLNF_general();
clmParams.numPatchIters = size(clmParams.window_size,1); views = [0,0,0; 0,-30,0; 0,30,0; 0,-55,0; 0,55,0; 0,0,30; 0,0,-30; 0,-90,0; 0,90,0; 0,-70,40; 0,70,-40];
views = views * pi/180;
[patches] = Load_Patch_Experts( '../models/general/', 'ccnf_patches_*_general.mat', [], [], clmParams);
% the default PDM to use
pdmLoc = ['../models/pdm/pdm_68_aligned_wild.mat'];
load(pdmLoc);
pdm = struct; pdm.M = double(M); pdm.E = double(E); pdm.V = double(V);
num_points = numel(pdm.M) / 3; num_points = numel(pdm.M) / 3;
clmParams.regFactor = [35, 27, 20, 20];
clmParams.sigmaMeanShift = [1.25, 1.375, 1.5, 1.5];
clmParams.tikhonov_factor = [0,0,0,0];
clmParams.startScale = 1;
clmParams.num_RLMS_iter = 10;
clmParams.fTol = 0.01;
clmParams.useMultiScale = true;
clmParams.use_multi_modal = 1;
clmParams.multi_modal_types = patches(1).multi_modal_types;
clmParams.numPatchIters = 4;
multi_view = true;
verbose = true; verbose = true;
%% Select video %% Select video
@@ -76,32 +55,12 @@ for i=1:numel(vid_locs)
% have a multi-view version for initialization, otherwise use % have a multi-view version for initialization, otherwise use
% previous shape % previous shape
if(reset && multi_view) if(reset)
clmParams.window_size = [25,25; 23,23; 21,21; 21,21]; clmParams.window_size = [25,25; 23,23; 21,21; 21,21];
clmParams.numPatchIters = 4; clmParams.numPatchIters = 4;
clmParams.startScale = 1; clmParams.startScale = 1;
views = [0,0,0; 0,-30,0; 0,30,0; 0,-55,0; 0,55,0; 0,0,30; 0,0,-30; 0,-90,0; 0,90,0; 0,-70,40; 0,70,-40]; [shape,g_param,l_param,lhood,lmark_lhood,view_used] = Fitting_from_bb_multi_hyp(input_image, [], bb, pdm, patches, clmParams, views);
views = views * pi/180;
shapes = zeros(num_points, 2, size(views,1));
ls = zeros(size(views,1),1);
lmark_lhoods = zeros(num_points,size(views,1));
views_used = zeros(num_points,size(views,1));
g_params = cell(size(views,1),1);
l_params = cell(size(views,1),1);
% Find the best orientation
for v = 1:size(views,1)
[shapes(:,:,v),g_params{v},l_params{v},ls(v),lmark_lhoods(:,v),views_used(v)] = Fitting_from_bb(input_image, [], bb, pdm, patches, clmParams, 'orientation', views(v,:));
end
[lhood, v_ind] = max(ls);
lmark_lhood = lmark_lhoods(:,v_ind);
g_param = g_params{v_ind};
l_param = l_params{v_ind};
shape = shapes(:,:,v_ind);
view_used = views_used(v);
else else
clmParams.window_size = [23,23; 21,21; 19,19; 17,17]; clmParams.window_size = [23,23; 21,21; 19,19; 17,17];

Some files were not shown because too many files have changed in this diff Show More