当前最好的实例分割网络非PANet莫属,可是由于模型太新,网上的资料太少,最近的项目需要 实例分割,只能自己踩踩坑了,目前我还没看到一篇关于PANet训练的博客,只有几篇讲论文的。

环境:ubuntu16.04    anaconda3  pytorch0.4.0

将代码down下来后,我在anaconda中新开了一个环境,用的是python3.6,如果用python2的话,在lib文件夹下的make.sh中的python3需要修改一下

然后一开始的时候我没有进行make,直接进行测试,运行

  1. python tools/test_net.py --dataset coco2017 --cfg configs/panet/e2e_panet_R-50-FPN_2x_mask.yaml --load_ckpt {path/to/your/checkpoint}

然后,报错如下

  1. Traceback (most recent call last):
  2. File "tools/test_net.py", line 14, in <module>
  3. from core.test_engine import run_inference
  4. File "/home/wzy/Documents/PANet-master/lib/core/test_engine.py", line 39, in <module>
  5. from modeling import model_builder
  6. File "/home/wzy/Documents/PANet-master/lib/modeling/model_builder.py", line 11, in <module>
  7. from model.roi_pooling.functions.roi_pool import RoIPoolFunction
  8. File "/home/wzy/Documents/PANet-master/lib/model/roi_pooling/functions/roi_pool.py", line 3, in <module>
  9. from .._ext import roi_pooling
  10. File "/home/wzy/Documents/PANet-master/lib/model/roi_pooling/_ext/roi_pooling/__init__.py", line 3, in <module>
  11. from ._roi_pooling import lib as _lib, ffi as _ffi
  12. ImportError: /home/wzy/Documents/PANet-master/lib/model/roi_pooling/_ext/roi_pooling/_roi_pooling.so: undefined symbol: __cudaPopCallConfiguration

