рдбреАрдк рд▓рд░реНрдирд┐рдВрдЧ рдФрд░ рд░рд╛рд╕реНрдкрдмреЗрд░реА рдкреАрдЖрдИ

"рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреНрдпрд╛ рд╣реИ?" рдХреБрдмрдбрд╝рд╛ рдиреЗ рдореБрдбрд╝рдХрд░ рдкреВрдЫрд╛ред
"рдПрд▓реНрдбрди -3," рджрд╛рдврд╝реА рд╡рд╛рд▓реЗ рд╡реНрдпрдХреНрддрд┐ рдиреЗ рдХрд╣рд╛ред
"рдПрдХ рд╕рдореГрджреНрдз рдХрд╛рд░," рдореИрдВрдиреЗ рдХрд╣рд╛ред "[1]

рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рдореИрдВрдиреЗ рдЧрд╣рди рдЕрдзреНрдпрдпрди рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред рдХрд╛рдо рдХреЗ рджреМрд░рд╛рди, рдЙрдиреНрд╣реЛрдВрдиреЗ рдореБрдЭреЗ CUDA рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рдПрдХ рдирдпрд╛ рдХрд╛рд░реНрдб рджрд┐рдпрд╛ рдФрд░ рдмреЙрд╕ рдиреЗ рдЗрдЪреНрдЫрд╛ рд╡реНрдпрдХреНрдд рдХреА рдХрд┐ рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ рдХрд╛ рдпрд╣ рд╢рд┐рдЦрд░ рд╣рдорд╛рд░реА рдкреНрд░рдпреЛрдЧрд╢рд╛рд▓рд╛ рдХреЛ рдЖрдЧреЗ рдЫрд▓рд╛рдВрдЧ рд▓рдЧрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛, рдпрд╛ рдХрдо рд╕реЗ рдХрдо рдкреНрд░рддрд┐рдпреЛрдЧрд┐рдпреЛрдВ рдХреЗ рджреНрд░рд╡реНрдпрдорд╛рди рд╕реЗ рдЖрдЧреЗ рдирд╣реАрдВ рдирд┐рдХрд▓рдиреЗ рджреЗрдЧрд╛ред рдореБрдЭреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЯреЗрдиреНрд╕рд░ рдлреНрд▓реЛ рдХреЗ рд╕рд╛рде рдХреБрдЫ рдЕрдиреБрднрд╡ рдерд╛, рд▓реЗрдХрд┐рди рдЗрд╕ рдмрд╛рд░ рдореИрдВрдиреЗ рдЯреЙрд░реНрдЪ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдпрд╣ рдЖрдХрд░реНрд╖рдХ рдерд╛ рдХрд┐ рдпрд╣ рд▓реБрдЖ рдФрд░ рд╕реА рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╣ рдПрдлрдПрдлрдЖрдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рдлреА рд╣рд▓реНрдХрд╛ рдФрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рдПрдХреНрд╕реНрдЯреЗрдВрд╕рд┐рдмрд▓ рд╣реИред рдФрд░ рдореБрдЭреЗ рдкрд╛рдпрдерди рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИред


рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдореИрдВ рд╣рдмрд░рд╛рдмреНрд░ рдкрд░ рдПрдХ рд▓реЗрдЦ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдпрд╛, рдЬрд┐рд╕рдХреА рдЪрд░реНрдЪрд╛ рдХреЗ рджреМрд░рд╛рди рдореБрдЭреЗ рдпрд╛рдж рдЖрдпрд╛ рдХрд┐ рдХрд╣реАрдВ рди рдХрд╣реАрдВ рдореЗрд░реА рд░рд╛рддреНрд░рд┐рд╕реНрддрдВрдн рдореЗрдВ рдореИрдВ рд░рд╛рд╕реНрдкрдмреЗрд░реА рдкрд╛рдИ, рдореЙрдбрд▓ рдмреА + рдХреЛ рджреЗрдЦ рд░рд╣рд╛ рдерд╛, рдФрд░ рдореИрдВ рдпрд╣ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд┐ рдХреНрдпрд╛ рдореИрдВ рдЗрд╕ рдкрд░ рдПрдХ рдорд╢рд╛рд▓ рдЙрдард╛ рд╕рдХрддрд╛ рд╣реВрдВ рдФрд░ рдмрд╣реБрдд рд╕рд░рд▓ рдЪрд▓рд╛ рд╕рдХрддрд╛ рд╣реВрдВред



GPU alexnet . Torch. , , .


(Raspberry PI B+).



torch :


apt-get install git-core  
git clone https://github.com/torch/distro.git ~/torch --recursive

, Torch OpenBLAS QT , :


apt-get install -y build-essential gcc g++ curl cmake libreadline-dev libjpeg-dev libpng-dev ncurses-dev imagemagick libzmq3-dev gfortran libopenblas-base libopenblas-dev

torch:


cd ~/torch;
./install.sh

.


тАФ ? тАФ . [1]

: torch: arm, NEON:


