From 7651a8bd55e286edcba8b518ef5ada581c6fbd72 Mon Sep 17 00:00:00 2001
From: Vaek <timothe.boulet@student-cs.fr>
Date: Wed, 28 Apr 2021 02:20:09 +0200
Subject: [PATCH] add loaders

---
 __pycache__/imageProcess.cpython-38.pyc  | Bin 1405 -> 1298 bytes
 __pycache__/loadAffwild.cpython-38.pyc   | Bin 0 -> 2277 bytes
 __pycache__/loadExpWDS.cpython-38.pyc    | Bin 0 -> 1321 bytes
 __pycache__/loadFer2013ds.cpython-38.pyc | Bin 1291 -> 1417 bytes
 __pycache__/loadRavdessDs.cpython-38.pyc | Bin 2241 -> 2230 bytes
 imageProcess.py                          |   5 -
 loadAffwild.py                           | 125 +++++++++++++++++++++++
 loadExpWDS.py                            |  65 ++++++++++++
 loadFer2013ds.py                         |   6 +-
 loadRavdessDs.py                         |  35 ++++---
 test.py                                  |  12 ++-
 11 files changed, 221 insertions(+), 27 deletions(-)
 create mode 100644 __pycache__/loadAffwild.cpython-38.pyc
 create mode 100644 __pycache__/loadExpWDS.cpython-38.pyc
 create mode 100644 loadAffwild.py
 create mode 100644 loadExpWDS.py

diff --git a/__pycache__/imageProcess.cpython-38.pyc b/__pycache__/imageProcess.cpython-38.pyc
index 421798d2bd14fb0373f5881855f092994202292c..781d95caa203cb8b26f3f98f4c0cff872bc74a59 100644
GIT binary patch
delta 271
zcmey%HHnKal$V!_fq{X+WmZSRVvdP?IsE(#3=AM4X9fm_;x`NvJG~j_O}tuc$XMi2
z!nuH}hIb)jEnf-40`3}y8onBi8qPGP5{4|E6!sL>6t;!zj0}YyHB7+_njDk2GsaI=
zXIje0Klv<EA@42r)ZF}%%>2BS3`O#j6Pbfl<UkfPvoH%W3NiCB@-cHT@-Qng%P`6?
zaxt?oaxuy=6)8@>%lz9|o`Hd(2uvt2FfiQWDo)KwO)hauOion?Ig$@#4vP>o9}~z7
t0Y(|dBBjaPtlH|g*h(^UQ!`6$F_mN%DS`}90uf-75QM_ySXOyP1pouhIg9`R