还是需要make一下的,结果这个环节更让人头大,一直报错

  1. running build_ext
  2. building 'utils.cython_bbox' extension
  3. creating build
  4. creating build/temp.linux-x86_64-3.6
  5. creating build/temp.linux-x86_64-3.6/utils
  6. gcc -pthread -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -std=c99 -fPIC -I/home/ustc/anaconda3/envs/py36/lib/python3.6/site-packages/numpy/core/include -I/home/ustc/anaconda3/envs/py36/include/python3.6m -c utils/cython_bbox.c -o build/temp.linux-x86_64-3.6/utils/cython_bbox.o -Wno-cpp
  7. creating build/lib.linux-x86_64-3.6
  8. creating build/lib.linux-x86_64-3.6/utils
  9. gcc -pthread -shared -L/home/ustc/anaconda3/envs/py36/lib -Wl,-rpath=/home/ustc/anaconda3/envs/py36/lib,--no-as-needed -std=c99 build/temp.linux-x86_64-3.6/utils/cython_bbox.o -L/home/ustc/anaconda3/envs/py36/lib -lpython3.6m -o build/lib.linux-x86_64-3.6/utils/cython_bbox.cpython-36m-x86_64-linux-gnu.so
  10. building 'utils.cython_nms' extension
  11. gcc -pthread -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -std=c99 -fPIC -I/home/ustc/anaconda3/envs/py36/lib/python3.6/site-packages/numpy/core/include -I/home/ustc/anaconda3/envs/py36/include/python3.6m -c utils/cython_nms.c -o build/temp.linux-x86_64-3.6/utils/cython_nms.o -Wno-cpp
  12. gcc -pthread -shared -L/home/ustc/anaconda3/envs/py36/lib -Wl,-rpath=/home/ustc/anaconda3/envs/py36/lib,--no-as-needed -std=c99 build/temp.linux-x86_64-3.6/utils/cython_nms.o -L/home/ustc/anaconda3/envs/py36/lib -lpython3.6m -o build/lib.linux-x86_64-3.6/utils/cython_nms.cpython-36m-x86_64-linux-gnu.so
  13. copying build/lib.linux-x86_64-3.6/utils/cython_bbox.cpython-36m-x86_64-linux-gnu.so -> utils
  14. copying build/lib.linux-x86_64-3.6/utils/cython_nms.cpython-36m-x86_64-linux-gnu.so -> utils
  15. Compiling nms kernels by nvcc...
  16. Including CUDA code.
  17. /home/ustc/文档/PANet-master/lib/model/nms
  18. ['/home/ustc/文档/PANet-master/lib/model/nms/src/nms_cuda_kernel.cu.o']
  19. generating /tmp/tmpwpj4u4zb/_nms.c
  20. running build_ext
  21. building '_nms' extension
  22. creating home
  23. creating home/ustc
  24. creating home/ustc/文档
  25. creating home/ustc/文档/PANet-master
  26. creating home/ustc/文档/PANet-master/lib
  27. creating home/ustc/文档/PANet-master/lib/model
  28. creating home/ustc/文档/PANet-master/lib/model/nms
  29. creating home/ustc/文档/PANet-master/lib/model/nms/src
  30. gcc -pthread -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -std=c99 -fPIC -DWITH_CUDA -I/home/ustc/anaconda3/envs/py36/lib/python3.6/site-packages/torch/utils/ffi/../../lib/include -I/home/ustc/anaconda3/envs/py36/lib/python3.6/site-packages/torch/utils/ffi/../../lib/include/TH -I/home/ustc/anaconda3/envs/py36/lib/python3.6/site-packages/torch/utils/ffi/../../lib/include/THC -I/usr/local/cuda/include -I/home/ustc/anaconda3/envs/py36/include/python3.6m -c _nms.c -o ./_nms.o -std=c99
  31. gcc -pthread -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -std=c99 -fPIC -DWITH_CUDA -I/home/ustc/anaconda3/envs/py36/lib/python3.6/site-packages/torch/utils/ffi/../../lib/include -I/home/ustc/anaconda3/envs/py36/lib/python3.6/site-packages/torch/utils/ffi/../../lib/include/TH -I/home/ustc/anaconda3/envs/py36/lib/python3.6/site-packages/torch/utils/ffi/../../lib/include/THC -I/usr/local/cuda/include -I/home/ustc/anaconda3/envs/py36/include/python3.6m -c /home/ustc/文档/PANet-master/lib/model/nms/src/nms_cuda.c -o ./home/ustc/文档/PANet-master/lib/model/nms/src/nms_cuda.o -std=c99
  32. /home/ustc/文档/PANet-master/lib/model/nms/src/nms_cuda.c: In function nms_cuda’:
  33. /home/ustc/文档/PANet-master/lib/model/nms/src/nms_cuda.c:14:22: error: dereferencing pointer to incomplete type THTensor {aka struct THTensor}’
  34. boxes_host->size[0],
  35. ^
  36. Traceback (most recent call last):
  37. File "/home/ustc/anaconda3/envs/py36/lib/python3.6/distutils/unixccompiler.py", line 118, in _compile
  38. extra_postargs)
  39. File "/home/ustc/anaconda3/envs/py36/lib/python3.6/distutils/ccompiler.py", line 909, in spawn
  40. spawn(cmd, dry_run=self.dry_run)
  41. File "/home/ustc/anaconda3/envs/py36/lib/python3.6/distutils/spawn.py", line 36, in spawn
  42. _spawn_posix(cmd, search_path, dry_run=dry_run)
  43. File "/home/ustc/anaconda3/envs/py36/lib/python3.6/distutils/spawn.py", line 159, in _spawn_posix
  44. % (cmd, exit_status))
  45. distutils.errors.DistutilsExecError: command 'gcc' failed with exit status 1
  46.  
  47. During handling of the above exception, another exception occurred:
  48.  
  49. Traceback (most recent call last):
  50. File "/home/ustc/anaconda3/envs/py36/lib/python3.6/site-packages/cffi/ffiplatform.py", line 49, in _build
  51. dist.run_command('build_ext')
  52. File "/home/ustc/anaconda3/envs/py36/lib/python3.6/distutils/dist.py", line 974, in run_command
  53. cmd_obj.run()
  54. File "/home/ustc/anaconda3/envs/py36/lib/python3.6/distutils/command/build_ext.py", line 339, in run
  55. self.build_extensions()
  56. File "/home/ustc/anaconda3/envs/py36/lib/python3.6/distutils/command/build_ext.py", line 448, in build_extensions
  57. self._build_extensions_serial()
  58. File "/home/ustc/anaconda3/envs/py36/lib/python3.6/distutils/command/build_ext.py", line 473, in _build_extensions_serial
  59. self.build_extension(ext)
  60. File "/home/ustc/anaconda3/envs/py36/lib/python3.6/distutils/command/build_ext.py", line 533, in build_extension
  61. depends=ext.depends)
  62. File "/home/ustc/anaconda3/envs/py36/lib/python3.6/distutils/ccompiler.py", line 574, in compile
  63. self._compile(obj, src, ext, cc_args, extra_postargs, pp_opts)
  64. File "/home/ustc/anaconda3/envs/py36/lib/python3.6/distutils/unixccompiler.py", line 120, in _compile
  65. raise CompileError(msg)
  66. distutils.errors.CompileError: command 'gcc' failed with exit status 1
  67.  
  68. During handling of the above exception, another exception occurred:
  69.  
  70. Traceback (most recent call last):
  71. File "build.py", line 37, in <module>
  72. ffi.build()
  73. File "/home/ustc/anaconda3/envs/py36/lib/python3.6/site-packages/torch/utils/ffi/__init__.py", line 189, in build
  74. _build_extension(ffi, cffi_wrapper_name, target_dir, verbose)
  75. File "/home/ustc/anaconda3/envs/py36/lib/python3.6/site-packages/torch/utils/ffi/__init__.py", line 111, in _build_extension
  76. outfile = ffi.compile(tmpdir=tmpdir, verbose=verbose, target=libname)
  77. File "/home/ustc/anaconda3/envs/py36/lib/python3.6/site-packages/cffi/api.py", line 684, in compile
  78. compiler_verbose=verbose, debug=debug, **kwds)
  79. File "/home/ustc/anaconda3/envs/py36/lib/python3.6/site-packages/cffi/recompiler.py", line 1484, in recompile
  80. compiler_verbose, debug)
  81. File "/home/ustc/anaconda3/envs/py36/lib/python3.6/site-packages/cffi/ffiplatform.py", line 20, in compile
  82. outputfilename = _build(tmpdir, ext, compiler_verbose, debug)
  83. File "/home/ustc/anaconda3/envs/py36/lib/python3.6/site-packages/cffi/ffiplatform.py", line 56, in _build
  84. raise VerificationError('%s: %s' % (e.__class__.__name__, e))
  85. cffi.error.VerificationError: CompileError: command 'gcc' failed with exit status 1
  86. Compiling roi pooling kernels by nvcc...
  87. Including CUDA code.
  88. /home/ustc/文档/PANet-master/lib/model/roi_pooling
  89. generating /tmp/tmpy7_eurcc/_roi_pooling.c
  90. running build_ext
  91. building '_roi_pooling' extension
  92. creating home
  93. creating home/ustc
  94. creating home/ustc/文档
  95. creating home/ustc/文档/PANet-master
  96. creating home/ustc/文档/PANet-master/lib
  97. creating home/ustc/文档/PANet-master/lib/model
  98. creating home/ustc/文档/PANet-master/lib/model/roi_pooling
  99. creating home/ustc/文档/PANet-master/lib/model/roi_pooling/src
  100. gcc -pthread -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -std=c99 -fPIC -DWITH_CUDA -I/home/ustc/anaconda3/envs/py36/lib/python3.6/site-packages/torch/utils/ffi/../../lib/include -I/home/ustc/anaconda3/envs/py36/lib/python3.6/site-packages/torch/utils/ffi/../../lib/include/TH -I/home/ustc/anaconda3/envs/py36/lib/python3.6/site-packages/torch/utils/ffi/../../lib/include/THC -I/usr/local/cuda/include -I/home/ustc/anaconda3/envs/py36/include/python3.6m -c _roi_pooling.c -o ./_roi_pooling.o -std=c99
  101. gcc -pthread -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -std=c99 -fPIC -DWITH_CUDA -I/home/ustc/anaconda3/envs/py36/lib/python3.6/site-packages/torch/utils/ffi/../../lib/include -I/home/ustc/anaconda3/envs/py36/lib/python3.6/site-packages/torch/utils/ffi/../../lib/include/TH -I/home/ustc/anaconda3/envs/py36/lib/python3.6/site-packages/torch/utils/ffi/../../lib/include/THC -I/usr/local/cuda/include -I/home/ustc/anaconda3/envs/py36/include/python3.6m -c /home/ustc/文档/PANet-master/lib/model/roi_pooling/src/roi_pooling.c -o ./home/ustc/文档/PANet-master/lib/model/roi_pooling/src/roi_pooling.o -std=c99
  102. gcc -pthread -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -std=c99 -fPIC -DWITH_CUDA -I/home/ustc/anaconda3/envs/py36/lib/python3.6/site-packages/torch/utils/ffi/../../lib/include -I/home/ustc/anaconda3/envs/py36/lib/python3.6/site-packages/torch/utils/ffi/../../lib/include/TH -I/home/ustc/anaconda3/envs/py36/lib/python3.6/site-packages/torch/utils/ffi/../../lib/include/THC -I/usr/local/cuda/include -I/home/ustc/anaconda3/envs/py36/include/python3.6m -c /home/ustc/文档/PANet-master/lib/model/roi_pooling/src/roi_pooling_cuda.c -o ./home/ustc/文档/PANet-master/lib/model/roi_pooling/src/roi_pooling_cuda.o -std=c99
  103. gcc -pthread -shared -L/home/ustc/anaconda3/envs/py36/lib -Wl,-rpath=/home/ustc/anaconda3/envs/py36/lib,--no-as-needed -std=c99 ./_roi_pooling.o ./home/ustc/文档/PANet-master/lib/model/roi_pooling/src/roi_pooling.o ./home/ustc/文档/PANet-master/lib/model/roi_pooling/src/roi_pooling_cuda.o /home/ustc/文档/PANet-master/lib/model/roi_pooling/src/roi_pooling.cu.o -L/home/ustc/anaconda3/envs/py36/lib -lpython3.6m -o ./_roi_pooling.so
  104. Compiling roi crop kernels by nvcc...
  105. Including CUDA code.
  106. /home/ustc/文档/PANet-master/lib/model/roi_crop
  107. generating /tmp/tmptm4aw2z1/_roi_crop.c
  108. running build_ext
  109. building '_roi_crop' extension
  110. creating home
  111. creating home/ustc
  112. creating home/ustc/文档
  113. creating home/ustc/文档/PANet-master
  114. creating home/ustc/文档/PANet-master/lib
  115. creating home/ustc/文档/PANet-master/lib/model
  116. creating home/ustc/文档/PANet-master/lib/model/roi_crop
  117. creating home/ustc/文档/PANet-master/lib/model/roi_crop/src
  118. gcc -pthread -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -std=c99 -fPIC -DWITH_CUDA -I/home/ustc/anaconda3/envs/py36/lib/python3.6/site-packages/torch/utils/ffi/../../lib/include -I/home/ustc/anaconda3/envs/py36/lib/python3.6/site-packages/torch/utils/ffi/../../lib/include/TH -I/home/ustc/anaconda3/envs/py36/lib/python3.6/site-packages/torch/utils/ffi/../../lib/include/THC -I/usr/local/cuda/include -I/home/ustc/anaconda3/envs/py36/include/python3.6m -c _roi_crop.c -o ./_roi_crop.o -std=c99
  119. gcc -pthread -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -std=c99 -fPIC -DWITH_CUDA -I/home/ustc/anaconda3/envs/py36/lib/python3.6/site-packages/torch/utils/ffi/../../lib/include -I/home/ustc/anaconda3/envs/py36/lib/python3.6/site-packages/torch/utils/ffi/../../lib/include/TH -I/home/ustc/anaconda3/envs/py36/lib/python3.6/site-packages/torch/utils/ffi/../../lib/include/THC -I/usr/local/cuda/include -I/home/ustc/anaconda3/envs/py36/include/python3.6m -c /home/ustc/文档/PANet-master/lib/model/roi_crop/src/roi_crop.c -o ./home/ustc/文档/PANet-master/lib/model/roi_crop/src/roi_crop.o -std=c99
  120. /home/ustc/文档/PANet-master/lib/model/roi_crop/src/roi_crop.c: In function BilinearSamplerBHWD_updateOutput’:
  121. /home/ustc/文档/PANet-master/lib/model/roi_crop/src/roi_crop.c:10:30: error: dereferencing pointer to incomplete type THTensor {aka struct THTensor}’
  122. int batchsize = inputImages->size[0];
  123. ^
  124. /home/ustc/文档/PANet-master/lib/model/roi_crop/src/roi_crop.c: In function BilinearSamplerBHWD_updateGradInput’:
  125. /home/ustc/文档/PANet-master/lib/model/roi_crop/src/roi_crop.c:190:14: warning: unused variable inBottomRight [-Wunused-variable]
  126. real inBottomRight=0;
  127. ^
  128. /home/ustc/文档/PANet-master/lib/model/roi_crop/src/roi_crop.c:189:14: warning: unused variable inBottomLeft [-Wunused-variable]
  129. real inBottomLeft=0;
  130. ^
  131. /home/ustc/文档/PANet-master/lib/model/roi_crop/src/roi_crop.c:188:14: warning: unused variable inTopRight [-Wunused-variable]
  132. real inTopRight=0;
  133. ^
  134. /home/ustc/文档/PANet-master/lib/model/roi_crop/src/roi_crop.c:187:14: warning: unused variable inTopLeft [-Wunused-variable]
  135. real inTopLeft=0;
  136. ^
  137. /home/ustc/文档/PANet-master/lib/model/roi_crop/src/roi_crop.c:186:14: warning: unused variable v [-Wunused-variable]
  138. real v=0;
  139. ^
  140. /home/ustc/文档/PANet-master/lib/model/roi_crop/src/roi_crop.c: In function BilinearSamplerBCHW_updateGradInput’:
  141. /home/ustc/文档/PANet-master/lib/model/roi_crop/src/roi_crop.c:441:14: warning: unused variable inBottomRight [-Wunused-variable]
  142. real inBottomRight=0;
  143. ^
  144. /home/ustc/文档/PANet-master/lib/model/roi_crop/src/roi_crop.c:440:14: warning: unused variable inBottomLeft [-Wunused-variable]
  145. real inBottomLeft=0;
  146. ^
  147. /home/ustc/文档/PANet-master/lib/model/roi_crop/src/roi_crop.c:439:14: warning: unused variable inTopRight [-Wunused-variable]
  148. real inTopRight=0;
  149. ^
  150. /home/ustc/文档/PANet-master/lib/model/roi_crop/src/roi_crop.c:438:14: warning: unused variable inTopLeft [-Wunused-variable]
  151. real inTopLeft=0;
  152. ^
  153. /home/ustc/文档/PANet-master/lib/model/roi_crop/src/roi_crop.c:437:14: warning: unused variable v [-Wunused-variable]
  154. real v=0;
  155. ^
  156. Traceback (most recent call last):
  157. File "/home/ustc/anaconda3/envs/py36/lib/python3.6/distutils/unixccompiler.py", line 118, in _compile
  158. extra_postargs)
  159. File "/home/ustc/anaconda3/envs/py36/lib/python3.6/distutils/ccompiler.py", line 909, in spawn
  160. spawn(cmd, dry_run=self.dry_run)
  161. File "/home/ustc/anaconda3/envs/py36/lib/python3.6/distutils/spawn.py", line 36, in spawn
  162. _spawn_posix(cmd, search_path, dry_run=dry_run)
  163. File "/home/ustc/anaconda3/envs/py36/lib/python3.6/distutils/spawn.py", line 159, in _spawn_posix
  164. % (cmd, exit_status))
  165. distutils.errors.DistutilsExecError: command 'gcc' failed with exit status 1
  166.  
  167. During handling of the above exception, another exception occurred:
  168.  
  169. Traceback (most recent call last):
  170. File "/home/ustc/anaconda3/envs/py36/lib/python3.6/site-packages/cffi/ffiplatform.py", line 49, in _build
  171. dist.run_command('build_ext')
  172. File "/home/ustc/anaconda3/envs/py36/lib/python3.6/distutils/dist.py", line 974, in run_command
  173. cmd_obj.run()
  174. File "/home/ustc/anaconda3/envs/py36/lib/python3.6/distutils/command/build_ext.py", line 339, in run
  175. self.build_extensions()
  176. File "/home/ustc/anaconda3/envs/py36/lib/python3.6/distutils/command/build_ext.py", line 448, in build_extensions
  177. self._build_extensions_serial()
  178. File "/home/ustc/anaconda3/envs/py36/lib/python3.6/distutils/command/build_ext.py", line 473, in _build_extensions_serial
  179. self.build_extension(ext)
  180. File "/home/ustc/anaconda3/envs/py36/lib/python3.6/distutils/command/build_ext.py", line 533, in build_extension
  181. depends=ext.depends)
  182. File "/home/ustc/anaconda3/envs/py36/lib/python3.6/distutils/ccompiler.py", line 574, in compile
  183. self._compile(obj, src, ext, cc_args, extra_postargs, pp_opts)
  184. File "/home/ustc/anaconda3/envs/py36/lib/python3.6/distutils/unixccompiler.py", line 120, in _compile
  185. raise CompileError(msg)
  186. distutils.errors.CompileError: command 'gcc' failed with exit status 1
  187.  
  188. During handling of the above exception, another exception occurred:
  189.  
  190. Traceback (most recent call last):
  191. File "build.py", line 36, in <module>
  192. ffi.build()
  193. File "/home/ustc/anaconda3/envs/py36/lib/python3.6/site-packages/torch/utils/ffi/__init__.py", line 189, in build
  194. _build_extension(ffi, cffi_wrapper_name, target_dir, verbose)
  195. File "/home/ustc/anaconda3/envs/py36/lib/python3.6/site-packages/torch/utils/ffi/__init__.py", line 111, in _build_extension
  196. outfile = ffi.compile(tmpdir=tmpdir, verbose=verbose, target=libname)
  197. File "/home/ustc/anaconda3/envs/py36/lib/python3.6/site-packages/cffi/api.py", line 684, in compile
  198. compiler_verbose=verbose, debug=debug, **kwds)
  199. File "/home/ustc/anaconda3/envs/py36/lib/python3.6/site-packages/cffi/recompiler.py", line 1484, in recompile
  200. compiler_verbose, debug)
  201. File "/home/ustc/anaconda3/envs/py36/lib/python3.6/site-packages/cffi/ffiplatform.py", line 20, in compile
  202. outputfilename = _build(tmpdir, ext, compiler_verbose, debug)
  203. File "/home/ustc/anaconda3/envs/py36/lib/python3.6/site-packages/cffi/ffiplatform.py", line 56, in _build
  204. raise VerificationError('%s: %s' % (e.__class__.__name__, e))
  205. cffi.error.VerificationError: CompileError: command 'gcc' failed with exit status 1
  206. Compiling roi align kernels by nvcc...
  207. Including CUDA code.
  208. /home/ustc/文档/PANet-master/lib/modeling/roi_xfrom/roi_align
  209. generating /tmp/tmperu9f6wr/_roi_align.c
  210. running build_ext
  211. building '_roi_align' extension
  212. creating home
  213. creating home/ustc
  214. creating home/ustc/文档
  215. creating home/ustc/文档/PANet-master
  216. creating home/ustc/文档/PANet-master/lib
  217. creating home/ustc/文档/PANet-master/lib/modeling
  218. creating home/ustc/文档/PANet-master/lib/modeling/roi_xfrom
  219. creating home/ustc/文档/PANet-master/lib/modeling/roi_xfrom/roi_align
  220. creating home/ustc/文档/PANet-master/lib/modeling/roi_xfrom/roi_align/src
  221. gcc -pthread -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -std=c99 -fPIC -DWITH_CUDA -I/home/ustc/anaconda3/envs/py36/lib/python3.6/site-packages/torch/utils/ffi/../../lib/include -I/home/ustc/anaconda3/envs/py36/lib/python3.6/site-packages/torch/utils/ffi/../../lib/include/TH -I/home/ustc/anaconda3/envs/py36/lib/python3.6/site-packages/torch/utils/ffi/../../lib/include/THC -I/usr/local/cuda/include -I/home/ustc/anaconda3/envs/py36/include/python3.6m -c _roi_align.c -o ./_roi_align.o -std=c99
  222. gcc -pthread -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -std=c99 -fPIC -DWITH_CUDA -I/home/ustc/anaconda3/envs/py36/lib/python3.6/site-packages/torch/utils/ffi/../../lib/include -I/home/ustc/anaconda3/envs/py36/lib/python3.6/site-packages/torch/utils/ffi/../../lib/include/TH -I/home/ustc/anaconda3/envs/py36/lib/python3.6/site-packages/torch/utils/ffi/../../lib/include/THC -I/usr/local/cuda/include -I/home/ustc/anaconda3/envs/py36/include/python3.6m -c /home/ustc/文档/PANet-master/lib/modeling/roi_xfrom/roi_align/src/roi_align_cuda.c -o ./home/ustc/文档/PANet-master/lib/modeling/roi_xfrom/roi_align/src/roi_align_cuda.o -std=c99
  223. gcc -pthread -shared -L/home/ustc/anaconda3/envs/py36/lib -Wl,-rpath=/home/ustc/anaconda3/envs/py36/lib,--no-as-needed -std=c99 ./_roi_align.o ./home/ustc/文档/PANet-master/lib/modeling/roi_xfrom/roi_align/src/roi_align_cuda.o /home/ustc/文档/PANet-master/lib/modeling/roi_xfrom/roi_align/src/roi_align_kernel.cu.o -L/home/ustc/anaconda3/envs/py36/lib -lpython3.6m -o ./_roi_align.so