[  6%] Building C object lib/TH/CMakeFiles/TH.dir/THVector.c.o
In file included from /home/pi/torch/pkg/torch/lib/TH/THVector.c:2:0:
/home/pi/torch/pkg/torch/lib/TH/generic/THVectorDispatch.c: In function тАШTHByteVector_vectorDispatchInitтАЩ:
/home/pi/torch/pkg/torch/lib/TH/generic/simd/simd.h:64:3: error: impossible constraint in тАШasmтАЩ
   asm volatile ( "cpuid\n\t"

. , ! , - torch Raspberry PI -B ( NEON): https://github.com/vfonov/deep-pi/releases/download/v1/torch_intstall_raspbian_arm6l_20161218.tar.gz, /home/pi



MNIST, Torch:


th train-on-mnist.lua 
<torch> set nb of threads to 4  
<mnist> using model:    
nn.Sequential {
  [input -> (1) -> (2) -> (3) -> (4) -> (5) -> (6) -> (7) -> (8) -> (9) -> (10) -> output]
  (1): nn.SpatialConvolutionMM(1 -> 32, 5x5)
  (2): nn.Tanh
  (3): nn.SpatialMaxPooling(3x3, 3,3, 1,1)
  (4): nn.SpatialConvolutionMM(32 -> 64, 5x5)
  (5): nn.Tanh
  (6): nn.SpatialMaxPooling(2x2, 2,2)
  (7): nn.Reshape(576)
  (8): nn.Linear(576 -> 200)
  (9): nn.Tanh
  (10): nn.Linear(200 -> 10)
}
<warning> only using 2000 samples to train quickly (use flag -full to use 60000 samples)    
<mnist> loading only 2000 examples  
<mnist> done    
<mnist> loading only 1000 examples  
<mnist> done    
<trainer> on training set:  
<trainer> online epoch # 1 [batchSize = 10] 
 [===================>.................... 471/2000 ....................................]  ETA: 2m20s | Step: 92ms      

, тАФ i5-4590 CPU @ 3.30GHz, GPU:


[=======================>................ 571/2000 ....................................]  ETA: 27s613ms | Step: 19ms   

. 5 .



┬л┬╗ : ┬л. ┬╗ [1]

googlenet. : Alexnet , . squeezenet Network-in-Network, torch.


ARM ( Raspberry PI тАФ ).


torch, тАШasciiтАЩ, тАФ :


Desktop:


model=torch.load(тАШblah.t7тАЩ)
torch.save(тАШblah_ascii.t7тАЩ,model,тАЩasciiтАЩ)

Raspberry PI:


model=torch.load(тАШblah_ascii.t7тАЩ,тАЩasciiтАЩ)
torch.save(тАШblah_arm.t7тАЩ,model)

arm .


:
.


...
local m=torch.load(prefix..'nin_bn_final_arm.t7')
...
local input=image.load(prefix.."n07579787_ILSVRC2012_val_00049211.JPEG")
...
local output=model:forward(cropped)
...

, ImageNET:


>th test_single.lua n07579787_ILSVRC2012_val_00049211.JPEG
loading model:0.57sec   
Running neural net:13.46sec 
 25.3%: n07579787: plate    
 13.8%: n07873807: pizza, pizza pie     
 8.8%: n04263257: soup bowl     
 8.0%: n07590611: hot pot, hotpot   
 7.2%: n07831146: carbonara     

T.e 14 !


: camera display, , 14 . (luarocks install camera) - (luarocks install display).


.


тАж
--  
local cam = image.Camera {idx=0,width=iW,height=iH}
...
  local frame = cam:forward()
  local cropped = image.crop(frame, w1, h1, w1+oW, h1+oH) -- center patch
тАж
 --   
  display_sample_in.win=display.image(cropped,display_sample_in)
тАж
 --    
  local output=model:forward(cropped)
тАж
--   -  
  display_output.win=display.text(out_text,display_output)

display: nohup th -ldisplay.start 8000 0.0.0.0 &



:


рдЫрд╡рд┐


:


рдЫрд╡рд┐


рдЫрд╡рд┐


рдЫрд╡рд┐



, . , - , , .


nnpack, .


:


"рд╕реЛрдорд╡рд╛рд░ рд╕реЗ рд╢рдирд┐рд╡рд╛рд░ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ" рдФрд░ рдП рдФрд░ рдмреА рд╕реНрдЯреНрд░реИрдЧрд╛рддреНрд╕реНрдХреА рджреНрд╡рд╛рд░рд╛ "рдж рдЯреЗрд▓ рдСрдлрд╝ рдж рдереНрд░реА" рдХреЗ рдЙрджреНрдзрд░рдгред
рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рд╡рд░реНрдгрди рдФрд░ рд╕рднреА рд╕реНрд░реЛрддреЛрдВ рдХреЗ рд╕рд╛рде рднрдВрдбрд╛рд░ рдЬреАрдердм рдкрд░ рд╣реИрдВ ред

Source: https://habr.com/ru/post/hi400141/


All Articles