赞
踩
项目github地址: https://github.com/zf020114/CHPDet
需要安装的有:
如果直接运行python setup.py build develop
,因为pytorch版本问题,会出现:
前两项安装在目前的环境下是无法成功的,我们需要修改一些代码。主要原因是新版的pytorch删去了THC/THC.h
函数。
对于DCNv2网上有现成的新版代码适合新版pytorch。我们下载下来替换即可。网址:https://gitcode.net/mirrors/jinfagang/DCNv2_latest
对于orn目前网上没有找到新的代码,我们只能自己修改。参考:https://github.com/CoinCheung/pytorch-loss/pull/37
https://blog.csdn.net/qq_36891089/article/details/124353149
/** 1. 在src/lib/models/networks/orn/csrc/cuda/ActiveRotatingFilter_cuda.cu 和src/lib/models/networks/orn/csrc/cuda/RotationInvariantEncoding_cuda.cu 中添加下面原子操作。 2. 将#include <THC/THC.h> 注释,并把代码中的THCudaCheck替换成AT_CUDA_CHECK */ /** Computes ceil(a / b) */ template <typename T> __host__ __device__ __forceinline__ T THCCeilDiv(T a, T b) { return (a + b - 1) / b; } /** Computes ceil(a / b) * b; i.e., rounds up `a` to the next highest multiple of b */ template <typename T> __host__ __device__ __forceinline__ T THCRoundUp(T a, T b) { return THCCeilDiv(a, b) * b; }
对于第三项的安装,可以直接运行python setup.py build develop
前面的安装过程如果出现 /orn/csrc/vision.cpp' cannot be absolute
,这时可以看一下egg-info/SOURCES.txt里面的路径,要正确。
可以下载官方的代码,确定程序可以跑通。直接运行 python demo.py multi_pose
可能会出现下面错误。
找到网址下载好权值文件,保存到指定路径下就可以了。
还需要指定测试图像位置和权值文件路径。
至此,完成demo的操作,有时间将会更新训练和测试部分。
这个脚本用来将作者提供的xml格式的标签文件转为coco格式,这里的coco格式与官方的并不完全相同。
原xml格式:每一张图像对应一张xml文件
<annotation> <folder>0.5</folder> <filename>100001677.jpg</filename> <path>/home/zf/Dataset/FGSD/US_Navy_train</path> <source> <database>FGSD</database> </source> <size> <width>674</width> <height>464</height> <depth>3</depth> </size> <segmented>0</segmented> <object> <name>佩里级</name> <pose>Unspecified</pose> <truncated>0</truncated> <difficult>0</difficult> <robndbox> <cx>607.3634729414094</cx> <cy>299.1181166743358</cy> <w>19.54958411723933</w> <h>133.8365566916934</h> <angle>2.97218</angle> </robndbox> <extra></extra> </object> <object> <name>提康德罗加级</name> <pose>Unspecified</pose> <truncated>0</truncated> <difficult>0</difficult> <robndbox> <cx>145.0018147545185</cx> <cy>361.1216602692171</cy> <w>23.596561322320788</w> <h>175.34243525858705</h> <angle>3.00056</angle> </robndbox> <extra></extra> </object> </annotation>
转换后的coco格式:所有图像信息、label信息以及类别信息都存放在同一个json文件中,按照下面的方式组织排列。
{ "images": [ { "file_name": "0.5-0.479-luota-20041031.jpg", "width": 1024, "height": 1024, "id": 0 } ], "categories": [ { "supercategory": "\u822a\u6bcd", "name": "\u822a\u6bcd", "id": 1, "keypoints": [ "ship head" ], "skeleton": [ [ 1, 1 ] ] } ], "annotations": [{ "image_id": 0, "category_id": 15, "bbox": [ 1189.232775, 489.55475, 33.98225, 214.5651 ], "id": 0, "area": 5468.5536521062495, "iscrowd": 0, "segmentation": [ [ 1146.9213332144272, 550.5249055305029, 1136.5633833396728, 515.1979874652901, 1140.967327332676, 511.636685822413, 1173.3449971724472, 529.1570956732402, 1286.8942766428356, 669.5733584275171, 1260.4706126848155, 690.9411682847799 ] ], "num_keypoints": 1, "keypoints": [ [ 1138.7653553361743, 513.4173366438516, 2.0 ] ] } ] }
coco格式中segmentation一共有6个点坐标,分别如下图所示:
注意:红色的框是我们正常的四个顶点坐标。该脚本的一个作用就是将红色框坐标转为黑色框的顶点坐标。2和3是keypoints附近的点。作者认为船体的头部近似正方形,因此,1和4的横坐标就是红框左边坐标减去w(是短边)。
数据的存放方式:
--data
--coco
--train
--xxx.jpg
--val
--xxx.jpg
--annotations
--xxx.json
总结,我们需要将自己的数据标签转为上面的格式,才可以训练模型。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。