这里我主要google了一下 cffi.error.VerificationError: CompileError: command 'gcc' failed with exit status 1

我注意到这是一个很多人都遇到过的问题,在faster-rcnn的pytorch实现中也有这个问题,似乎这个代码的实现部分与faster-rcnn的有相同部分,然后我主要采用了两步解决办法,一是在make.sh中添加

export CXXFLAGS="-std=c++11"
export CFLAGS="-std=c99"

第二点就是采用pytorch0.4.0而不是pytorch0.4.1,然后再make,没看到报错,我就假定没问题了。

接下来琢磨如何训练自己的数据,官方代码给的示例是coco2017数据集,这个数据集很大的,几十G,在网上找了一篇博客https://blog.csdn.net/daniaokuye/article/details/78699138#commentsedit,用wget下载,速度尚可。

下载好后解压,几个文件夹如下所示

其中,三个注释压缩文件解压后的默认文件名都是annotations,所以出现了(2)(3),其中train2017中有118287张图片,19G,val2017有5000张图片,800多M,test2017有40670张图片,6.6G。我不太明白的是stuff_annotations里面的注释文件,查了一下好像是用来做背景语义分割的,做实例分割应该用不到,暂且不管它了,在annotations_trainval2017中存放的是我们想要的语义分割注释,当然了,里面还有场景描述和人体关键点检测的注释。如下

