From 911b0488201fb145467552bf979fa69a909554aa Mon Sep 17 00:00:00 2001 From: turoad Date: Fri, 7 May 2021 21:27:12 +0800 Subject: [PATCH] refactor & add lanedet --- .cache/culane_anchors_freq.pt | Bin 0 -> 11896 bytes .cache/tusimple_anchors_freq.pt | Bin 0 -> 11896 bytes .gitignore | 3 + README.md | 15 +- configs/laneatt/README.md | 25 + configs/laneatt/resnet18_culane.py | 119 +++++ configs/laneatt/resnet18_tusimple.py | 117 +++++ configs/laneatt/resnet34_tusimple.py | 117 +++++ configs/resa/README.md | 8 +- configs/resa/resa18_tusimple.py | 55 +- configs/resa/resa34_culane.py | 115 +++++ configs/resa/resa34_tusimple.py | 57 ++- configs/resa/resa50_culane.py | 49 +- configs/scnn/README.md | 5 +- ...cnn18_tusimple.py => resnet18_tusimple.py} | 53 +- configs/scnn/resnet50_culane.py | 102 ++++ configs/scnn/vgg16_culane.py | 85 --- configs/ufld/README.md | 18 +- configs/ufld/resnet18_culane.py | 67 ++- configs/ufld/resnet18_tusimple.py | 62 ++- lanedet/__init__.py | 1 + lanedet/core/lane.py | 46 ++ lanedet/datasets/__init__.py | 3 +- lanedet/datasets/base_dataset.py | 112 ++-- lanedet/datasets/culane.py | 139 ++--- lanedet/datasets/lane_cls_dataset.py | 227 --------- lanedet/datasets/process/__init__.py | 12 + lanedet/datasets/process/generate_lane_cls.py | 97 ++++ .../datasets/process/generate_lane_line.py | 145 ++++++ lanedet/datasets/process/process.py | 46 ++ lanedet/datasets/process/transforms.py | 277 ++++++++++ lanedet/datasets/registry.py | 15 +- lanedet/datasets/tusimple.py | 214 +++----- lanedet/engine/__init__.py | 0 lanedet/engine/optimizer.py | 18 + lanedet/{runner => engine}/registry.py | 0 lanedet/{runner => engine}/runner.py | 52 +- lanedet/{runner => engine}/scheduler.py | 0 lanedet/models/heads/__init__.py | 2 + lanedet/models/heads/busd.py | 2 - lanedet/models/heads/lane_cls.py | 62 +++ lanedet/models/heads/lane_seg.py | 101 ++++ lanedet/models/heads/laneatt.py | 482 ++++++++++++++++++ lanedet/models/heads/plain_decoder.py | 4 +- lanedet/models/losses/focal_loss.py | 166 ++++++ lanedet/models/net/__init__.py | 2 +- lanedet/models/net/detector.py | 31 ++ lanedet/models/net/segmentor.py | 35 -- lanedet/models/registry.py | 9 +- lanedet/ops/__init__.py | 3 + lanedet/ops/csrc/nms.cpp | 62 +++ lanedet/ops/csrc/nms_kernel.cu | 193 +++++++ lanedet/ops/nms.py | 33 ++ lanedet/runner/__init__.py | 4 - lanedet/runner/evaluator/__init__.py | 2 - lanedet/runner/evaluator/culane/culane.py | 150 ------ .../culane/lane_evaluation/.gitignore | 2 - .../evaluator/culane/lane_evaluation/Makefile | 50 -- .../culane/lane_evaluation/calTotal.m | 23 - .../lane_evaluation/include/counter.hpp | 47 -- .../include/hungarianGraph.hpp | 71 --- .../lane_evaluation/include/lane_compare.hpp | 51 -- .../culane/lane_evaluation/include/spline.hpp | 28 - .../culane/lane_evaluation/src/counter.cpp | 134 ----- .../culane/lane_evaluation/src/evaluate.cpp | 302 ----------- .../lane_evaluation/src/lane_compare.cpp | 73 --- .../culane/lane_evaluation/src/spline.cpp | 178 ------- lanedet/runner/evaluator/tusimple/tusimple.py | 104 ---- lanedet/runner/optimizer.py | 25 - lanedet/runner/trainer/__init__.py | 2 - lanedet/runner/trainer/lane_cls.py | 28 - lanedet/runner/trainer/losses/dice_loss.py | 15 - lanedet/runner/trainer/losses/focal_loss.py | 17 - lanedet/runner/trainer/resa.py | 44 -- lanedet/runner/utils/logger.py | 50 -- lanedet/utils/config.py | 2 +- lanedet/utils/culane_metric.py | 167 ++++++ lanedet/utils/logger.py | 17 + lanedet/utils/mytransforms.py | 167 ------ lanedet/{runner => }/utils/net_utils.py | 3 +- lanedet/{runner => }/utils/recorder.py | 31 +- lanedet/utils/transforms.py | 358 ------------- .../lane.py => utils/tusimple_metric.py} | 0 main.py | 14 +- requirement.txt | 10 - requirements.txt | 14 + setup.py | 119 +++++ 87 files changed, 3229 insertions(+), 2736 deletions(-) create mode 100644 .cache/culane_anchors_freq.pt create mode 100644 .cache/tusimple_anchors_freq.pt create mode 100644 configs/laneatt/README.md create mode 100644 configs/laneatt/resnet18_culane.py create mode 100644 configs/laneatt/resnet18_tusimple.py create mode 100644 configs/laneatt/resnet34_tusimple.py create mode 100644 configs/resa/resa34_culane.py rename configs/scnn/{scnn18_tusimple.py => resnet18_tusimple.py} (54%) create mode 100644 configs/scnn/resnet50_culane.py delete mode 100644 configs/scnn/vgg16_culane.py create mode 100644 lanedet/__init__.py create mode 100644 lanedet/core/lane.py delete mode 100644 lanedet/datasets/lane_cls_dataset.py create mode 100644 lanedet/datasets/process/__init__.py create mode 100644 lanedet/datasets/process/generate_lane_cls.py create mode 100644 lanedet/datasets/process/generate_lane_line.py create mode 100644 lanedet/datasets/process/process.py create mode 100644 lanedet/datasets/process/transforms.py create mode 100644 lanedet/engine/__init__.py create mode 100644 lanedet/engine/optimizer.py rename lanedet/{runner => engine}/registry.py (100%) rename lanedet/{runner => engine}/runner.py (69%) rename lanedet/{runner => engine}/scheduler.py (100%) create mode 100644 lanedet/models/heads/lane_seg.py create mode 100644 lanedet/models/heads/laneatt.py create mode 100644 lanedet/models/losses/focal_loss.py create mode 100644 lanedet/models/net/detector.py delete mode 100644 lanedet/models/net/segmentor.py create mode 100644 lanedet/ops/__init__.py create mode 100644 lanedet/ops/csrc/nms.cpp create mode 100644 lanedet/ops/csrc/nms_kernel.cu create mode 100644 lanedet/ops/nms.py delete mode 100644 lanedet/runner/__init__.py delete mode 100644 lanedet/runner/evaluator/__init__.py delete mode 100644 lanedet/runner/evaluator/culane/culane.py delete mode 100644 lanedet/runner/evaluator/culane/lane_evaluation/.gitignore delete mode 100755 lanedet/runner/evaluator/culane/lane_evaluation/Makefile delete mode 100755 lanedet/runner/evaluator/culane/lane_evaluation/calTotal.m delete mode 100644 lanedet/runner/evaluator/culane/lane_evaluation/include/counter.hpp delete mode 100644 lanedet/runner/evaluator/culane/lane_evaluation/include/hungarianGraph.hpp delete mode 100644 lanedet/runner/evaluator/culane/lane_evaluation/include/lane_compare.hpp delete mode 100644 lanedet/runner/evaluator/culane/lane_evaluation/include/spline.hpp delete mode 100644 lanedet/runner/evaluator/culane/lane_evaluation/src/counter.cpp delete mode 100644 lanedet/runner/evaluator/culane/lane_evaluation/src/evaluate.cpp delete mode 100644 lanedet/runner/evaluator/culane/lane_evaluation/src/lane_compare.cpp delete mode 100644 lanedet/runner/evaluator/culane/lane_evaluation/src/spline.cpp delete mode 100644 lanedet/runner/evaluator/tusimple/tusimple.py delete mode 100644 lanedet/runner/optimizer.py delete mode 100644 lanedet/runner/trainer/__init__.py delete mode 100644 lanedet/runner/trainer/lane_cls.py delete mode 100644 lanedet/runner/trainer/losses/dice_loss.py delete mode 100644 lanedet/runner/trainer/losses/focal_loss.py delete mode 100644 lanedet/runner/trainer/resa.py delete mode 100644 lanedet/runner/utils/logger.py create mode 100644 lanedet/utils/culane_metric.py create mode 100644 lanedet/utils/logger.py delete mode 100644 lanedet/utils/mytransforms.py rename lanedet/{runner => }/utils/net_utils.py (96%) rename lanedet/{runner => }/utils/recorder.py (72%) delete mode 100644 lanedet/utils/transforms.py rename lanedet/{runner/evaluator/tusimple/lane.py => utils/tusimple_metric.py} (100%) delete mode 100644 requirement.txt create mode 100644 requirements.txt create mode 100644 setup.py diff --git a/.cache/culane_anchors_freq.pt b/.cache/culane_anchors_freq.pt new file mode 100644 index 0000000000000000000000000000000000000000..de834542114518a77f3517aeb256b292495e1df2 GIT binary patch literal 11896 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 literal 0 HcmV?d00001 diff --git a/.cache/tusimple_anchors_freq.pt b/.cache/tusimple_anchors_freq.pt new file mode 100644 index 0000000000000000000000000000000000000000..70c5829aac721e660bdecb6e8cf1de1aea0f2a8c GIT binary patch literal 11896 zcmeI2eUOz^9mg*$u&@wsB7zw0vVg3-EH46zB(NecuEYY8fV#ZwF5Ak&a(5RpN~4e* zk||LuwLxcUv}V$*rc@fS(P-4hoHR9?z^q0Gh9J_hByH&PxqA;jEbM)r`$yA1{Dv>* zJm2Sh&+m8M&)s{gDhs-#Qr)|!PP4wL{;Ac?HJ@qNTvuMZx^?xqjq4icRP;`*IK{Sh zu4!$e)VP(KS{oW$idHt)t=ZJjSi7>dZbM5`^UBQ=i_)o4qm~s?e+wm7*Vm;xwMmNR zZ)jc8Mir$yFY8T-OD~=@amvK06DCicFy)f*>4IeikTn}OrMoP6v#2%Qbx~!C%=UD* z%1+zUg*$3$ni?DHYFZnbHnbEiY_6?quB)BhP}5qJ?q0Sy-J>;Kv^d>!TvcUZ_iyf7 zy6wBvC8|1X@{rVkQ<_|UYCLl)`nGHRiWO_Auq#onwSidYwj{NVw26mr!*`1C>&d?X zaaWel7Ef8vPWajF_)%Ej_C)x_{sVg z9XN!(0pbpH#%kLx2Q%TXh5JvIw{P|R3YbX2N3y)J4h36489wxHJw1Rv7JzH1s|=FY znRX8(9S`<`a!6jMkY)N~IH~JlF{FH`OO5l%HU{2y+qc6&b%eLw_Lbu?F~aL3yfZfI z33b^gj*0CFX1r>IzM>X=7v)2JYR+Wp&f3`?_HQEIT7V`4aJhh$C9!5J4oqIq&e(z?%|B}T$Evu!fL}tGfqTL0?lD`s! zb0@9>wX5*C250tDMV{JwXDRs3b0Uf9_jShS9<-iq_H*APLdvM^g?11d_agEW zz&Rj^sjX*D-G%fXO{77If3>FdCw@%`Xqa-+M}Q+ z2gTJq*vH-vlFTi&_klO?`y(DagNi{??KPBr5bYEKRjXgmr8v`X85oWBWwfEMlFUoB zj_3C%{8h&JJo5Hc60QB|c{-HBr8Ls9^*ok~Gqs+r3s?(#(R!D2oYWdqF7v&8dLNxr zO(mC*r|FroN}{Eisb|m)K|hDQee8NLrd;NGaRTS}Bf6fvZ7}XQt#OI@X#b6NJ9*=< z?@e==I_v)y1qah#kCNA~eQiJFvY>sP3I?J*NMZeXhvhM+1?@t#=TX?t0&1NjNwwa~ zU!=VoNsZO^#?7tZcP^P~v`>@TUe{vW+zQ&aD0>vqdBjc?nfqH(?Y)#=k9Iv;+iAQ> zwEC_AZ_&^v&^jm8C)K(yFGu?pTJM{-xfjS~`V_AJ=NX(LpeCu7qM5mH8M^*Jzm8M% zzH6EG7W|&ei=P@VTGtRsM(g{IENCrXiuNFIK9a<0ty8_)hspd5(WoqEKU+sGQ|sPZ zL8g(yW68@o#&KHTI|q+}!8~{tYL0Odt$q3kIDkXA-EMR2XboT_MMN(712-x251S ziPruxX2;2Uu>GViPHWumS;K)^`#c}5XUR}tKj-7uxYX)zEO4GUFO$SVnoaTmp<)OQN;ET?5Xm;UI~YVi})mT}x_R$9;j8 z%WrsZyDje+c}4_nuD+sJrf#+NkMlXIHJ)4+;&NQ31N*CARuHE(F8#V5W`J?Pe$(P& zw(g+4g1lPir<}-TLF-z&8o1B8mV!2yK4@J#i-31i*JI#wX+wKmhnaf^sebd-u0gW| z6z8GUhyEMEjbIo^>Q|lE0CoW9rCKedZBM8E?>lv-Y49j;ZUs$TUpcodqxMxW0pzQ# zMbn!~DoDdzP3rf0G=7hA18LYJb7_q T#wH-*1U8tx8BwAOJI_%nqcBXy3(S@3J> zJ!veNqoiT4%;nd2w#{+!PU?46(;&m%VVxbBTH9us;owO!KY;8{UdyHRz3agK^3LLC zyQv_o|2VCFjk`A}B={fasr5Xwjsa+w0M8aJ&aW}675@G2ZQ%K$#c7Q<;24E(qVW|O zWpb_kwGZw4WLD>)HC{qZZA9yLbG!4@WAM zfn+?>v^cF(p&01*2DD#9>-|GZqV@BJZG48pFQDC}5KE$Ue=}zPc7L4A5rtTs*7x44 z>}SuEBWUa6M3f8W*gD1!ftS$!B@eA0u7_6uA&^orGfp?V?4A%PW8s;(9oYUo5EJ6Fpuoz;MZR=(tPl z_cCw*oqt8D_O*;2N-uewsv^wIsuA{lh>tc$|us=cz40=e#=8 z@09A{{m$3#exr6H4{PD~WckoW@6`Uj=g~9p+u>KWmjaGZW* z%APd&bK!fyk3Y$_-Q!2VPowYFz=wM3$Y0Jw6aDgJg!gRl`@etS^nB7#-oFLb@Nh5u z-4T8<{3f37g13GA%h)3Rw_VS}_W{AKB6BnR1^Dfm<<(SxCNjI=|4J$+{LHt4Okd)E zjZ}&JG;k%EJK;Yhbxmom$5Nj6!%w4dxGRo@?+O0_{9*W!7RE+^W8gXXr}1rk6wC0h zkbVx{-{p80k}m~MfD@Gc8hza#Qr>;{eozDdX~ygwNMm(R-3ETo!+!YpNU1J!mZV7+ z@a%e+3hDWL4!9odNAK^K#^7Tl&+d=Lwg&zX+%Vob=H4YP0lnaD+e6kx-o4m1{~EkW zOn1UpHM?Iy|W?F&hr7k*2{O!}Ay{C>*cJjpxt{rio3lb>fUf|N&=X?HPcEl?vbocn$* z*8k&xR~Z^B27;;4kNrC)kfiGLV{C&!)PlxwiJH8c==$@$b=fa;>1h`Hw0{va z?RlT|bJouG!2hBL{BiGd$Hu+4m4zxg{&8=g)DZ=1O*Xd&I#_Ly3nErKp{{txt;gt;qJRd&s6Bn7A} H-&Xd&sb|X- literal 0 HcmV?d00001 diff --git a/.gitignore b/.gitignore index a1a77f6..8a86d3d 100644 --- a/.gitignore +++ b/.gitignore @@ -11,6 +11,7 @@ __pycache__/ *.egg-info/ *.egg +*.eggs output.txt .vscode/* @@ -19,6 +20,8 @@ tmp.* *.pt *.pth *.un~ +*.so +build lane debug diff --git a/README.md b/README.md index 57b92bc..9a8b360 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,7 @@ Supported detectors: - [x] [SCNN](configs/scnn) - [x] [UFLD](configs/ufld) - [x] [RESA](configs/resa) -- [ ] LaneATT (comming sonn) +- [x] [LaneATT](configs/laneatt) - [ ] LaneAF (comming sonn) ## Installation @@ -55,7 +55,7 @@ conda install pytorch torchvision cudatoolkit=10.1 -c pytorch pip install torch torchvision # Install python packages -pip install -r requirements.txt +python setup.py build develop ``` ### Data preparation @@ -98,7 +98,7 @@ $TUSIMPLEROOT/test_label.json # test label json file For Tusimple, the segmentation annotation is not provided, hence we need to generate segmentation from the json annotation. ```Shell -python scripts/generate_seg_tusimple.py --root $TUSIMPLEROOT +python tools/generate_seg_tusimple.py --root $TUSIMPLEROOT # this will generate seg_label directory ``` @@ -128,7 +128,13 @@ For example, run python main.py configs/resa/resa50_culane.py --validate --load_from culane_resnet50.pth --gpus 0 1 2 3 ``` -For visualization, just add `--view`. +Currently, this code can output the visualization result when testing, just add `--view`. +We will get the visualization result in `work_dirs/xxx/xxx/visualization`. + +For example, run +```Shell +python main.py configs/resa/resa50_culane.py --validate --load_from culane_resnet50.pth --gpus 0 --view +``` ## Contributing @@ -146,6 +152,7 @@ This project is released under the [Apache 2.0 license](LICNESE). * [XingangPan/SCNN](https://github.com/XingangPan/SCNN) * [ZJULearning/resa](https://github.com/ZJULearning/resa) * [cfzd/Ultra-Fast-Lane-Detection](https://github.com/cfzd/Ultra-Fast-Lane-Detection) +* [lucastabelini/LaneATT](https://github.com/lucastabelini/LaneATT)