From 3944be62052d713294995b31a02c91811bff642c Mon Sep 17 00:00:00 2001 From: zhouzj <41366441+zzjjay@users.noreply.github.com> Date: Tue, 18 Apr 2023 17:33:44 +0800 Subject: [PATCH] add bipointnet. (#1727) --- example/BiPointNet/README.md | 68 +++++++++++ example/BiPointNet/arch.png | Bin 0 -> 169803 bytes example/BiPointNet/basic.py | 161 +++++++++++++++++++++++++ example/BiPointNet/data.py | 223 +++++++++++++++++++++++++++++++++++ example/BiPointNet/model.py | 190 +++++++++++++++++++++++++++++ example/BiPointNet/test.py | 91 ++++++++++++++ example/BiPointNet/train.py | 151 ++++++++++++++++++++++++ 7 files changed, 884 insertions(+) create mode 100644 example/BiPointNet/README.md create mode 100644 example/BiPointNet/arch.png create mode 100644 example/BiPointNet/basic.py create mode 100644 example/BiPointNet/data.py create mode 100644 example/BiPointNet/model.py create mode 100644 example/BiPointNet/test.py create mode 100644 example/BiPointNet/train.py diff --git a/example/BiPointNet/README.md b/example/BiPointNet/README.md new file mode 100644 index 00000000..cb9867fd --- /dev/null +++ b/example/BiPointNet/README.md @@ -0,0 +1,68 @@ +# BiPointNet + +## 1. 简介 +本示例介绍了一种用于点云模型 (PointNet) 的二值化方法(BiPointNet)。BiPointNet 通过引入熵最大化聚合(Entropy-Maximizing Aggregation)来调整聚合前的分布,以获得最大信息熵,并引入分层尺度因子(Layer-wise Scale Recovery)有效恢复特征表达能力,是一种简单而高效的二值化点云模型的方法。 + +## 2. Benchmark + +| 模型 | Accuracy | 权重下载 | +| ------------- | --------- | --------- | +| PointNet | 89.83 | [PointNet.pdparams](https://bj.bcebos.com/v1/paddle-slim-models/PointNet.pdparams) | +| BiPointNet | 85.86 | [BiPointNet.pdparams](https://bj.bcebos.com/v1/paddle-slim-models/BiPointNet.pdparams) | + + +## 3. BiPointNet 的训练及测试 +BiPointNet 整体结构如图所示,详情见论文 [BIPOINTNET: BINARY NEURAL NETWORK FOR POINT CLOUDS](https://arxiv.org/abs/2010.05501) + +![arch](arch.png) + +### 3.1 准备环境 +- PaddlePaddle >= 2.4 (可从[Paddle官网](https://www.paddlepaddle.org.cn/install/quick?docurl=/documentation/docs/zh/install/pip/linux-pip.html)下载安装) + +安装 paddlepaddle: +```shell +# CPU +pip install paddlepaddle==2.4.2 +# GPU 以Ubuntu、CUDA 11.2为例 +python -m pip install paddlepaddle-gpu==2.4.2.post112 -f https://www.paddlepaddle.org.cn/whl/linux/mkl/avx/stable.html +``` + +### 3.2 准备数据集 + +本示例在 [ModelNet40](https://modelnet.cs.princeton.edu) 数据集上进行了分类实验。 + +```shell +wget https://shapenet.cs.stanford.edu/media/modelnet40_normal_resampled.zip --no-check-certificate +unzip modelnet40_normal_resampled.zip +``` + +### 3.3 启动训练 + +- 训练基准模型 PointNet +``` +export CUDA_VISIBLE_DEVICES=0 +python train.py --save_dir 'pointnet' +``` + +- 训练 BiPointNet +``` +export CUDA_VISIBLE_DEVICES=0 +python train.py --save_dir 'bipointnet' --binary +``` + +### 3.4 验证精度 + +- 测试基准模型 PointNet +```shell +export CUDA_VISIBLE_DEVICES=0 +python test.py --model_path 'PointNet.pdparams' +``` + +- 测试 BiPointNet +```shell +export CUDA_VISIBLE_DEVICES=0 +python train.py --model_path 'BiPointNet.pdparams' --binary +``` + +## 致谢 +感谢 [Macaronlin](https://github.com/Macaronlin) 贡献 BiPointNet。 diff --git a/example/BiPointNet/arch.png b/example/BiPointNet/arch.png new file mode 100644 index 0000000000000000000000000000000000000000..b3296501706dd5c6fb22f469f46a1e9012c29276 GIT binary patch literal 169803 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

9jRWE4en!rlAK>nYy6W-=!cDTn>f+UK!fU(E# z-O~OJuWfyYVx8~83dk>fbzFR_(GF=gI%NL-8yt!z=hBY(rV)LY5Gp+Xl(ae0*GVf` zuYY!4bcmROiG!f07oH(cGW549ANAwr=q9%vNqNuT@^tPDNdxBC|FVUse6gTb{y#K* z1zS{IxVF;WAyU#M-8pnhcehBlG(&f%bazQfyutv|-HmiN4h^$E&iStM8}?djKhK@( z0c2#$6ohQL{SOTh7LBGL=-yfGBuPi`wA-hAm!uvZ4Fl=y>L0!i3_^8=k^3O14h?!iVJhWG6(HAFKv6)x>&mwv#=fZV=Hpx-CWl*UE0S5 zd~`X)q7x6c(or|tLG^sDm9nr@d{)~Xp6uu@To}Rq@Vijg#<$;_6A3Za7lwjIak{MU z@vyK4@XVMgBVLLYO~yg>9Mg?1zLO+mV0F`ytVCIwJ>vlb;=vSF5qg0G{Ih$h*m$=% zA-B}`@7ijPfs2WbtC-HFP{uW9$gyX4Are<7tNTk2*CKQt$D_bRo%2&&`7e%TDyfN& zm7;-E2fk;r=g#(pQQLfrtk)7N`3u`_U|}TX@le5Tmg$v<4(XTTPKUlp^H1jLE^5BpVRbrjzOq4S)^gMB4M$l2iqv{eV2dd9| zN=;oJ+BBq?cr;wB%b&7%xVE|FGfJHEwNa-0lda-?T$@o;&~QFT_7w~UEP)3BzKOr_ z&*V>qs$EuSEk_5!J%`kiWR#wMB|Bg4filxoE;;;w>Vk6aNR~K*L>)h}*@E^})Ag}U zMbH{pqgmPC9Xse1Lu@Ko$7tFJ@L>;_G3-N!Q53CKd#%C8YUOLRV>J--Au^S;t7N()il zSIjl01*&gHmJn?};=Gdlasp7MQbQ_66%b1?bf@n4sJU3tRIcgQi+e5s!tQO1xX~Vc zG%;azuHWl`HR(%fpj68jxmW9BzZuKq-1uoQ{3~q%YB&Cjw?s*DO`3T7@zs6^HUV)k z!LZObN`Iso(N_?EOP}Nx?=!e#4(zFCMDBkAUyFTVszzj z{-Mz6yqMJ>GdI%j+-d%?WN$&vBG&?Ao_HywTF+Wzv^0p><>hPla7_ExKbKTdea9$A zHg#M&1f%R28H)30@UpTY`FTz|6k^(Jw}xn9sT8D7l)cZ9yn3oN$XaHlm_Gx0;fu`* zU4=1Nh)@gu%N=cwnLjS2(}vw2DLzm}RJ3F%EytP}h{^b&7#W8X75Gp!>8p-E{6a)~ z34oL9=$%36HAdL|eub`%lvbS}mLSaOeMFQ?FNN=G#S$oD3iqda`dJ}ush~G{XF6KF zSmM>#7k7&mv(Q_L2sZwMDhUbP5?}S%DaIe^@)P)@*+u_=h9_sCk~wXMM^)1CL_XjUJ$FI7qBXEZIq7LI+3 zpguvQ$C}As#jF>%psx?qx`<-gcbQ}ZK0#ez5k;L3iRa&slcCoV<0VVx7eD9c<|^X8 zVJGbAf0L5>YeT~lK=1yzJAthU0DFT_uN28ORu@a@=PEJSkzM{ z_Kt^yvl!6Lwt;)AEMK zwm`^b*nm8|fwxB`QE0e30B>~84p9U~vhnekTwRLP&lm#oV9*SAPO_O z57vnE;}1-;jI#xzxdf+Pcxdq1)Jx5p@XJG?u+Fa_w=p@?9eLho8`Nh@@PXI3Q9Gt^ zXgO@BW`*)T;TI`wk z5P=-M7b+MJ^OlsLd~lDWnAb#3NUrBiui!Zu9{!{$L{Pn^Y%IOY!0p{qY`66r8jJr> zEj!km7!7myeJ7tw)3wHS-WblP zIj?myAkqmkA6P_mMN=Vcl%4Z|k2hoAw5YEmw>|I(<0u>vgDnrq2lyNY=i_WHo7Jc1 z!y>F0R}iP_6(6Kov1!|&^EO}QDe7?te?Pp`KrG4hk6-JOE&eg~>60Hk#-;#VXv%qS zk8G@KHlku^XD~96xhy?biF;KCw`ktStQEwgF;AHu^*z?>td zRh?g2vt|QIhiGHqm&HTacTsNcS>?W>7aK`6LYL-jLR5&9hpF(oSqT0*3u=IxJ z^OB5RVRTF6InmBy&yC9gTnp~Oh78TjqqLhtPAB=cW(OWt=$3?B1}HMFD}$;u^W%d| zAa{mxjMfO>Soz@>?|ZGQ0W~~;#x5ZgvbmhOt)%U5MvGtYYI%ZR{~8+)b6w-31T+O` zC2rv+hjWwvt`X=rC!|(-S{DgKmoqBhfMj)?wOEXPKdLpkDf+J#96EWGD8)_xyJ7u2nB-u0)$t_&Z|2044EV zqV-suLfrY=UvF&E4p=VlvV7jXvtIxZmS7UtMt5E;iS=vTeYR(CXZC%jC}yMs3>lth zXAszkba|@J9mi4V9aghYPN(xXX@)3Z4sP-`ruCCiL8*0fg|3``w$10pqB+ZB1ez<-Ar&S!$qZR+)8(}3yum!QM z-3iJO;zE}CF0~OlJIxY*XA&bhX~*^m+)2OYR|9irG$a19pQ~NyFEk93W}`0y51!X# zu{~`(uR0GI3y>cVQ>tUwPLG6TF@#*Pupxv3!%VcxMVLbfU$N#kqJR><2H1lI?NA@Ao zo_iWN-3})aX$p_ZL(4b7#(6{8aU!pO1*oyybE`4P9aaK96kK zi;NVkfF)*uRqsu6*`-y1s0--|Gl4X7gbZZq5we$gSQN0Zy;U`m7Z?? zXjuGKNe4V%1JGzoy_XG)ag&E#;af=E3m62GvjOnO9>&&hF7Ne`p-;7-^;kk;pz4|I z)xqfjbp|F}_WcdK@b246zoH~2=aoF&m5%2k(zRtjH{Uu-`)Ews0pANdA^dP6m=v8^ z0X|V=>i)~QuM*U~5|+JXJ~N%@M<(*$K(-1*{x4>#5H%l{evg8`^5apyul{T>j$E-* z8QS}gHdiF*Z;wzTg1^$7bGWnqs~0(glNzF~P?Y~!4NaXc`^)fSn0EH7cmO?s4c01Fj`~~uY9k%r(A~RKQc?Id z_`08Yb+wu5yn^G&-9J0!$P&g$6Q1RfS$LM{^Ejo|Y#f^(*wom63Q7FiugjvsXei$i z*~<1sX6FygARG2$+qCNzhvF2w$Tn}bQnMfbo(e{)ok68w=pQ58Ei?UnhzzP|Nm>U4Wck{?rOEove9 z1+l9R7E))XeO2Z~hf38K>n)|^0J7f9rROR|rCu9Zy_7(fm#_)2lfl6}_}>_a6|Idd z9AcQDg_*e~nuQW*K$2Yk;f<+AoTzXqSq#CcaR}n^>rBiFG^AyLF^TZ~3PR?mZjh~|df(2<|Br$Q0Gm}+Z%YaiHC@MQMiGwPOF$-OYZ*C54`Nl^u_ z0LxdPy<>Fm{C{#Qc&imr{e&~Y@_3$_X(IviQD3!VKk=V?u&#vDaLzc#rui5py$mQ@ zxp`49ZuF0|9$wW3DyNlcbCWp~7!T(CH+A(n=O!(3%eTh?*^Qiq2{^PrQbz@b58R042*4;vu8P{1Jfj z1k!oJ{{`@S0rvs>Q;vGA7(z`A5AV*wCyr9ML}k+{~v#N*uU` z=5Cbo28t7yfE}eQSZyfYV9xGbveoUN)b5H|YQE_=y>@u!O*QGhREOoaS{+P(&tCZe ztGJFiHehw`Lw<0n7uueRUre!bC;sPj-38?~TBGQc&LeTpW*;ue^p)}Z@P--HRzoB) zb!pm4RCJ|j=kS6L4-GBzWKYiNV2dP>(qE&yOOq&awwb|Va^|nZjKp0|Tcde6du|5} zV$-14ab(c;scHV_s_U^WyWx~bhEZ*fC&p{9&!lLp3LEcy+{-J{;h^Ef3Nd+rU-o~5 z-C2tmk7!ns)uMlrd3VinPfYQ!vR@pjrwYYiuLUfILO6XT5vBI}f4ooh zBnn^ET<_BV;Mg`LrTR1)_nDA(d$1DFDoBB7u|_UWv)7yc17r_4IErPiw)1iRWIlBm zbQXgxH?DU8O9{wU=}#+%cq1@8KuF%-im(YZ&Qg}Z4EGya!N1_xPa)aw4~STl^;aW0 zx4%0q0GVq5_c~z1SC08e_+0MOS7RYCiNzFopwK-ua=nli4_1A)L4m~KH_Mq{)lRfq zm|}$!vG=UnK@~ibNztQAQwj%758f=cKW9Y~z8%ZS0%K3etDCHpql6Q|{wua~z7v3= z-vahtA|V8dvY5rVv|6^8?5*i!B4UOiv(dEuGFpFR#NDRVBNeD}SV2IIA~dScF3s;& zwZZLVAwHj@Qf-16^1E#~e8tWF_QoohR?{cTJb5+xLzdN69nLO}n5CV<11&9!Kl&($ z>R-WfUv(8zln)d{HAhK#4$xEpz8qasvWhx&mE29G6<)UrYZvR_kKjB0;D5l(90wWX zLy$0!a6_ByK{DFt8!4qeMKR{J3vT9D&~kV+E$u~p+~B(I!+6TKlqC@LgZr!c5K$-2 znD1RT@Z{dzPJu)37BdN~iqZR%yY<$6a&$5*#93cQ>*GDfUmwlE`VMP}{v5gdWI9q? zJH0l|E;36ZGoXzvkyxmxe?btJikoo*pc(<=f8V}R!~AMBc%5;ezP}ro2yk;6if#ue zRiB*ke<9Zhsr30mIQaZphz*6FM0R{~DNT(7oSwRF6HRQ_1U|Cz6AdQS$ThY+k>?t_ z6TqZR9bOaJz>z_`4;E0ir!UmoOyvdGUq6DgvH*>)1F)5L-h&1;!!Hdu!%2J(&G~JvbLqLBnSa0^ zcDqv|$V=$+&?6=w0zp&a2q_U@|3CjX5q)@^itmYgqNMTXZUg=6!yXKlz*M6e;StGF z%l~>cB0|UUY-#eO;3Mz#*9yD>+whiF?PV(PW0Na&+hW*hc~9QeX4MQ+Ma5eD7hU2i1dHz34f?d2yM#;P@ULjA zc=w9RaDrp`Tk}dnJP=G3B=$#uP&j4!z7)?BNIW`lrA-BhphJfb+)n#baP*2Y2Vc16 zrfzIjSRM;Hb|TAiuu3eh&$a?kSE$AWveQH1xno(TFSTor8M78xo6{Xbsg1#>@9pSl;I=!2xSsF2{Y8Kfb5wDEN8v`;d74l7cK?sgOh&UE z+=+7dr(tLQDw~o1Dtd7S+?V5^q0#5FakV-O+Vk_)5Urme-p-BZbFk9+=E1cwc%9t} zOs(U<3@u&^8Fh*LSDMJU%2aEva0IKAT)BOp7xEIes%Q5Z`?T&)W(kTQ_MfsRFGXre z^s#Rht??~*xy!1xlPZb2lMZjW)Xh6J-?fV>)NC7m_tsEJEXL{@El((&PEoO8vy_ZY z5mcs;uTFwLUmTY(XMqUHJK?d!gp%d}rR~;!SfkoOb1uxozu% zw;QQy0}&?rIRL|*j-n&aK(c(Kq^8RDQDuzyv8~>rAD&<3<*WbDeV7tU9F@^`|18wy zS{Kd_PH$O|8|vmVARfav30Slo+^6+5}OJQS!Tx$L>EJsLWtJXAl;LqkIx!`aX9C~s1Hl(t^lQ2&PF;$v@R zsUJOYQOP7~!#?*cokISei2c1IjtL4UH%o1O=kPD_&&i=5Cu0uj#*!3awnSS;C$Un* zuVBZ^m4|vm@?~q*_iNjJu8DtDn>#v5=lpmg&TmQtKvk3{^>>IFUQ##Zpq)~u!l-|g z&9DtD1!`#KaE{5DAG3jVA+}uIo$h0SrY`*UqC0CwoiHPk(u832j5gA^ca1{pIhFmEq z>c2u-Uu7D=oW~HSzjd#w3wCcSdVc~Cv$U>hGu4|URtkf>XSz9%sn04X+KAiy*>>^8 zp$a2c)SsYo5sln9<O&zTU}B`Pc-l!P=$pk<^Dk z=E(_+T&{ExGsO1P+w!5W@jrCZkdC!%7&4(Qtj1`+Rv#EX%LNkjXd0F4?o#Kv_3~OW zQeT49%hM9a-KxXs>U8{%UfRMZD&mwx!^g zQDjo{*O^p17~gCC!Z6aNCI*SV({=YPcW2@FT=8+K7-M7ikvKwnj&grTaBq)nnvsK> z+@fMQSoj=332w#*J7H}nnJ(EQl2>_XcyhjFv&H>0)*diZoexoL8jWKukrHdyhK;ww z${PMUnAM8urOaAv^*R~)SE6$2LJ*KS!l;Y@e}HfJeU2Kl%01MUA)Q*L@aD_ z-?x0%?4oEGN3SnzO4lBias(xOR;{4qt9?QwtG6D{G8!?NR)|Ap-CgFZs$#Zu zl{yDaK%;nF_tvk6gF-idP&FOj)CHZG>J6j}XvSWN9bo-feAyDN=Lvh?hsG~?S<3Pj z4=0)H-J5>=0f<=fwW3rH$@=!2Oe(vO?~b+456z|<uT zhG_Gbf9s8$5eaUCyLUcGH7>-TnFSHX4E6%!Ul|Np;H|22)psgh^WoLXkhW90yKsr; z9!^m&5JicA1`bW_ZYyvVCE*b<26(h$(BV!#lPxc<*W?gv65;%KO}YCG$|ef~pY5ua zfjh?+a$}N}Y6XhL#s$h&n3auBUFlmF8}@J`@_DV@khNHTAZC%LDxtdBLPb4K)D;Vj za+66DrPXzfE^cRQqrwpAxYbm+%PK9TLzw@d&e|u%Sf{@y-aA4GP)-br7Ji6JquXZb z)=PjLZ6C@UvVtt^h;F}+rk<2+i&mGS3?2-akDv3Pawq-`Iov1v@N%g*>P6@Wh$Ir5 zBXicg8r60aCJfmsSq`sHsc$4fv;k9qV45 zCod*vY#yI)((%VM$^29ZS1o7#qv3_8u`qa)&P{HlL@2|>#eth#rS5b?_GMz6C{j75 z3FM|Mvy#tfZ{_p+kNz32^eSB#sk>m}PAh@XE@IVXLRC+)uT^ov;z!eRaBYCs_udbO;EOTNw~&YRTJ6 zjFOM>po=N$%P0KdA0y=3a1FuzHIl?NjSu=_6#t(vWWWZ>EQ$T(c`Dz);PEjiJp!)s zOq!Gmt&DYgM~a5Uvx>gVhrNFo?z8mTej3I}2K zFb)%&f|~jT_X0VLrPH>M(hY=yYcA1#FF=MRk;5@V!;WNx8k~43`tbQE-tDav+Y-Qx zP!lP1L;0O3td-t-mE^J#a!NF8MFQ5xjzl8AiN*(;uP&x>Br*8)K0Bg@!9Xhu;3Z#F?OOhKJ`lSN8Q#HtO!K7h~ z@nkI`vno6?DUZmblgH3haQC7`yNC?)daLhoe+@|~icKk#T$ay)QcN8B0~$P>In~1# zqTM95?LYL0xw#%b%WujhBc4x|p_-_g#|qAvR^kJ{7Sx8>h?%uKt%9kj6$rf@E~2SF zGtei*+RJK`=&1O%aZ$}VJH66O{#J)sblhgxA-yJ|zMW+-x&NTP7BkW_{94*@5BI~) zFkbm{P(A5)-s1UFV9TooEYN|dDVy19!Up#~b}`1- z$^<;7hy?t!-rcnL|0bss`sM!W1AUsaF-Sug@^XGeE`{ezt_KyHuJ7*T?WW-4GPk+E z!L)RLecf%`%fw}zwRr#QLNu8CS;bjm(5VU4ftaLzo`3;=KN9Yj;^^@V>kSQ{q zZI@q07fBrvOW<6b>cm?!g|>(vE-yyI^qGi_r5}Q(_G)lMt5k3P}eX=Jk{q z^-5poG=0~|j*daN@l7_e@yhi_>zxECydbM9jCyTU zZkLo%8R2&%$;`y-$qZ8sb*$(Y)569YCRu>O`Cl4Ovd zz80E?+^GjNCX9-KnV%`qie;$SwUhpc+d-_HK;T^>8cEWB!@7F24!C!`3Ndq1wji=T zlCb9I8}#hAmNxIF%tUCaVQ0)wD#etGBpELq{TS^j}s4|@z-sVT{8@dJRNBoEvODTxp zEj#^#?BuD)*Y9>OyP6ixV9uGTP-^2coI4yCm8y&1Grhy0@1QB zLj;Ty_mcy8RBn-BpXLEsq`WMY3Z+@0x@z0fn|X@%<=4 z70^W7uncl4t6pJ-&ArOig5O?k^Q9F(M#GS9HXOQd6Kb(k2{PNba(wkV9|Vnu(PG?O zxlT!|s&zQ%f%{TDo0s3!#0HZca+l3d=35PNKX1pS!oW}DvIGh$o>lxE0~Eh^z^3hi z3558;1S13S=m~u66x2a{GaB;!e_?Lsi;+t!-~?TXn)?xJvYSqfr}oUPAvwc_jpcPm zvag3b>6rA-fJVT_%l^Zm5&-zI2LAHI(1i2+?Aiu)U)jVC27FJ6fgF@)fU^yZTzV!% z20tQ(dDJcaMBVZ(=iD=~({KbAYpN|gXRW{C!PWcEiqM^!ON!oLqmC%e%* zA*o%i=G762I$ovd+isSfxPhCf28QLnCVLJcFw&1DpfWqg5pAn5_}Sa#s9n(xwvR(3 zH-#%ZyWbSsT}|VT58;k0a)-j1aw9LQXtHsJz#_QSQI;x@Jm3}Qe6y=ZZrSgNUNZlt z8gE7bFMp7_u4JOXcYer~zAI`4&{Pf8cc@Ogl+i~((C%q<6`FXtUKOPyBf?20t-SBE*MtP6M`K^@4X#5#gmJJ>9z91Wa6B`joQ zx?4K`G~~s;5*hddT~A`Jl0QL>#RdCQ->IGUA%MlZC6vRo?S?i;+Sl*T_7YF=u(t<4 zmBIbv3s>n!uEU~eH|u&CqO)QxwdAwrQl(((uu6+wjqO0koiEdJcA3+v+Cg*R%B7;VaO40#Mh1Lb~j*| z`=(`DfoWb-!M_E$xO5qRrnpduG6FRhKa|P|qBU3cXVZ$QZTrMKK`FzRBDtn3gt*wR zbQv{xlXF6Fm~;v1OK(E!co9Yok8F)n3?{Zsxs-kNJc2-3MOFARsUB1U79SK;N4yYB zJoGHv-6lI@IAi&}=U$t*4vW7>QuVte-M+F`f=`wa1(>Zl>C!Qco1Y8^zUuw$Lg;eW zCj1xqpIJZ&RUx8Ul*1gB_9#;C=@!k-0g%-7sLBYwsw~Z`dKPSgJ%c@m4@pc!p3v z|KLAd&IPLqf}A5p^7o??d?CQfcQZsuUl%fl)9-(p?uIm8uzfzp?6#;%l<(onTa4W? zRKKb0Vw$QXtV5DOBVW{t-Hle?=)8jV5`rjoGvggU9ct8adqNr#geBXt@4f#@+4-i< z6*@Nm0(AGr(SN0!N={lDW-25!PKf{ZK3b=8HbDvYp8mdlC zZQ3}zA|@E|qsxJot`=j?N!?3>$_42$=s!}Wv;WNAl58q7Lppl>;Zx35LeimVGV^A> zF};sJ8kn8^pMmA!&4q9i%$Z@%YYp`hxzpp5zaQ+!t#%+P6((gFnW|(_y|qlEf90y= zAf?UKO4dsy_`?1LIoMI3iU(KUFaeme0~Ew}SFk2@TKvtK`UDsveC?y*o~AS(4%0AA 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

P=ZHY;Ytjo-{sw0BbDs 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

MMC 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�h%L;9k!%u}=k!uKmo)^eoQ1Ud#<@5Rm#oL9ZB`wQD|B ztX1=7o7brjyBg*7sEC5)cJcX}7b7@6pMar+X7wLjB`P#56}vnzZ_DQ3jg^*j1fG#>-;sfXBqJ*`_-$+sY43I;0G9}R%oqq#DUYLo{&DIPL)VIzjT z_K)#^Bg})4T7Hoz1W8+ks*sNBT5ia7?WYBbsEk5}sfNupy&{ot-BMMDxI&k5frXi(I4jJ}2hmpa*tr@|mPvgqFrUd1*Kg6$UIccy_W_^&Vo z`>aKK&6zcsSUCW}S3yrQ%>;+9Dj0!%yn4LH7caAx*Fz|I`S_1XITPP28va%LFGYmo zkucJM|Fd}@u(t&yq0JXoL}wOO3*~x@KM@HSy)Nm~h#E-uvvMnrolx!k77rXUG}m(- z*Y5)CZL!iM1eas6qS(32@#5Lq^!sU*IEuzmtiaQ@01B0f{s{tIA66QW16G5BNlzNY zROde#_?}6?4q!1X{5?6#8j-qXopB4X1F~)*lf_sTOF#*tX0xcGBF=;uG> zM{_gTYbRXTo6FidQ6<#=EVdTp5PGQgJ7!sDK6fQn(&jwNqmp=u6q7rLNnYdE@9T}O zRUKWqvnEJIFYqh3`89?YN0@xyTCg>>q^VtwUnD7liONX9as}#a={j$VE6uD_4+mfF zFhp|gE*$%N8HDLAi=J}-S)k||&ul%4L zA~msKWZ@p#|ANjPq1O2kZc~ z2!l;r{Qt3>;zq8AYn}L*wmMkWDrlVCf6P(M0N8zz zYM)X+iD#1XPM5-m4_9$na$I40`lWHfl0TO%mi(EVGC}5~Y8N+uc<2eo1!5Y@`B_w- z&Of%W^V9m75ziB%_srcMwb~%!;?)rQh=6dHyu&9hHfQdOTIlg<{v-KIi~Isk+0RbQ z{C85T$y9Coxg}rOg*DgiKf1>uWXlpzhqYi zKptzPS--t^xkO9rhC`<`jg`gwn_{$Eu(3|u?(y)wwM z7U=hHOMXtjCLb54y>3J1-_pjF60(s=+QpZC&HiSe_&qqaXd^>9u!Ok$>vU#7p{(cY z{HS_WL#;ITTmN5hN$GA8oN=z+$v|tF|K<7rU&ykRsT}yXME2u>7B!<_)&fI@r7CGW z&t9Lsp*3B2in-OZ9S4Je-i$Zg7$djz&t%T5%Q|Q6r;CS0CV&d<`xVQD{ikgC|M2Fd zZ~F_qekjib`)z~%N%i)(v6nvPTmADo9$%A_+8((yGpVQK&(!;ek2U_%xBqwIZel~- z&gJV4D@i(@>gU+Bsi^FSkctg(HC)^_o)wUVl8`lsZ>|N0Agw`syLT!h^5VMbcdNRP z7uW6GZnOY-G2NzU|3IX5m|MSxu^}55TlQKLdF|Y{d#4(ZjXRxZ>x#Tq?_RWI0FrT~ zH`gvlcI~ZdZDwTS^mcz0L3V9*eyRhqajDzqEkbf_*88<1&+`XA#(N&vxqsfT@Sk5B zSs!^bzfuiI@X_DDurI~eMQ&MW+>VyhQL8jcKlT4u@*~m<=C~5D^y_h_MU2Kevx4;|W&YiGGBxwaju!2%shz-l^K8Bg z1E%}h#;iD2#x&>8?hR2MDnVlASB`C%gTe~DWM4fKY8u^ literal 0 HcmV?d00001 diff --git a/example/BiPointNet/basic.py b/example/BiPointNet/basic.py new file mode 100644 index 00000000..5c688988 --- /dev/null +++ b/example/BiPointNet/basic.py @@ -0,0 +1,161 @@ +# Copyright (c) 2023 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import paddle +from paddle import nn +from paddle.autograd import PyLayer +from paddle.nn import functional as F +from paddle.nn.layer import Conv1D +from paddle.nn.layer.common import Linear + + +class BinaryQuantizer(PyLayer): + @staticmethod + def forward(ctx, input): + ctx.save_for_backward(input) + out = paddle.sign(input) + return out + + @staticmethod + def backward(ctx, grad_output): + input = ctx.saved_tensor()[0] + grad_input = grad_output + grad_input[input >= 1] = 0 + grad_input[input <= -1] = 0 + return grad_input.clone() + + +class BiLinear(Linear): + def __init__(self, + in_features, + out_features, + weight_attr=None, + bias_attr=None, + name=None): + super(BiLinear, self).__init__( + in_features, + out_features, + weight_attr=weight_attr, + bias_attr=bias_attr, + name=name) + + self.scale_weight_init = False + self.scale_weight = paddle.create_parameter(shape=[1], dtype='float32') + + def forward(self, input): + ba = input + + bw = self.weight + bw = bw - bw.mean() + + if self.scale_weight_init == False: + scale_weight = F.linear(ba, bw).std() / F.linear( + paddle.sign(ba), paddle.sign(bw)).std() + if paddle.isnan(scale_weight): + scale_weight = bw.std() / paddle.sign(bw).std() + self.scale_weight.set_value(scale_weight) + self.scale_weight_init = True + + ba = BinaryQuantizer.apply(ba) + bw = BinaryQuantizer.apply(bw) + bw = bw * self.scale_weight + + out = F.linear(x=ba, weight=bw, bias=self.bias, name=self.name) + return out + + +class BiConv1D(Conv1D): + def __init__(self, + in_channels, + out_channels, + kernel_size, + stride=1, + padding=0, + dilation=1, + groups=1, + padding_mode='zeros', + weight_attr=None, + bias_attr=None, + data_format="NCL"): + super(BiConv1D, self).__init__( + in_channels, out_channels, kernel_size, stride, padding, dilation, + groups, padding_mode, weight_attr, bias_attr, data_format) + self.scale_weight_init = False + self.scale_weight = paddle.create_parameter(shape=[1], dtype='float32') + + def forward(self, input): + ba = input + + bw = self.weight + bw = bw - bw.mean() + + padding = 0 + if self._padding_mode != "zeros": + ba = F.pad( + ba, + self._reversed_padding_repeated_twice, + mode=self._padding_mode, + data_format=self._data_format) + else: + padding = self._padding + + if self.scale_weight_init == False: + scale_weight = F.conv1d(ba, bw, bias=self.bias, padding=padding, stride=self._stride, dilation=self._dilation, groups=self._groups, data_format=self._data_format).std() / \ + F.conv1d(paddle.sign(ba), paddle.sign(bw), bias=self.bias, padding=padding, stride=self._stride, dilation=self._dilation, groups=self._groups, data_format=self._data_format).std() + if paddle.isnan(scale_weight): + scale_weight = bw.std() / paddle.sign(bw).std() + + self.scale_weight.set_value(scale_weight) + self.scale_weight_init = True + + ba = BinaryQuantizer.apply(ba) + bw = BinaryQuantizer.apply(bw) + bw = bw * self.scale_weight + + return F.conv1d( + ba, + bw, + bias=self.bias, + padding=padding, + stride=self._stride, + dilation=self._dilation, + groups=self._groups, + data_format=self._data_format) + + +def _to_bi_function(model, fp_layers=[]): + for name, layer in model.named_children(): + if id(layer) in fp_layers: + continue + if isinstance(layer, Linear): + new_layer = BiLinear(layer.weight.shape[0], layer.weight.shape[1], + layer._weight_attr, layer._bias_attr, + layer.name) + new_layer.weight = layer.weight + new_layer.bias = layer.bias + model._sub_layers[name] = new_layer + elif isinstance(layer, Conv1D): + new_layer = BiConv1D(layer._in_channels, layer._out_channels, + layer._kernel_size, layer._stride, + layer._padding, layer._dilation, layer._groups, + layer._padding_mode, layer._param_attr, + layer._bias_attr, layer._data_format) + new_layer.weight = layer.weight + new_layer.bias = layer.bias + model._sub_layers[name] = new_layer + elif isinstance(layer, nn.ReLU): + model._sub_layers[name] = nn.Hardtanh() + else: + model._sub_layers[name] = _to_bi_function(layer, fp_layers) + return model diff --git a/example/BiPointNet/data.py b/example/BiPointNet/data.py new file mode 100644 index 00000000..45fb6d97 --- /dev/null +++ b/example/BiPointNet/data.py @@ -0,0 +1,223 @@ +# Copyright (c) 2023 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import os +import pickle +import warnings +import numpy as np +import paddle +from paddle.io import Dataset +from tqdm import tqdm + +warnings.filterwarnings("ignore") + + +def normalize_point_cloud(pc): + centroid = np.mean(pc, axis=0) + pc = pc - centroid + m = np.max(np.sqrt(np.sum(pc**2, axis=1))) + pc = pc / m + return pc + + +def random_point_dropout(pc, max_dropout_ratio=0.875): + dropout_ratio = np.random.random() * max_dropout_ratio # 0~0.875 + drop_idx = np.where(np.random.random((pc.shape[0])) <= dropout_ratio)[0] + if len(drop_idx) > 0: + pc[drop_idx, :] = pc[0, :] # set to the first point + return pc + + +def random_scale_point_cloud(data, scale_low=0.8, scale_high=1.25): + scales = np.random.uniform(scale_low, scale_high) + data *= scales + return data + + +def shift_point_cloud(data, shift_range=0.1): + shifts = np.random.uniform(-shift_range, shift_range, (3)) + data += shifts + return data + + +def jitter_point_cloud(data: np.ndarray, sigma: float=0.02, clip: float=0.05): + assert clip > 0 + jittered_data = np.clip(sigma * np.random.randn(*data.shape), -clip, clip) + data = data + jittered_data + return data + + +def random_rotate_point_cloud(data: np.ndarray): + angle = np.random.uniform() * 2 * np.pi + cosval = np.cos(angle) + sinval = np.sin(angle) + rotation_matrix = np.array( + [[cosval, sinval, 0], [-sinval, cosval, 0], [0, 0, 1]], + dtype=data.dtype) + data = data @ rotation_matrix + return data + + +def farthest_point_sample(point, npoint): + """ + Input: + xyz: pointcloud data, [N, D] + npoint: number of samples + Return: + centroids: sampled pointcloud index, [npoint, D] + """ + N, D = point.shape + xyz = point[:, :3] + centroids = np.zeros((npoint, )) + distance = np.ones((N, )) * 1e10 + farthest = np.random.randint(0, N) + for i in range(npoint): + centroids[i] = farthest + centroid = xyz[farthest, :] + dist = np.sum((xyz - centroid)**2, -1) + mask = dist < distance + distance[mask] = dist[mask] + farthest = np.argmax(distance, -1) + point = point[centroids.astype(np.int32)] + return point + + +class ModelNetDataset(Dataset): + def __init__( + self, + root, + num_point, + use_uniform_sample=False, + use_normals=False, + num_category=40, + split="train", + process_data=False, ): + self.root = root + self.npoints = num_point + self.split = split + self.process_data = process_data + self.uniform = use_uniform_sample + self.use_normals = use_normals + self.num_category = num_category + + if self.num_category == 10: + self.catfile = os.path.join(self.root, "modelnet10_shape_names.txt") + else: + self.catfile = os.path.join(self.root, "modelnet40_shape_names.txt") + + self.cat = [line.rstrip() for line in open(self.catfile)] + self.classes = dict(zip(self.cat, range(len(self.cat)))) + + shape_ids = {} + if self.num_category == 10: + shape_ids["train"] = [ + line.rstrip() for line in + open(os.path.join(self.root, "modelnet10_train.txt")) + ] + shape_ids["test"] = [ + line.rstrip() for line in + open(os.path.join(self.root, "modelnet10_test.txt")) + ] + else: + shape_ids["train"] = [ + line.rstrip() for line in + open(os.path.join(self.root, "modelnet40_train.txt")) + ] + shape_ids["test"] = [ + line.rstrip() for line in + open(os.path.join(self.root, "modelnet40_test.txt")) + ] + + assert split == "train" or split == "test" + shape_names = ["_".join(x.split("_")[0:-1]) for x in shape_ids[split]] + self.datapath = [(shape_names[i], os.path.join( + self.root, shape_names[i], shape_ids[split][i]) + ".txt", ) + for i in range(len(shape_ids[split]))] + print("The size of %s data is %d" % (split, len(self.datapath))) + + if self.uniform: + self.save_path = os.path.join( + root, + "modelnet%d_%s_%dpts_fps.dat" % (self.num_category, split, + self.npoints), ) + else: + self.save_path = os.path.join( + root, + "modelnet%d_%s_%dpts.dat" % (self.num_category, split, + self.npoints), ) + + if self.process_data: + if not os.path.exists(self.save_path): + print("Processing data %s (only running in the first time)..." % + self.save_path) + self.list_of_points = [None] * len(self.datapath) + self.list_of_labels = [None] * len(self.datapath) + + for index in tqdm( + range(len(self.datapath)), total=len(self.datapath)): + fn = self.datapath[index] + cls = self.classes[self.datapath[index][0]] + cls = np.array([cls]).astype(np.int32) + point_set = np.loadtxt( + fn[1], delimiter=",").astype(np.float32) + + if self.uniform: + point_set = farthest_point_sample( + point_set, self.npoints) + else: + point_set = point_set[0:self.npoints, :] + + self.list_of_points[index] = point_set + self.list_of_labels[index] = cls + + with open(self.save_path, "wb") as f: + pickle.dump([self.list_of_points, self.list_of_labels], f) + else: + print("Load processed data from %s..." % self.save_path) + with open(self.save_path, "rb") as f: + self.list_of_points, self.list_of_labels = pickle.load(f) + + def __len__(self): + return len(self.datapath) + + def _get_item(self, index): + if self.process_data: + point_set, label = self.list_of_points[index], self.list_of_labels[ + index] + else: + fn = self.datapath[index] + cls = self.classes[self.datapath[index][0]] + label = np.array([cls]).astype(np.int32) + point_set = np.loadtxt(fn[1], delimiter=",").astype(np.float32) + + if self.uniform: + point_set = farthest_point_sample(point_set, self.npoints) + else: + point_set = point_set[0:self.npoints, :] + + point_set[:, 0:3] = normalize_point_cloud(point_set[:, 0:3]) + if not self.use_normals: + point_set = point_set[:, 0:3] + + if self.split == "train": + # point_set[:, 0:3] = random_rotate_point_cloud(point_set[:, 0:3]) + point_set[:, 0:3] = jitter_point_cloud(point_set[:, 0:3]) + # point_set[:, 0:3] = random_point_dropout(point_set[:, 0:3]) + point_set[:, 0:3] = random_scale_point_cloud(point_set[:, 0:3]) + point_set[:, 0:3] = shift_point_cloud(point_set[:, 0:3]) + + return paddle.to_tensor(point_set, dtype=paddle.float32), int(label[0]) + + def __getitem__(self, index): + return self._get_item(index) diff --git a/example/BiPointNet/model.py b/example/BiPointNet/model.py new file mode 100644 index 00000000..bb2dcbdf --- /dev/null +++ b/example/BiPointNet/model.py @@ -0,0 +1,190 @@ +# Copyright (c) 2023 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import paddle +import paddle.nn as nn +import paddle.nn.functional as F + +offset_map = {1024: -3.2041, 2048: -3.4025, 4096: -3.5836} + + +class TNet(nn.Layer): + def __init__(self, k=64, binary=False): + super(TNet, self).__init__() + self.conv1 = nn.Conv1D(k, 64, 1) + self.conv2 = nn.Conv1D(64, 128, 1) + self.conv3 = nn.Conv1D(128, 1024, 1) + self.fc1 = nn.Linear(1024, 512) + self.fc2 = nn.Linear(512, 256) + self.fc3 = nn.Linear(256, k * k) + self.act_function = nn.ReLU() + + self.bn1 = nn.BatchNorm1D(64) + self.bn2 = nn.BatchNorm1D(128) + self.bn3 = nn.BatchNorm1D(1024) + self.bn4 = nn.BatchNorm1D(512) + self.bn5 = nn.BatchNorm1D(256) + + self.k = k + self.binary = binary + self.iden = paddle.eye(self.k, self.k, dtype=paddle.float32) + + def forward(self, x): + B, D, N = x.shape + + x = self.act_function(self.bn1(self.conv1(x))) + x = self.act_function(self.bn2(self.conv2(x))) + + if self.binary: + x = self.bn3(self.conv3(x)) + x = paddle.max(x, 2, keepdim=True) + offset_map[N] + else: + x = self.act_function(self.bn3(self.conv3(x))) + x = paddle.max(x, 2, keepdim=True) + x = x.reshape((-1, 1024)) + + x = self.act_function(self.bn4(self.fc1(x))) + x = self.act_function(self.bn5(self.fc2(x))) + x = self.fc3(x) + + x = x.reshape((-1, self.k, self.k)) + self.iden + return x + + +class PointNetEncoder(nn.Layer): + def __init__(self, + global_feat=True, + input_transform=True, + feature_transform=False, + channel=3, + binary=False): + super(PointNetEncoder, self).__init__() + + self.global_feat = global_feat + if input_transform: + self.input_transfrom = TNet(k=channel) + else: + self.input_transfrom = lambda x: paddle.eye( + channel, channel, dtype=paddle.float32 + ) + + self.conv1 = nn.Conv1D(channel, 64, 1) + self.conv2 = nn.Conv1D(64, 128, 1) + self.conv3 = nn.Conv1D(128, 1024, 1) + + self.bn1 = nn.BatchNorm1D(64) + self.bn2 = nn.BatchNorm1D(128) + self.bn3 = nn.BatchNorm1D(1024) + + if feature_transform: + self.feature_transform = TNet(k=64) + else: + self.feature_transform = lambda x: paddle.eye(64, 64, dtype=paddle.float32) + + self.act_function = nn.ReLU() + self.binary = binary + + def forward(self, x): + x = paddle.transpose(x, (0, 2, 1)) + B, D, N = x.shape + trans_input = self.input_transfrom(x) + x = paddle.transpose(x, (0, 2, 1)) + if D > 3: + feature = x[:, :, 3:] + x = x[:, :, :3] + x = paddle.bmm(x, trans_input) + if D > 3: + x = paddle.concat([x, feature], axis=2) + x = paddle.transpose(x, (0, 2, 1)) + x = self.act_function(self.bn1(self.conv1(x))) + + trans_feat = self.feature_transform(x) + x = paddle.transpose(x, (0, 2, 1)) + x = paddle.bmm(x, trans_feat) + x = paddle.transpose(x, (0, 2, 1)) + + pointfeat = x + x = self.act_function(self.bn2(self.conv2(x))) + x = self.bn3(self.conv3(x)) + + if self.binary: + x = paddle.max(x, 2, keepdim=True) + offset_map[N] + else: + x = paddle.max(x, 2, keepdim=True) + + x = x.reshape((-1, 1024)) + + if self.global_feat: + return x, trans_input, trans_feat + else: + x = x.reshape((-1, 1024, 1)).repeat(1, 1, N) + return paddle.cat([x, pointfeat], 1), trans_input, trans_feat + + +class PointNetClassifier(nn.Layer): + def __init__(self, k=40, normal_channel=False, binary=False): + super(PointNetClassifier, self).__init__() + if normal_channel: + channel = 6 + else: + channel = 3 + self.feat = PointNetEncoder( + global_feat=True, + input_transform=True, + feature_transform=True, + channel=channel, + binary=binary, ) + self.fc1 = nn.Linear(1024, 512) + self.fc2 = nn.Linear(512, 256) + self.fc3 = nn.Linear(256, k) + self.dropout = nn.Dropout(p=0.4) + self.bn1 = nn.BatchNorm1D(512) + self.bn2 = nn.BatchNorm1D(256) + self.act_function = nn.ReLU() + self.binary = binary + + def forward(self, x): + x, trans_input, trans_feat = self.feat(x) + x = self.act_function(self.bn1(self.fc1(x))) + x = self.act_function(self.bn2(self.fc2(x))) + if not self.binary: + x = self.dropout(x) + x = self.fc3(x) + return x, trans_input, trans_feat + + +class CrossEntropyMatrixRegularization(nn.Layer): + def __init__(self, mat_diff_loss_scale=1e-3): + super(CrossEntropyMatrixRegularization, self).__init__() + self.mat_diff_loss_scale = mat_diff_loss_scale + + def forward(self, pred, target, trans_feat=None): + loss = F.cross_entropy(pred, target) + + if trans_feat is None: + mat_diff_loss = 0 + else: + mat_diff_loss = self.feature_transform_reguliarzer(trans_feat) + + total_loss = loss + mat_diff_loss * self.mat_diff_loss_scale + return total_loss + + def feature_transform_reguliarzer(self, trans): + d = trans.shape[1] + I = paddle.eye(d) + loss = paddle.mean( + paddle.norm( + paddle.bmm(trans, paddle.transpose(trans, (0, 2, 1))) - I, + axis=(1, 2))) + return loss diff --git a/example/BiPointNet/test.py b/example/BiPointNet/test.py new file mode 100644 index 00000000..7e9fb6bc --- /dev/null +++ b/example/BiPointNet/test.py @@ -0,0 +1,91 @@ +# Copyright (c) 2023 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import argparse +import paddle +from paddle.io import DataLoader +from paddle.metric import Accuracy +from data import ModelNetDataset +from model import PointNetClassifier + + +def parse_args(): + parser = argparse.ArgumentParser("Test") + parser.add_argument("--batch_size", type=int, default=32, help="batch size") + parser.add_argument( + "--num_point", type=int, default=1024, help="point number") + parser.add_argument( + "--num_workers", type=int, default=32, help="num wrokers") + parser.add_argument("--log_freq", type=int, default=10) + parser.add_argument( + "--model_path", type=str, default="./BiPointNet.pdparams") + parser.add_argument( + "--data_dir", + type=str, + default="./modelnet40_normal_resampled", ) + parser.add_argument( + "--binary", + action='store_true', + help="whehter to build binary pointnet") + return parser.parse_args() + + +def test(args): + + test_data = ModelNetDataset( + args.data_dir, split="test", num_point=args.num_point) + test_loader = DataLoader( + test_data, + shuffle=False, + num_workers=args.num_workers, + batch_size=args.batch_size, ) + + model = PointNetClassifier(binary=args.binary) + if args.binary: + import basic + fp_layers = [ + id(model.feat.input_transfrom.conv1), + id(model.feat.conv1), + id(model.fc3) + ] + model = basic._to_bi_function(model, fp_layers=fp_layers) + + def func(model): + if hasattr(model, "scale_weight_init"): + model.scale_weight_init = True + + model.apply(func) + + model_state_dict = paddle.load(args.model_path) + model.set_state_dict(model_state_dict) + + metrics = Accuracy() + metrics.reset() + model.eval() + for iter, data in enumerate(test_loader): + x, y = data + pred, _, _ = model(x) + + correct = metrics.compute(pred, y) + metrics.update(correct) + if iter % args.log_freq == 0: + print("Eval iter:", iter) + test_acc = metrics.accumulate() + print("Test Accuracy: {}".format(test_acc)) + + +if __name__ == "__main__": + args = parse_args() + print(args) + test(args) diff --git a/example/BiPointNet/train.py b/example/BiPointNet/train.py new file mode 100644 index 00000000..60b0729a --- /dev/null +++ b/example/BiPointNet/train.py @@ -0,0 +1,151 @@ +# Copyright (c) 2023 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import os +import argparse +import paddle +from paddle.io import DataLoader +from paddle.metric import Accuracy +from paddle.optimizer import Adam +from paddle.optimizer.lr import CosineAnnealingDecay +from data import ModelNetDataset +from model import CrossEntropyMatrixRegularization, PointNetClassifier + + +def parse_args(): + parser = argparse.ArgumentParser("Train") + parser.add_argument( + "--batch_size", type=int, default=32, help="batch size in training") + parser.add_argument( + "--learning_rate", + type=float, + default=1e-3, + help="learning rate in training") + parser.add_argument( + "--num_point", type=int, default=1024, help="point number") + parser.add_argument( + "--max_epochs", type=int, default=200, help="max epochs") + parser.add_argument( + "--num_workers", type=int, default=32, help="num wrokers") + parser.add_argument( + "--weight_decay", type=float, default=1e-4, help="weight decay") + parser.add_argument("--log_freq", type=int, default=50) + parser.add_argument( + "--pretrained", + type=str, + default='pointnet.pdparams', + help='pretrained model path') + parser.add_argument( + "--save_dir", type=str, default='./save_model', help='save model path') + parser.add_argument( + "--data_dir", + type=str, + default="./modelnet40_normal_resampled", + help='dataset dir') + parser.add_argument( + "--binary", + action='store_true', + help="whehter to build binary pointnet") + return parser.parse_args() + + +def train(args): + train_data = ModelNetDataset( + args.data_dir, split="train", num_point=args.num_point) + test_data = ModelNetDataset( + args.data_dir, split="test", num_point=args.num_point) + train_loader = DataLoader( + train_data, + shuffle=True, + num_workers=args.num_workers, + batch_size=args.batch_size, ) + test_loader = DataLoader( + test_data, + shuffle=False, + num_workers=args.num_workers, + batch_size=args.batch_size, ) + + model = PointNetClassifier(binary=args.binary) + if args.binary: + import basic + fp_layers = [ + id(model.feat.input_transfrom.conv1), + id(model.feat.conv1), + id(model.fc3) + ] + model = basic._to_bi_function(model, fp_layers=fp_layers) + print(model) + + model_state_dict = paddle.load(path=args.pretrained) + model.set_state_dict(model_state_dict) + + scheduler = CosineAnnealingDecay( + learning_rate=args.learning_rate, + T_max=args.max_epochs, ) + + optimizer = Adam( + learning_rate=scheduler, + parameters=model.parameters(), + weight_decay=args.weight_decay, ) + loss_fn = CrossEntropyMatrixRegularization() + metrics = Accuracy() + + best_test_acc = 0 + for epoch in range(args.max_epochs): + metrics.reset() + model.train() + for batch_id, data in enumerate(train_loader): + + x, y = data + pred, trans_input, trans_feat = model(x) + + loss = loss_fn(pred, y, trans_feat) + + correct = metrics.compute(pred, y) + metrics.update(correct) + loss.backward() + optimizer.step() + optimizer.clear_grad() + + if (batch_id + 1) % args.log_freq == 0: + print("Epoch: {}, Batch ID: {}, Loss: {}, ACC: {}".format( + epoch, batch_id + 1, loss.item(), metrics.accumulate())) + + scheduler.step() + + metrics.reset() + model.eval() + for batch_id, data in enumerate(test_loader): + x, y = data + pred, trans_input, trans_feat = model(x) + + correct = metrics.compute(pred, y) + metrics.update(correct) + test_acc = metrics.accumulate() + print("Test epoch: {}, acc is: {}".format(epoch, test_acc)) + + if test_acc > best_test_acc: + best_test_acc = test_acc + save_path = os.path.join(args.save_dir, 'best_model.pdparams') + paddle.save(model.state_dict(), save_path) + print("Best Test ACC: {}, Model saved in {}".format( + test_acc, save_path)) + else: + print("Current Best Test ACC: {}".format(best_test_acc)) + + +if __name__ == "__main__": + args = parse_args() + print(args) + train(args) -- GitLab