然后image_info_test2017里面是测试集的注释,

左边的应该是测试图片的注释,里面images部分的数目与测试集相等,不过其中只有图像的信息,并没有实例的标签,而右边的不知道是干嘛的。

现在我准备运行一下提供的测试代码,不是输入测试集,而是验证集,验证集有注释文件。

python tools/test_net.py --dataset coco2017 --cfg configs/panet/e2e_panet_R-50-FPN_2x_mask.yaml --load_ckpt {path/to/your/checkpoint

这里要测试的是coco2017验证集,在主目录下新建data文件夹,data里面新建coco文件夹,coco里面新建images文件夹和annotations文件夹,images里面放置val2017数据集,annotations里面放置instances_val2017.json文件,这个时候还需要预训练权重,resnet50_caffe.pth,一开始我下载了pytorch的官方实现,resnet50-19c8e357.pth,发现不行的,键值不匹配。报错如下

  1. Traceback (most recent call last):
  2. File "tools/test_net.py", line 112, in <module>
  3. check_expected_results=True)
  4. File "/home/ustc/文档/PANet-master/lib/core/test_engine.py", line 128, in run_inference
  5. all_results = result_getter()
  6. File "/home/ustc/文档/PANet-master/lib/core/test_engine.py", line 108, in result_getter
  7. multi_gpu=multi_gpu_testing
  8. File "/home/ustc/文档/PANet-master/lib/core/test_engine.py", line 158, in test_net_on_dataset
  9. args, dataset_name, proposal_file, output_dir, gpu_id=gpu_id
  10. File "/home/ustc/文档/PANet-master/lib/core/test_engine.py", line 232, in test_net
  11. model = initialize_model_from_cfg(args, gpu_id=gpu_id)
  12. File "/home/ustc/文档/PANet-master/lib/core/test_engine.py", line 322, in initialize_model_from_cfg
  13. model = model_builder.Generalized_RCNN()
  14. File "/home/ustc/文档/PANet-master/lib/modeling/model_builder.py", line 124, in __init__
  15. self._init_modules()
  16. File "/home/ustc/文档/PANet-master/lib/modeling/model_builder.py", line 128, in _init_modules
  17. resnet_utils.load_pretrained_imagenet_weights(self)
  18. File "/home/ustc/文档/PANet-master/lib/utils/resnet_weights_helper.py", line 29, in load_pretrained_imagenet_weights
  19. pretrianed_state_dict = convert_state_dict(torch.load(weights_file))
  20. File "/home/ustc/anaconda3/envs/py36/lib/python3.6/site-packages/torch/serialization.py", line 303, in load
  21. return _load(f, map_location, pickle_module)
  22. File "/home/ustc/anaconda3/envs/py36/lib/python3.6/site-packages/torch/serialization.py", line 454, in _load
  23. return legacy_load(f)
  24. File "/home/ustc/anaconda3/envs/py36/lib/python3.6/site-packages/torch/serialization.py", line 383, in legacy_load
  25. tar.extract('storages', path=tmpdir)
  26. File "/home/ustc/anaconda3/envs/py36/lib/python3.6/tarfile.py", line 2034, in extract
  27. tarinfo = self.getmember(member)
  28. File "/home/ustc/anaconda3/envs/py36/lib/python3.6/tarfile.py", line 1745, in getmember
  29. raise KeyError("filename %r not found" % name)
  30. KeyError: "filename 'storages' not found"