delta 396
zcmbQl^_Pn;l$V!_fq{WxB}+#_3+F_>9DWf71_qFjGXn!du@>XRPH)CL6R#H6vn*h%
z;aSL7%U8qa!Vs$$!&1v%D^M#~D^$X;fW3ydhQCH2jj4veMo^rgMxaJWoFR=Vg*}C1
zAuA(8;i($NB99Wz1za_}3mI#LOBfb#*D%xw*KpKurZJT;WbveMq_C#2Eo5h8DD<dd
z3TDvc^!ufpk(gMNoLHQkn35WwHo240pHGvyh>?MTp@;=UFiyV8xPnn+avf8lauiEy
zWoq#)rqqgCOsSQ(m{QB5m{K!tv8U$dmt^MWtz;-tn*4_;h*4#-KeIF+7oz~93Ns5M
z7o!|gk;>#E=HJFjAQQoaG6Ms{Ew19!oYdqJx5VUB9Z)#%fx?JIh?$RxkC}r}fKi6A
zNOkf87H#(^wvx=;)Xb77rjpDe6_6pSAOdU>f&iPzVUwGmQks)$#{@DF6vP~iV93O!
F3II*6T|EE*

diff --git a/__pycache__/loadAffwild.cpython-38.pyc b/__pycache__/loadAffwild.cpython-38.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..11042780dc77eb84fc05ad784113bfa993167f37
GIT binary patch
literal 2277
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
E0GDcXVE_OC

literal 0
HcmV?d00001

diff --git a/__pycache__/loadExpWDS.cpython-38.pyc b/__pycache__/loadExpWDS.cpython-38.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..d6b4a27eb33fc89601a41616ec26f7eb91261925
GIT binary patch
literal 1321
zcmWIL<>g{vU|@)z(vcv}&cN^(#6iZ)3=9ko3=9m#P7DkTDGVu$ISf%Cnkk1d1Vl6E
zFy%5wF*AbLj5#b(tY9^4QS7N4DJ;#5DXeKsDQqe1EsRl|DU87knj9}dru%6!-eT0!
zWW2?lnO9I+5?`E=Sde;)IWsTKEtv_V0E)#K7#KJi7#N&EF0f%_U?^coVXR@8&5*)0
zm${jdks*b-mMMj$mbrwnhB<|`nW>f~g{_t~g{_t?ouQUJouQVahQ);;_DU^h4QmZU
zHfxawBf|v7LY^A76n1llTDBU_1xyPW7BHu9EM$z~sO75VuH~uat>vrbuN9~jEMZx|
zTEkSsCC;#ru~w)?sD!PCr<t*Yt%kpuv6ZQWt%euO;{);1m?Rl$g-h78IBJAbI8(TK
znQBE!xN1b28B^G^nTik8Fiv1BW`c^aWiuCDs}V_IlVqqB&10z%t`#let`RNaX=bVw
zt6^WjTO+oRk&&T>V*ziCAehApb}wt8SqVc5H^}E8Rt@WHh7_I}w%H6RymMJVq9uF_
z_-oh~GS;$#SsV))YdLDzYdF%Ff*CaV{Hpl5oIM<a++BTL{X!I6TotOs6<qxN{9Ijw
z6<k~cLOp{OTq6R)_4M?r1XB`A67^Fn3c~d>a}(23i}kBS5JEYLNvS!-dO5`<w-}3x
z7#SECUV?~Uj0$d=jJJ5oi!w`6U32qGGV}9F?HCvsT#JfQON$f=@=J>pauO9%^7HZz
zuS`|2QgAFyF3nTOFI6bWDJ{-SEiEcmD9bDc*{6_lcx6dya>?P9#ignY3=A+$#R|z8
ziACv$SEd##q@)&<W)>@eT&bW@Tw0`1DvF}Aq$n{HWPqj~m!`li)`FtUypmfi`30$Y
zw^)lyiZTmsu@)EPWR~1wPA)UL#g>^{l$w|VN{1!4m@*4)@qm3EP?VpXT3mdKIln07
z7IRK&-Ywp|{GwdPyp*8S;>@blB2XT=#g<r5keZiriz%<*7HeWrQDUX0coa`wQju?B
zg(o-wqj>W3aw=U?L7qxYiQ-Ai&q+xwg358FW#**%fJ5~b3y2-XnU@5Wyv3M(i!tIB
zW8^KCoXot`C{D1m{1S6hZ!vkM++r@tFSx~$lbTj?i?t{-J)`6nTT*^WNq%k=XL5d8
zW=d*aa_TKsaE#qz1#68GOiN5obxcmqFG|VGOApC+36A0g2^GU!cZ&tYy~UDVlvufv
zp-7E^f#H{hvsFxJacWU<Oi5;Leo0JPVsd6;j&5p2K~ZXPab|v=ZVK3MnfZA!Ir)hx
zt`!C0F2Q;QmA81{+{BVZ4p3gU0%dSU0Y(-^7A7tb3BpVqj2sMXj2z5zjC_nLjC`Cz
z%sh--Of1Y?Ok9i*ECOZ~X)rJ_XmS<tGB7aQVl6Gn%qhObmYkoLmYEKYj3Pk>28JR5
zuxwswZb4;{7?_=wlb=`u)(rL$5}^)~=dj7mPbtkwwF4#PVo<rr!N|eL!^pwN!3+T7
CXLJMr

literal 0
HcmV?d00001

diff --git a/__pycache__/loadFer2013ds.cpython-38.pyc b/__pycache__/loadFer2013ds.cpython-38.pyc
index 08fa3949ccfa1ea775d20f33b432ec244d74ec5e..c01c5f18e516716bf499d2202d506dd2c2a25905 100644
GIT binary patch
delta 786
zcmeC?>g47N<>lpKU|?XlKB*&tfo&t7FQaZ0TTW_TdPd1D#>^<@yriOA%*lyGD;bIe
z7#J9SSvy<Bgche36~~lh=H{2gOzvTn=8MV6PfT%3Eiy7NG<FG|yp_?sUWkE#;iY~L
z14A++$apB`Wnf_7WME)$W?*0_e#OARP{NSHSi>-zA%$r!b2B3&Lke>(V+u<xQwnPe
zTMBy$M+#>OR|<DJdo6Q1LoG`>LoI6wV+~UZPYQ1eUoUfiRV`ZyQx<a#TMB=QKrd4*
zdkISoJII{+6v0}K8g>_k*pOPz8jchpbB0=u8jc!<Y?h)5Mux&|HJmZbwOqB_wLCQ}
z3s_6oYPg#j7cw$3)UYmKt>FT(N*GdvYdB^zq=<kWC_0xlMJz?Umx+;~Fd>}5lp&BI
zh#`WZgna==4a-8tS{5*ibs=LdYY9V5J;+ZIbD2PHsbQ&MO=AjX(3JG6;^%Vqa13&H
z^>y_NQE+ipsFGH2@%Qs{bq!W<aSaId3|4S+4FUzDf}WmUkuU=TLzO^EVo9QY8YFb}
zl8eitSRM1yiz=hoT{4T)ON&dQSlm(*i=tRP5(^3{qnLveQ=-@>D>0j=fkM8Bg@J*g
zl!JkR!6iR0@9@f0g(_Bs;?g38Qcyf7BxfWRr5|3I`iqfQlkpaFYF<jIG6MsHLJCB2
zF<e2hLP}~uX=bqk%psbbw^$2`GV@9%*D%XlgQB|#WMUC0HEHrj@#H2}_$3v2<|d}6
z7Dox>!I;oga*HD^Gbc4KF*h}8@&jfiOFjk$hFi=<`Q=eusk!+jnfZBsNkviI#U(|V
zdFfz7qBu(`3sS*Ma7u&_f|IRTBst7L$%|2dX>tsUmV_D;7b6!VA7hak0|SF5BRCK>
cIg4Z`&tWl@0=p9=0nrXh(h!#5<ku_;0Omc&1^@s6

delta 687
zcmeC=?&jhP<>lpKU|?W)=+Ti-%({`!moe%VTTW_TdPd1D#>`vHc}YdLn3EHWRx%U`
zF)%Rvve(beE74EZ4=qkDD%LN_%*`*+PfJYBOw7?uttco;EiTT?&(lpwElEu-$;{8w
z&&f|raZ4>SGB7kwDW1HM(Y#)Sfq~(reh&jfG9$=hDCT2eVBln6U~pz&U?@Jrz`&5g
zSj(8gRLhjYT+5uolERw8mcpLGk;0k6mCjzvlFm@en$A$mR>DxjoWh;Llfv7}++SA9
zUc#8gRKuRam%`u6RLfDqT*J}K$OtlvvxdWkAvU0vtG<RaMZlb)ma~Slh9R4!D2I`u
za9Isk40A1aEl(|P4eJ7y64n}?X2yk#j0`nw3s`EnL97zC6u}zK*$gQ{H4L*EQiSKS
zf($MU31={62xJIih+rsTU%*krx{$G!70hB=$XLr(!&<|Z#uUt;DdJZI@@<hQgE<33
zl|V{jNuqulBv|y4i_31YI_9MpRo-HE$t+GUEiSpm;+C3Nbc@v^v7n&x7ISc7%B{&M
z%obcM3=9laY@WG^>614wi+gEu-eSowNX@&&3^IeQC^a!9wdfX0UTQ^25jz6|LlG#f
zZ?P5>W#*L>fkL+k6xW)3w|H_BEBum*KnA52-(pO@HQ9khn(@};7#5`{eg+1HTg*lI
z<+r#}bMrxw=$BM<i@Ug_C^Ih|tm77ENo7GQm<di45JDKFj~^+%T@p(Y6+zKy0*Yfs
z7RJdpShU2Hn7A0Z7>kS<7#K7ei$p;bXOYrmDOOV{kZZvb5CcK!4Z;$hoXM&H0G3;}
AQ~&?~

diff --git a/__pycache__/loadRavdessDs.cpython-38.pyc b/__pycache__/loadRavdessDs.cpython-38.pyc
index e58c4aa7cbfe2ee2e1fbb4fa4c064806e15caa57..dee7ea69bad7a07207953feec090113a673aaaa8 100644
GIT binary patch
delta 1237
zcmX>oxJ{5Rl$V!_fq{YH+N_QQQ-O(mGK@|Wwax2OI8)eDI9eE^I8qpc88o?Gg4FnF
zGTvg;(qz2FotalqS`uHJkywzL%nFi%VqOLY1{MYe24@BahT=aA3=AoZwX7u!3m9t{
z7Bbed)vzsKTF8*Xl+9G6RKlFX+|0<xkit^S4iPVUQp2`@Wg$ZhQ*Av*EoTi!3Trk~
z(UThX6h?D~TJ{?D8ded86vk}UqFo?OC9E}!DQuDq&5X5NC2TcZk_@%nCG0iaU_M6{
zXANfxQwn=8Q!P&kR}D`yV+vz7Q_+$drWzh|hFYc?<^|j}TniZ)8S*$vm{T}FPATE4
zVQOZqVaaCkEZSB0q=aDsPYUBg#uQEmh7#Tsu4a${m%!qDDcm)j3z--h3e^gq6spy*
zE#P0sz{pU-us{Gr*D%#Er!fUHX!7_?zRu`2*@em3<Ua!g!!5?bTdZzHiMgqog14BH
z%ZzUEgk`3r<~t`Al#~{w-r~qC_Af}yOHH}OT2PdkS2FnkQw1aMWJ_ipzFR!Gi4}fH
zMV`5d>8Zt&Q<>{jgY^n3Z;7N<loTZ<m$)RBB)S#l=Yq}S00qAVC{9==bFnDZ^DuHS
z^Dr_oi!m~>@UgHkb1-u-7pXEZFuY*~DM}I7;ABW<1TmqQpMima6BdtYj0_AV3@MB?
z46_+hnC3!ajk%UFg(ZbGg$<NWQaDq%Qn*ui(m89H(iv)*(-~@6N*EU~)i5q(bYY0C
zKLSbwDZDkTDSRmmtxS>(vl-?xfkPausD@P>oIFaHYuK6@YuQuyYdLDzTo_`zYB@`o
zYnYoEYZ$Uwi#iw?3T<jQQUuHyYB@?6QUq%_XEUS-)o{#aND;1KpUp6r4P<5wBgniI
zVR42UPH~1>t`e4j1*|Co3mH>H92iR2QbfV=cm-@2XNs64LyCAdQ_-suh7<{q_QH}9
z_8P7l&Kl+#mKug;))=N*=317*l0qAZQ);<O7$)bi8Z#<QUcf5q$WX(bBHhfy$WX&u
z!v~IY8NVuiE@uzNAa_?^SHBPi7gvQUDFqjQKR;L3U<DV~fKbn1g&@Z;7uVomJw3h2
zCs`xpL>U+uLV_GULm*llokLthgB1J@ZFu?b|NsA!o!N{gSF!1-DI=+YnqZ|+Qk0lk
zlA4>ESE7)TTC7lNIC&SFA%~uxUa1lT1H<HxY%0n{JfOtKlwW*{JtwocBqg(`NQi-f
zp$HVkMIs=U=wu6a1KA>31_p*GuC)A|l+>cU#N5;(P(mn@2C0yl+{doVCIw<jPCm$P
z!s7u-WFepg!zeKMKf72xlNci(BL@=;69*FyBMTD;qZFe6vlt@_6Au#?GZP~d0~G$}
zVc}pDVB%rqU=(8HV&Y=rVl1*^U|`T>EK&neoJB?;TR@Jx#addDnNwUO2oewgd4erD
bKQApay$F<W!ATgbwMdzPVe%vnJw^ur&FCbQ

delta 1215
zcmdlccu<fpl$V!_fq{X6FTNuom470i45P<HZS(q6juf_L#x%wh_7sj5#wgAd#$X0b
z&X*vSewvK87_~GRZ*gbl6_l357iT0Eq$aa~q@b9Gfq{XIfq}u9fq|izkCB0)gdv5o
zhOwE6ks*btmZgMo0aFdbLdIIw8rB8O3mH<Fvzdx?N*GdDni&}xQdn!*YU;rfMc-;z
z7qBd3h+(Q_ujQy=PhrbuD*9H#mcnGtP|H@sR>LB~kiwMBT66}asf4wLF@;@{p_#Fk
zvxKdNQ<9;UtAxFV3(V)p;;i9FVNT)bWvb;a;i}<oW=vtqW-2;T!&Jj<&QQx#!@PjI
zhI1h!BgnCw^(9<2OwEibTqRsJ%*~9=EQ}0!93>1X+#na0FfQOp;aSL-!t20L!kfa^
z%$Uto^rY}x3F8936#g2Hg-nbLg$9M+3Jq#l7w|7+U}Pv^Tp$3VYnW=7)0l!8GzI)h
z1sNC^d{UE3N{dnz$}&?9ugq6SNqx!4z`)>Er8IdXqn(;00|SFgeqP?;m8lAeS^1?U
zhgYWRD0t>3rl%HLRk8adCZ*;STTOn)=wb;{`tm;m1H&!G!dt9vMTxnonu51j3yL!H
zN^UVHml@sS3Cm1L&38^L09km8BeU4QAT=*FWpWx*1tZVo`%F5MC7J6Oizm-umg8^&
z#Ul$B<K#WeO7&cfY>Z6*nHZTE*#5IIaWIQ9GO_TnurPBlb1)aFf~;iD%u7oKIUJ-7
zg!vg57&u|^AI8YQkiuBYn8K98oWhdAn!*N3Qz@J&T<M&(Oz8}@%;^lZEF}yJ7;6|8
zGP*Ft9;sz5VFHDE4MR3dQN05rL*b_q<`nK4))bx;hE^s?hS>}$ymOhsQ32Lg!zvC+
zPHZJiHEhj{wd^T;wH!5UE)201wV+t%H)p8jC}B<!sNtN=kRn*aF`FSpsD^zu!(29y
z88wU`{V77?3^knMpftm>fHg&UA!CY&149X$Q;H}!evdIS6zbG)rie*0q=;uT72PRe
zPLTj<FDwHkvKr1B<{Fk}mKdg5=317*vO*n*A8NTvm?!J78Z!z_PGA)kVXom$kp|_1
z8r~W{a7vKzo4k!RLP?B)fq^R|$k8*z)z{T8M8VNH#5FWX!SB$9m;e6%|9^{-YqAcT
z5hKUsC^jP@{*a=?%#zgH)Vvafl+<E{QoYHW*bLc9l^GZq6ehoBQ&GOflwW*{Jtwoc
zBqg(`NSJ|vp$L@Ai?~57Q4k?E*@)dh?G{gNVufE)5hPJXai!(wq@)(*CFZ6U34m0|
zfC$;i_3XNA(jcbP<W1}*_U@p39RP}HCKg5xMkWR*{LjL~!pOqR$IQdX!X&}S$H>9N
z!o<PI!6?Njz%0hd!o<VG#l*xoS(8KB#)g4`L6fV<7-TBQRkv76OEPnci-bS|puBO5
fEjd3gEi=7{86*NuXsl^D`H3Y(Hj^7TOd0I~7)&D+

diff --git a/imageProcess.py b/imageProcess.py
index cba699e..6719ce1 100644
--- a/imageProcess.py
+++ b/imageProcess.py
@@ -29,11 +29,6 @@ def imageProcess(image, writeEmotion=True):
         face_color = image[y:y+h, x:x+w]
         facesList.append(face_color)
 
-        #Detect eyes on the face, create green rectangle
-        eyes = eye_cascade.detectMultiScale(face_gray)
-        for (ex,ey,ew,eh) in eyes:
-            cv2.rectangle(face_color,(ex,ey),(ex+ew,ey+eh),(0,255,0),1)
-
         #Write emotion on the image
         if writeEmotion:
             emotion = fa.detectEmotion(face_color)
diff --git a/loadAffwild.py b/loadAffwild.py
new file mode 100644
index 0000000..c50f069
--- /dev/null
+++ b/loadAffwild.py
@@ -0,0 +1,125 @@
+import os
+import cv2
+from utils import *
+import imageProcess as ip
+from config import input_shape
+
+
+def extractDataFromVideo_(filename, videoName, facesList, labelsList, maxNbrImages):
+        # Extract every faces in a specified video and add it to a list of faces as well as labels corresponding.
+        frameRate = 1/15
+        emotions = ["Neutral", "Angry", "Disgust", "Fear", "Happy", "Sad", "Suprise"]
+
+        # Start capture of a video and reading of a label file
+        cap = cv2.VideoCapture(filename)
+        if (cap.isOpened() == False):
+                print("Error opening video")
+
+        file = open("data/affwild/labels/"+videoName[:-4]+'.txt', 'r')
+        file.readline()
+
+        # Read until video is completed
+        k = 0
+        while (cap.isOpened()):
+                # Capture frame-by-frame
+                ret, frame = cap.read()
+                line = file.readline()
+
+                if ret == True:
+                        k += 1
+
+                        if k*frameRate >= 1:  # Read a frame each N frames where N=1/frameRate
+                                k = 0
+
+                                # Load image and labels
+
+                                #Detect faces on the image
+                                newFaces = ip.imageProcess(frame, writeEmotion=False)
+
+                                #If 2 faces were detected, it means an error was made since there is only single-person videos here.
+                                if len(newFaces) == 1:
+                                        facesList += newFaces
+
+                                        emotionNbr = emotionToNumber(emotions[int(line[0])])
+                                        labelsList.append(emotionNbr)
+                                        print("Donnée ajoutée, donnée :", len(facesList))
+                                elif True: print("Erreur pour la donnée : Aucun ou plusieurs visages détectés")
+
+                                # If we overreach the maximum number of images desired, stop
+                                if len(facesList) > maxNbrImages:
+                                        break
+
+                        # Press Q on keyboard to  exit
+                        if cv2.waitKey(1) & 0xFF == ord('q'):
+                                break
+
+                        # Display the resulting frame
+                        if False:
+                                cv2.imshow('AffWild data extraction...', frame)
+
+                # Break the loop
+                else:
+                        break
+
+        # When everything done, release the video capture object
+        cap.release()
+
+        # Closes all the frames
+        cv2.destroyAllWindows()
+
+        #Close file
+        file.close()
+
+        # Return face and label lists with new datas
+        return facesList, labelsList
+
+
+
+
+# LOAD DATA
+
+def loadAffwildData(maxNbrImages=10000000000):
+        print(f"\nCHARGEMENT DE {maxNbrImages} DONNEES DEPUIS AFFWILD...")
+
+        foldername = "data/affwild/videos/"
+        facesList = []
+        labelsList = []
+        k = 1
+        nbrOfVideos = len(os.listdir(foldername))
+
+        # For each video...
+        for videoName in os.listdir(foldername):
+
+                # If we overreach the maximum number of images desired, stop
+                if len(facesList) >= maxNbrImages:
+                        break
+
+                elif videoName+'_left' in os.listdir("data/affwild/labels") or videoName+'_right' in os.listdir("data/affwild/labels"):
+                        print("Vidéo à deux visages, non pris en compte")
+
+                else:
+                        k+=1
+                        print(f"Traitement de {videoName}, video {k}/{nbrOfVideos}")
+                        filename = foldername+videoName
+
+                        # Press Q on keyboard to exit ONE video
+                        if cv2.waitKey(1) & 0xFF == ord('q'):
+                                break
+
+                        #Add datas extracted from the specified video to features and labels
+                        facesList, labelsList = extractDataFromVideo_(
+                                filename, videoName, facesList, labelsList, maxNbrImages)
+
+        # List of colored images N*M*3 faces to array of gray images 48*48*1
+        N = len(facesList)
+        print(f"TRAITEMENT AFFWILD: traitement des {N} visages détectés sur les vidéos de AffWild...")
+
+        for k in range(N):
+                visage = facesList[k]
+                facesList[k] = normAndResize(visage, input_shape)
+        X = np.array(facesList)
+
+        Y = np.array(labelsList)
+
+        print(N, "données chargées depuis AffWild.")
+        return X, Y
diff --git a/loadExpWDS.py b/loadExpWDS.py
new file mode 100644
index 0000000..f146b52
--- /dev/null
+++ b/loadExpWDS.py
@@ -0,0 +1,65 @@
+import cv2
+from utils import *
+from config import input_shape
+import imageProcess as ip
+import numpy as np
+
+
+def loadExpWData(nbrMaxImages=float('inf'), onlyDetected=False):
+	print(f"\nCHARGEMENT DE {nbrMaxImages} DONNEES DEPUIS EXPW...")
+	folderImages = 'data/expW/images/'
+	fileLabels = 'data/expW/labels.lst'
+
+	file = open(fileLabels, 'r')
+	nbrImages = 0
+	k = 0
+	X = []
+	Y = []
+
+	for line in file:
+		if nbrImages>=nbrMaxImages: break
+		k+= 1
+		
+		#Face extraction, according to the dataset annotations AND the face detector (cascade)
+		imageName, Id, top, left, right, bottom, cofidence, label = line.strip().split(' ')
+		image = cv2.imread(folderImages+imageName)
+		faceAccordingToDS = image[int(top):int(bottom), int(left):int(right)]     
+		facesDetected = ip.imageProcess(faceAccordingToDS, writeEmotion=False)
+		
+		#Suivi visuel (facultatif, fait un peu peur sans attendre 1000ms entre deux images...)
+		if False:
+			cv2.imshow("ExpW importation...", faceAccordingToDS)
+			if cv2.waitKey(1000) & 0xFF == ord('q'):
+				break
+
+		#Add extracted data to our dataset
+		if len(facesDetected) == 1 or not onlyDetected: #Otherwise no face were detected or a no-face was detected as face
+			
+			#Select in priority image detected by detector
+			if len(facesDetected) != 0:
+				face = facesDetected[0]
+			else:
+				face = faceAccordingToDS
+
+			#Colored N*M*3 face to gray 48*48*1 image.
+			gray = normAndResize(face, input_shape)	
+
+			X.append(gray)
+			Y.append(label)	#Emotion order is the same as fer2013.
+			
+			nbrImages += 1
+		else: print("Erreur pour la donnée : Aucun ou plusieurs visages détectés")
+
+	print(f"{nbrImages} données chargées depuis expW (sur {k} données traités).\n")
+
+	X = np.array(X)
+	Y = np.array(Y)
+
+	return X, Y
+
+
+
+
+
+
+
diff --git a/loadFer2013ds.py b/loadFer2013ds.py
index b10e6b8..434ebc9 100644
--- a/loadFer2013ds.py
+++ b/loadFer2013ds.py
@@ -31,7 +31,8 @@ def strToArray(string):  # Fer2013 provides images as string so it needs to be t
 # LOAD DATA AS ARRAY
 
 def loadFer2013Data(maxNbrImages=35887):
-    c = 0
+    print(f"\nCHARGEMENT DE {maxNbrImages} DONNEES DEPUIS FER2013 ...")
+
     nbrImagesFer2013 = 35887
     filename = "data/fer2013.csv"
     emotions = ["Angry", "Disgust", "Fear",
@@ -56,8 +57,9 @@ def loadFer2013Data(maxNbrImages=35887):
             X.append(strToArray(stringImage))
             Y.append(emotionNbr)
 
-            print(f"Image {i} sur {maxNbrImages} chargée")
+            print(f"Donnée {i} sur {maxNbrImages} chargée", end='\r')
 
     X = np.array(X)
     Y = np.array(Y)
+    print(f"{maxNbrImages} données chargées depuis fer2013.")
     return X, Y
diff --git a/loadRavdessDs.py b/loadRavdessDs.py
index cb1db15..f170ce2 100644
--- a/loadRavdessDs.py
+++ b/loadRavdessDs.py
@@ -5,11 +5,10 @@ import imageProcess as ip
 from config import input_shape
 
 
-def extractDataFromVideo(filename, videoName, facesList, labelsList):
+def extractDataFromVideo(filename, videoName, facesList, labelsList, maxNbrImages):
     # Extract every faces in a specified video and add it to a list of faces as well as labels corresponding.
 
     # Start capture of a video
-    print("Lecture vidéo de", videoName)
     frameRate = 1
     cap = cv2.VideoCapture(filename)
     if (cap.isOpened() == False):
@@ -40,12 +39,14 @@ def extractDataFromVideo(filename, videoName, facesList, labelsList):
                 if len(newFaces) == 1:
                     facesList += newFaces
                     labelsList.append(emotionNbr)
-                    print("Donnée ajoutée, Images:", len(
-                        facesList), "Labels:", len(labelsList))
-                else: print("Erreur pour la donnée : Aucun ou plusieurs visages détectés")
+                elif True: print("Erreur pour la donnée : Aucun ou plusieurs visages détectés")
+
+                # If we overreach the maximum number of images desired, stop
+                if len(facesList) > maxNbrImages:
+                    break
 
             # Press Q on keyboard to  exit
-            if cv2.waitKey(25) & 0xFF == ord('q'):
+            if cv2.waitKey(1) & 0xFF == ord('q'):
                 break
 
             # Display the resulting frame
@@ -68,7 +69,8 @@ def extractDataFromVideo(filename, videoName, facesList, labelsList):
 
 # LOAD DATA
 
-def loadRavdessData(maxNbrImages=float('inf')):
+def loadRavdessData(maxNbrImages=10000000000):
+    print(f"\nCHARGEMENT DE {maxNbrImages} DONNEES DEPUIS RAVDESS...")
 
     foldername = "data/ravdessTest/videos/"
     emotions = ["_", "Neutral", "Calm", "Happy",
@@ -79,35 +81,36 @@ def loadRavdessData(maxNbrImages=float('inf')):
     # For each actor...
     for actorName in os.listdir(foldername):
 
-        # If we overreach the maximum number of images desired, stop
-        if len(facesList) > maxNbrImages:
-            break
-
-        print(f"\nTRAITEMENT ACTEUR N°{actorName[-2:]}\n")
+        print(f"TRAITEMENT ACTEUR N°{actorName[-2:]}")
         videoNames = os.listdir(foldername+actorName)
         nbrOfVideos = len(videoNames)
 
         k = 0
         # For each video...
         for videoName in videoNames:
+            # If we overreach the maximum number of images desired, stop
+            if len(facesList) >= maxNbrImages:
+                break
+
             k += 1
             print(f"Traitement de {videoName}, video {k}/{nbrOfVideos}")
             filename = foldername+actorName+'/'+videoName
 
             # Press Q on keyboard to exit ONE video
-            if cv2.waitKey(25) & 0xFF == ord('q'):
+            if cv2.waitKey(1) & 0xFF == ord('q'):
                 break
 
             if videoName[7] == '2':
                 # Doesnt take Calm emotion into account
                 print("Emotion 'Calme', non prise en compte")
             else:
+                #Add datas extracted from the specified video to features and labels
                 facesList, labelsList = extractDataFromVideo(
-                    filename, videoName, facesList, labelsList)
+                    filename, videoName, facesList, labelsList, maxNbrImages)
 
     # List of colored images N*M*3 faces to array of gray images 48*48*1
     N = len(facesList)
-    print(f"Traitement des {N} visages détectés sur les vidéos de Ravdess")
+    print(f"TRAITEMENT RAVDESS: traitement des {N} visages détectés sur les vidéos de Ravdess...")
 
     for k in range(N):
         visage = facesList[k]
@@ -116,5 +119,5 @@ def loadRavdessData(maxNbrImages=float('inf')):
 
     Y = np.array(labelsList)
 
-    print(N, " données chargées depuis Ravdess.")
+    print(N, "données chargées depuis Ravdess.")
     return X, Y
diff --git a/test.py b/test.py
index d376c9b..afd0b49 100644
--- a/test.py
+++ b/test.py
@@ -15,9 +15,13 @@ import random as rd
 import cv2
 import csv
 
-from loadFer2013ds import *
-from loadRavdessDs import *
+from loadFer2013DS import *
+from loadRavdessDS import *
+from loadExpWDS import *
+from loadAffwild import *
 from utils import *
 
-X, Y = loadFer2013Data(100)
-W, Z = loadRavdessData(100)
\ No newline at end of file
+# X, Y = loadFer2013Data(10)
+# W, Z = loadRavdessData(10)
+# A, B = loadExpWData(10)
+C, D = loadAffwildData(1000)
\ No newline at end of file
-- 
GitLab