Page boundary detection in historical documents
25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

854 lines
12KB

  1. input: "data"
  2. input_dim: 1
  3. input_dim: 3
  4. input_dim: 256
  5. input_dim: 256
  6. input: "gt"
  7. input_dim: 1
  8. input_dim: 1
  9. input_dim: 256
  10. input_dim: 256
  11. layer {
  12. name: "Convolution1"
  13. type: "Convolution"
  14. bottom: "data"
  15. top: "Convolution1"
  16. param {
  17. lr_mult: 1
  18. }
  19. param {
  20. lr_mult: 2
  21. }
  22. convolution_param {
  23. num_output: 32
  24. pad: 3
  25. kernel_size: 7
  26. stride: 1
  27. weight_filler {
  28. type: "msra"
  29. }
  30. }
  31. }
  32. layer {
  33. name: "conv_0_0"
  34. type: "ReLU"
  35. bottom: "Convolution1"
  36. top: "Convolution1"
  37. }
  38. layer {
  39. name: "Convolution2"
  40. type: "Convolution"
  41. bottom: "Convolution1"
  42. top: "Convolution2"
  43. param {
  44. lr_mult: 1
  45. }
  46. param {
  47. lr_mult: 2
  48. }
  49. convolution_param {
  50. num_output: 32
  51. pad: 3
  52. kernel_size: 7
  53. stride: 1
  54. weight_filler {
  55. type: "msra"
  56. }
  57. }
  58. }
  59. layer {
  60. name: "conv_0_1"
  61. type: "ReLU"
  62. bottom: "Convolution2"
  63. top: "Convolution2"
  64. }
  65. layer {
  66. name: "Convolution3"
  67. type: "Convolution"
  68. bottom: "Convolution2"
  69. top: "Convolution3"
  70. param {
  71. lr_mult: 1
  72. }
  73. param {
  74. lr_mult: 2
  75. }
  76. convolution_param {
  77. num_output: 32
  78. pad: 3
  79. kernel_size: 7
  80. stride: 1
  81. weight_filler {
  82. type: "msra"
  83. }
  84. }
  85. }
  86. layer {
  87. name: "conv_0_2"
  88. type: "ReLU"
  89. bottom: "Convolution3"
  90. top: "Convolution3"
  91. }
  92. layer {
  93. name: "Convolution4"
  94. type: "Convolution"
  95. bottom: "Convolution3"
  96. top: "Convolution4"
  97. param {
  98. lr_mult: 1
  99. }
  100. param {
  101. lr_mult: 2
  102. }
  103. convolution_param {
  104. num_output: 32
  105. pad: 3
  106. kernel_size: 7
  107. stride: 1
  108. weight_filler {
  109. type: "msra"
  110. }
  111. }
  112. }
  113. layer {
  114. name: "conv_0_3"
  115. type: "ReLU"
  116. bottom: "Convolution4"
  117. top: "Convolution4"
  118. }
  119. layer {
  120. name: "Convolution5"
  121. type: "Convolution"
  122. bottom: "Convolution4"
  123. top: "Convolution5"
  124. param {
  125. lr_mult: 1
  126. }
  127. param {
  128. lr_mult: 2
  129. }
  130. convolution_param {
  131. num_output: 32
  132. pad: 3
  133. kernel_size: 7
  134. stride: 1
  135. weight_filler {
  136. type: "msra"
  137. }
  138. }
  139. }
  140. layer {
  141. name: "conv_0_4"
  142. type: "ReLU"
  143. bottom: "Convolution5"
  144. top: "Convolution5"
  145. }
  146. layer {
  147. name: "Convolution6"
  148. type: "Convolution"
  149. bottom: "Convolution5"
  150. top: "Convolution6"
  151. param {
  152. lr_mult: 1
  153. }
  154. param {
  155. lr_mult: 2
  156. }
  157. convolution_param {
  158. num_output: 32
  159. pad: 3
  160. kernel_size: 7
  161. stride: 1
  162. weight_filler {
  163. type: "msra"
  164. }
  165. }
  166. }
  167. layer {
  168. name: "conv_0_5"
  169. type: "ReLU"
  170. bottom: "Convolution6"
  171. top: "Convolution6"
  172. }
  173. layer {
  174. name: "Convolution7"
  175. type: "Convolution"
  176. bottom: "Convolution6"
  177. top: "Convolution7"
  178. param {
  179. lr_mult: 1
  180. }
  181. param {
  182. lr_mult: 2
  183. }
  184. convolution_param {
  185. num_output: 32
  186. pad: 3
  187. kernel_size: 7
  188. stride: 1
  189. weight_filler {
  190. type: "msra"
  191. }
  192. }
  193. }
  194. layer {
  195. name: "conv_0_6"
  196. type: "ReLU"
  197. bottom: "Convolution7"
  198. top: "Convolution7"
  199. }
  200. layer {
  201. name: "Pooling1"
  202. type: "Pooling"
  203. bottom: "Convolution1"
  204. top: "Pooling1"
  205. pooling_param {
  206. pool: AVE
  207. kernel_size: 2
  208. stride: 2
  209. }
  210. }
  211. layer {
  212. name: "Convolution8"
  213. type: "Convolution"
  214. bottom: "Pooling1"
  215. top: "Convolution8"
  216. param {
  217. lr_mult: 1
  218. }
  219. param {
  220. lr_mult: 2
  221. }
  222. convolution_param {
  223. num_output: 32
  224. pad: 3
  225. kernel_size: 7
  226. stride: 1
  227. weight_filler {
  228. type: "msra"
  229. }
  230. }
  231. }
  232. layer {
  233. name: "conv_1_0"
  234. type: "ReLU"
  235. bottom: "Convolution8"
  236. top: "Convolution8"
  237. }
  238. layer {
  239. name: "Convolution9"
  240. type: "Convolution"
  241. bottom: "Convolution8"
  242. top: "Convolution9"
  243. param {
  244. lr_mult: 1
  245. }
  246. param {
  247. lr_mult: 2
  248. }
  249. convolution_param {
  250. num_output: 32
  251. pad: 3
  252. kernel_size: 7
  253. stride: 1
  254. weight_filler {
  255. type: "msra"
  256. }
  257. }
  258. }
  259. layer {
  260. name: "conv_1_1"
  261. type: "ReLU"
  262. bottom: "Convolution9"
  263. top: "Convolution9"
  264. }
  265. layer {
  266. name: "Convolution10"
  267. type: "Convolution"
  268. bottom: "Convolution9"
  269. top: "Convolution10"
  270. param {
  271. lr_mult: 1
  272. }
  273. param {
  274. lr_mult: 2
  275. }
  276. convolution_param {
  277. num_output: 32
  278. pad: 3
  279. kernel_size: 7
  280. stride: 1
  281. weight_filler {
  282. type: "msra"
  283. }
  284. }
  285. }
  286. layer {
  287. name: "conv_1_2"
  288. type: "ReLU"
  289. bottom: "Convolution10"
  290. top: "Convolution10"
  291. }
  292. layer {
  293. name: "Convolution11"
  294. type: "Convolution"
  295. bottom: "Convolution10"
  296. top: "Convolution11"
  297. param {
  298. lr_mult: 1
  299. }
  300. param {
  301. lr_mult: 2
  302. }
  303. convolution_param {
  304. num_output: 32
  305. pad: 3
  306. kernel_size: 7
  307. stride: 1
  308. weight_filler {
  309. type: "msra"
  310. }
  311. }
  312. }
  313. layer {
  314. name: "conv_1_3"
  315. type: "ReLU"
  316. bottom: "Convolution11"
  317. top: "Convolution11"
  318. }
  319. layer {
  320. name: "Convolution12"
  321. type: "Convolution"
  322. bottom: "Convolution11"
  323. top: "Convolution12"
  324. param {
  325. lr_mult: 1
  326. }
  327. param {
  328. lr_mult: 2
  329. }
  330. convolution_param {
  331. num_output: 32
  332. pad: 3
  333. kernel_size: 7
  334. stride: 1
  335. weight_filler {
  336. type: "msra"
  337. }
  338. }
  339. }
  340. layer {
  341. name: "conv_1_4"
  342. type: "ReLU"
  343. bottom: "Convolution12"
  344. top: "Convolution12"
  345. }
  346. layer {
  347. name: "Convolution13"
  348. type: "Convolution"
  349. bottom: "Convolution12"
  350. top: "Convolution13"
  351. param {
  352. lr_mult: 1
  353. }
  354. param {
  355. lr_mult: 2
  356. }
  357. convolution_param {
  358. num_output: 32
  359. pad: 3
  360. kernel_size: 7
  361. stride: 1
  362. weight_filler {
  363. type: "msra"
  364. }
  365. }
  366. }
  367. layer {
  368. name: "conv_1_5"
  369. type: "ReLU"
  370. bottom: "Convolution13"
  371. top: "Convolution13"
  372. }
  373. layer {
  374. name: "Pooling2"
  375. type: "Pooling"
  376. bottom: "Convolution8"
  377. top: "Pooling2"
  378. pooling_param {
  379. pool: AVE
  380. kernel_size: 2
  381. stride: 2
  382. }
  383. }
  384. layer {
  385. name: "Convolution14"
  386. type: "Convolution"
  387. bottom: "Pooling2"
  388. top: "Convolution14"
  389. param {
  390. lr_mult: 1
  391. }
  392. param {
  393. lr_mult: 2
  394. }
  395. convolution_param {
  396. num_output: 32
  397. pad: 2
  398. kernel_size: 5
  399. stride: 1
  400. weight_filler {
  401. type: "msra"
  402. }
  403. }
  404. }
  405. layer {
  406. name: "conv_2_0"
  407. type: "ReLU"
  408. bottom: "Convolution14"
  409. top: "Convolution14"
  410. }
  411. layer {
  412. name: "Convolution15"
  413. type: "Convolution"
  414. bottom: "Convolution14"
  415. top: "Convolution15"
  416. param {
  417. lr_mult: 1
  418. }
  419. param {
  420. lr_mult: 2
  421. }
  422. convolution_param {
  423. num_output: 32
  424. pad: 2
  425. kernel_size: 5
  426. stride: 1
  427. weight_filler {
  428. type: "msra"
  429. }
  430. }
  431. }
  432. layer {
  433. name: "conv_2_1"
  434. type: "ReLU"
  435. bottom: "Convolution15"
  436. top: "Convolution15"
  437. }
  438. layer {
  439. name: "Convolution16"
  440. type: "Convolution"
  441. bottom: "Convolution15"
  442. top: "Convolution16"
  443. param {
  444. lr_mult: 1
  445. }
  446. param {
  447. lr_mult: 2
  448. }
  449. convolution_param {
  450. num_output: 32
  451. pad: 2
  452. kernel_size: 5
  453. stride: 1
  454. weight_filler {
  455. type: "msra"
  456. }
  457. }
  458. }
  459. layer {
  460. name: "conv_2_2"
  461. type: "ReLU"
  462. bottom: "Convolution16"
  463. top: "Convolution16"
  464. }
  465. layer {
  466. name: "Convolution17"
  467. type: "Convolution"
  468. bottom: "Convolution16"
  469. top: "Convolution17"
  470. param {
  471. lr_mult: 1
  472. }
  473. param {
  474. lr_mult: 2
  475. }
  476. convolution_param {
  477. num_output: 32
  478. pad: 2
  479. kernel_size: 5
  480. stride: 1
  481. weight_filler {
  482. type: "msra"
  483. }
  484. }
  485. }
  486. layer {
  487. name: "conv_2_3"
  488. type: "ReLU"
  489. bottom: "Convolution17"
  490. top: "Convolution17"
  491. }
  492. layer {
  493. name: "Convolution18"
  494. type: "Convolution"
  495. bottom: "Convolution17"
  496. top: "Convolution18"
  497. param {
  498. lr_mult: 1
  499. }
  500. param {
  501. lr_mult: 2
  502. }
  503. convolution_param {
  504. num_output: 32
  505. pad: 2
  506. kernel_size: 5
  507. stride: 1
  508. weight_filler {
  509. type: "msra"
  510. }
  511. }
  512. }
  513. layer {
  514. name: "conv_2_4"
  515. type: "ReLU"
  516. bottom: "Convolution18"
  517. top: "Convolution18"
  518. }
  519. layer {
  520. name: "Pooling3"
  521. type: "Pooling"
  522. bottom: "Convolution14"
  523. top: "Pooling3"
  524. pooling_param {
  525. pool: AVE
  526. kernel_size: 2
  527. stride: 2
  528. }
  529. }
  530. layer {
  531. name: "Convolution19"
  532. type: "Convolution"
  533. bottom: "Pooling3"
  534. top: "Convolution19"
  535. param {
  536. lr_mult: 1
  537. }
  538. param {
  539. lr_mult: 2
  540. }
  541. convolution_param {
  542. num_output: 32
  543. pad: 2
  544. kernel_size: 5
  545. stride: 1
  546. weight_filler {
  547. type: "msra"
  548. }
  549. }
  550. }
  551. layer {
  552. name: "conv_3_0"
  553. type: "ReLU"
  554. bottom: "Convolution19"
  555. top: "Convolution19"
  556. }
  557. layer {
  558. name: "Convolution20"
  559. type: "Convolution"
  560. bottom: "Convolution19"
  561. top: "Convolution20"
  562. param {
  563. lr_mult: 1
  564. }
  565. param {
  566. lr_mult: 2
  567. }
  568. convolution_param {
  569. num_output: 32
  570. pad: 2
  571. kernel_size: 5
  572. stride: 1
  573. weight_filler {
  574. type: "msra"
  575. }
  576. }
  577. }
  578. layer {
  579. name: "conv_3_1"
  580. type: "ReLU"
  581. bottom: "Convolution20"
  582. top: "Convolution20"
  583. }
  584. layer {
  585. name: "Convolution21"
  586. type: "Convolution"
  587. bottom: "Convolution20"
  588. top: "Convolution21"
  589. param {
  590. lr_mult: 1
  591. }
  592. param {
  593. lr_mult: 2
  594. }
  595. convolution_param {
  596. num_output: 32
  597. pad: 2
  598. kernel_size: 5
  599. stride: 1
  600. weight_filler {
  601. type: "msra"
  602. }
  603. }
  604. }
  605. layer {
  606. name: "conv_3_2"
  607. type: "ReLU"
  608. bottom: "Convolution21"
  609. top: "Convolution21"
  610. }
  611. layer {
  612. name: "Convolution22"
  613. type: "Convolution"
  614. bottom: "Convolution21"
  615. top: "Convolution22"
  616. param {
  617. lr_mult: 1
  618. }
  619. param {
  620. lr_mult: 2
  621. }
  622. convolution_param {
  623. num_output: 32
  624. pad: 2
  625. kernel_size: 5
  626. stride: 1
  627. weight_filler {
  628. type: "msra"
  629. }
  630. }
  631. }
  632. layer {
  633. name: "conv_3_3"
  634. type: "ReLU"
  635. bottom: "Convolution22"
  636. top: "Convolution22"
  637. }
  638. layer {
  639. name: "upsample_1"
  640. type: "Deconvolution"
  641. bottom: "Convolution13"
  642. top: "upsample_1"
  643. param {
  644. lr_mult: 0
  645. decay_mult: 0
  646. }
  647. convolution_param {
  648. kernel_size: 4
  649. num_output: 32
  650. group: 32
  651. stride: 2
  652. pad: 1
  653. weight_filler: { type: 'bilinear' }
  654. bias_term: false
  655. }
  656. }
  657. layer {
  658. name: "upsample_2"
  659. type: "Deconvolution"
  660. bottom: "Convolution18"
  661. top: "upsample_2"
  662. param {
  663. lr_mult: 0
  664. decay_mult: 0
  665. }
  666. convolution_param {
  667. kernel_size: 8
  668. num_output: 32
  669. group: 32
  670. stride: 4
  671. pad: 2
  672. weight_filler: { type: 'bilinear' }
  673. bias_term: false
  674. }
  675. }
  676. layer {
  677. name: "upsample_3"
  678. type: "Deconvolution"
  679. bottom: "Convolution22"
  680. top: "upsample_3"
  681. param {
  682. lr_mult: 0
  683. decay_mult: 0
  684. }
  685. convolution_param {
  686. kernel_size: 16
  687. num_output: 32
  688. group: 32
  689. stride: 8
  690. pad: 4
  691. weight_filler: { type: 'bilinear' }
  692. bias_term: false
  693. }
  694. }
  695. layer {
  696. name: "merged"
  697. type: "Concat"
  698. bottom: "Convolution7"
  699. bottom: "upsample_1"
  700. bottom: "upsample_2"
  701. bottom: "upsample_3"
  702. top: "merged"
  703. }
  704. layer {
  705. name: "Convolution26"
  706. type: "Convolution"
  707. bottom: "merged"
  708. top: "Convolution26"
  709. param {
  710. lr_mult: 1
  711. }
  712. param {
  713. lr_mult: 2
  714. }
  715. convolution_param {
  716. num_output: 32
  717. pad: 3
  718. kernel_size: 7
  719. stride: 1
  720. weight_filler {
  721. type: "msra"
  722. }
  723. }
  724. }
  725. layer {
  726. name: "merged_conv"
  727. type: "ReLU"
  728. bottom: "Convolution26"
  729. top: "Convolution26"
  730. }
  731. layer {
  732. name: "Convolution27"
  733. type: "Convolution"
  734. bottom: "Convolution26"
  735. top: "Convolution27"
  736. param {
  737. lr_mult: 1
  738. }
  739. param {
  740. lr_mult: 2
  741. }
  742. convolution_param {
  743. num_output: 32
  744. pad: 2
  745. kernel_size: 5
  746. stride: 1
  747. weight_filler {
  748. type: "msra"
  749. }
  750. }
  751. }
  752. layer {
  753. name: "ReLU1"
  754. type: "ReLU"
  755. bottom: "Convolution27"
  756. top: "Convolution27"
  757. }
  758. layer {
  759. name: "Convolution28"
  760. type: "Convolution"
  761. bottom: "Convolution27"
  762. top: "Convolution28"
  763. param {
  764. lr_mult: 1
  765. }
  766. param {
  767. lr_mult: 2
  768. }
  769. convolution_param {
  770. num_output: 32
  771. pad: 2
  772. kernel_size: 5
  773. stride: 1
  774. weight_filler {
  775. type: "msra"
  776. }
  777. }
  778. }
  779. layer {
  780. name: "rep_layer_0"
  781. type: "ReLU"
  782. bottom: "Convolution28"
  783. top: "Convolution28"
  784. }
  785. layer {
  786. name: "Convolution29"
  787. type: "Convolution"
  788. bottom: "Convolution28"
  789. top: "Convolution29"
  790. param {
  791. lr_mult: 1
  792. }
  793. param {
  794. lr_mult: 2
  795. }
  796. convolution_param {
  797. num_output: 32
  798. pad: 2
  799. kernel_size: 5
  800. stride: 1
  801. weight_filler {
  802. type: "msra"
  803. }
  804. }
  805. }
  806. layer {
  807. name: "ReLU2"
  808. type: "ReLU"
  809. bottom: "Convolution29"
  810. top: "Convolution29"
  811. }
  812. layer {
  813. name: "Convolution30"
  814. type: "Convolution"
  815. bottom: "Convolution29"
  816. top: "Convolution30"
  817. param {
  818. lr_mult: 1
  819. }
  820. param {
  821. lr_mult: 2
  822. }
  823. convolution_param {
  824. num_output: 1
  825. pad: 0
  826. kernel_size: 1
  827. stride: 1
  828. weight_filler {
  829. type: "msra"
  830. }
  831. }
  832. }
  833. layer {
  834. name: "baselines_7_prob_0"
  835. type: "Sigmoid"
  836. bottom: "Convolution30"
  837. top: "out"
  838. }
  839. layer {
  840. name: "Silence"
  841. type: "Silence"
  842. bottom: "out"
  843. }
  844. layer {
  845. name: "baselines_7_loss_0"
  846. type: "SigmoidCrossEntropyLoss"
  847. bottom: "Convolution30"
  848. bottom: "gt"
  849. top: "loss"
  850. loss_weight: 1.0
  851. }