于是乎下载resnet50_caffe.pth,搜了一下没发现什么下载链接,因为这个项目利用了detectron.pytorch这个项目的代码,所以我决定利用detectron.pytorch下载模型权重,项目地址如下https://github.com/roytseng-tw/Detectron.pytorch

安装了几个包后,我执行python download_imagenet_weights.py --targets=resnet50_caffe.pth,过了一会,文件下载好了,太开心了,跑起来

python tools/test_net.py --dataset coco2017 --cfg configs/panet/e2e_panet_R-50-FPN_2x_mask.yaml --load_ckpt /home/ustc/文档/PANet-master/data/pretrained_model/panet_mask_step179999.pth

后面的权重文件是从项目提供的链接下载的,一切妥当,开始对5000张图片进行检测

然后分别执行bbox评估和分割评估,如下

最后的输出为评估结果

接下来跑一下coco2017的训练集,如果没啥问题,就可以着手跑自己的数据了。

python tools/train_net_step.py --dataset coco2017 --cfg configs/panet/e2e_panet_R-50-FPN_2x_mask.yaml  --bs 2

我用的这台机器只有一块1080ti,所以把把batch_size设为2,论文里是8块P40,羡慕啊。

训练跑起来后的样子如下

可以看到还需要13天训练完毕,此刻内心是平淡的~

下面就研究如何训练自己的数据了,我采取替换法,就是文件夹文件名啥的都不换,直接把里面的数据换成自己的,把train2017里面的图片换成自己的,把instances_train2017.json里面的注释文件换成自己的,把图片换成自己的,复制粘贴就行了,不过你的标注文件不一定与coco的格式一致,所以这块是麻烦的地方。

我采用的标注工具是VIA,使用说明网上有不少博客,如何将VIA格式转换为COCO格式呢,需要仔细看一下二者的区别,

VIA格式

用json存储,这一点与COCO相同,json就是一个大字典,VIA采用的键值为图像名称加一个size(这个size我没搞清楚,猜测是所有mask的面积和),图像名称下面仍然为一个字典,共有filename,size,regions,file_attributes四个键,文件名就是图像名,size按照我猜测的为掩码面积和,regions里面就是一个一个mask,file_attribute我没有用到,置为空。截图看一下

regions下面存放着许多region,每个region有shape_attributes和region_attributes两个属性,一个存放标注的多边形,一个存放类别,region就是关键。

COCO格式

关于COCO的格式,太多太多博客了,就大致看一下吧

总的框架

其中info,licenses都是无关紧要的

对于我们来说,需要关注的是images,annotatios还有categories,分别看一下

对于我们而言,id是可以自行生成的,类别是手动添加的,逐个累加就好,需要计算的是area,bbox,因为VIA格式中没有这两个属性,另外,我的应用场景中,物体都是单一的,所以crowd都设为0,这一点可能需要注意一下

然后就开始具体的转换了,我把代码放在了 https://github.com/codingwolfman/VIA2COCO

将VIA转为COCO后,就可以照常跑起来了。

PANet训练自己的数据(VIA标注)的更多相关文章

  1. smallcorgi/Faster-RCNN_TF训练自己的数据

    熟悉了github项目提供的训练测试后,可以来训练自己的数据了.本文只介绍改动最少的方法,只训练2个类, 即自己添加的类(如person)和 background,使用的数据格式为pascal_voc ...

  2. YOLOv3:训练自己的数据(附优化与问题总结)

    环境说明 系统:ubuntu16.04 显卡:Tesla k80 12G显存 python环境: 2.7 && 3.6 前提条件:cuda9.0 cudnn7.0 opencv3.4. ...

  3. YOLO2解读,训练自己的数据及相关转载以供学习

    https://pjreddie.com/darknet/yolo/ 具体安装及使用可以参考官方文档https://github.com/pjreddie/darknet https://blog.c ...

  4. caffe学习三:使用Faster RCNN训练自己的数据

    本文假设你已经完成了安装,并可以运行demo.py 不会安装且用PASCAL VOC数据集的请看另来两篇博客. caffe学习一:ubuntu16.04下跑Faster R-CNN demo (基于c ...

  5. faster r-cnn 在CPU配置下训练自己的数据

    因为没有GPU,所以在CPU下训练自己的数据,中间遇到了各种各样的坑,还好没有放弃,特以此文记录此过程. 1.在CPU下配置faster r-cnn,参考博客:http://blog.csdn.net ...

  6. pytorch识别CIFAR10:训练ResNet-34(数据增强,准确率提升到92.6%)

    版权声明:本文为博主原创文章,欢迎转载,并请注明出处.联系方式:460356155@qq.com 在前一篇中的ResNet-34残差网络,经过减小卷积核训练准确率提升到85%. 这里对训练数据集做数据 ...

  7. caffe 用faster rcnn 训练自己的数据 遇到的问题

    1 . 怎么处理那些pyx和.c .h文件 在lib下有一些文件为.pyx文件,遇到不能import可以cython 那个文件,然后把lib文件夹重新make一下. 遇到.c 和 .h一样的操作. 2 ...

  8. caffe 如何训练自己的数据图片

    申明:此教程加工于caffe 如何训练自己的数据图片 一.准备数据 有条件的同学,可以去imagenet的官网http://www.image-net.org/download-images,下载im ...

  9. 人脸检测及识别python实现系列(3)——为模型训练准备人脸数据

    人脸检测及识别python实现系列(3)——为模型训练准备人脸数据 机器学习最本质的地方就是基于海量数据统计的学习,说白了,机器学习其实就是在模拟人类儿童的学习行为.举一个简单的例子,成年人并没有主动 ...

随机推荐

  1. 类型:Ajax;问题:ajax调用ashx参数获取不到;结果:ashx文件获取$.ajax()方法发送的数据

    ashx文件获取$.ajax()方法发送的数据 今天在使用Jquery的ajax方法发送请求时,发现在后台中使用ashx文件无法接收到ajax方法中传递的参数,上网查了一下原因后发现了问题所在,原来是 ...

  2. C语言学习笔记--递归函数

    1. 递归函数的思想 (1)递归是一种数学上分而自治的思想,是将大型复杂问题转化为与原问题相同但规模较小的问题进行处理的一种方法 (2)递归需要有边界条件 ①当边界条件不满足时,递归继续进行 ②当边界 ...

  3. DAY8-python异常处理

    一.什么是异常 异常就是程序运行时发生错误的信号(在程序出现错误时,则会产生一个异常,若程序没有处理它,则会抛出该异常,程序的运行也随之终止),在python中,错误触发的异常如下 而错误分两种 #语 ...

  4. Hadoop YARN: 1/1 local-dirs are bad: /var/lib/hadoop-yarn/cache/yarn/nm-local-dir; 1/1 log-dirs are bad: /var/log/hadoop-yarn/containers hdfs硬盘90% yarn unhealthy

    1/1 local-dirs are bad: /var/lib/hadoop-yarn/cache/yarn/nm-local-dir; 1/1 log-dirs are bad: /var/log ...

  5. js闭包(三)

    场景一:采用函数引用方式的setTimeout调用 闭包的一个通常的用法是为一个在某一函数执行前先执行的函数提供参数.例如,在web环境中,一个函数作为setTimeout函数调用的第一个参数,是一种 ...

  6. ie7下z-index失效问题解决方法

    绝对定位元素的“有定位属性(relative或absolute)的父元素”在渲染层次时起到了主要作用,前面的被后面的覆盖了.解决办法就是给有定位属性的父元素设置z-index 解决办法: 父级元素加上 ...

  7. 【总结整理】js获取css的属性(内部,外部,内嵌(写在tag中))

    在JS中需要获取某个元素的宽高或者是绝对定位的位置信息,通常我们会这么写: var elemWidth = elem.style.width; console.log(elemWidth); //(空 ...

  8. springMVC 返回json乱码问题

    多次遇见过这个问题,springMVC下返回给前端的json字符串,中文总是乱码,每次都要去翻一下之前的代码来看解决办法,有必要做个笔记记一下这个问题了. 解决方法: 在方法注解中加入如下: @Req ...

  9. sql中的Alias怎么用

    一直很奇怪,不知道为什么sql的Alias怎么用,上次看到ThinkPHP中的讲解,为什么数据库在用的时候有时候喜欢改个别名再用, 因为昨天去参加了公司的数据库开发工程师的笔试,今天就复习一下sql, ...

  10. Flask框架 之 功能详解

    浏览目录 配置文件 路由系统 视图 请求相关 响应 模板渲染 session 闪现 中间件 蓝图(blueprint) 特殊装饰器 配置文件 知识点 给你一个路径 “settings.Foo”,可以找 ...