【飞桨】paddle 目标检测第一天笔记
paddle 目标检测第一天笔记:
基础知识:
#------ leave layer (input or pump)
x = fluid.layers.data(name='x', shape=[13], dtype='float32')
x = fluid.layers.create_tensor(name='x', shape=[13], dtype='float32')
y = fluid.layers.data(name='y', shape=[1], dtype='float32')
#------ hidden layer (hidden or result)
hidden1 = fluid.layers.fc(input=x, size=100, act='relu')
hidden2 = fluid.layers.fc(input=hidden1, size=100, act='relu')
output = fluid.layers.fc(input=hidden2, size=1, act=None)
#------ loss func
cost = fluid.layers.square_error_cost(input= output, label=y)
#------ optimizer
optimizer = fluid.optimizer.SGDOptimizer(learning_rate=0.01)
opts = optimizer.minimize(cost)
#------ run
place = fluid.CPUPlace()
# place = fluid.CUDAPlace()
exe = fluid.executor.Executor(place)
exe.run(fluid.default_startup_program())
#------ net forward
result = exe.run(program=test_program,
feed={'x': test_data, 'y': np.array([[0.0]]).astype('float32')},
fetch_list=[net])
feed={'name': }
# feed 输入叶子数据, 可以是np.array的形式, 这个维度输出是真的神奇
理论知识:
目标检测:
分类+定位, 多分类+定位, 分类+3d定位
缺陷检测:
光照, 密集, 遮挡, 重叠, 瑕疵小,多尺度的问题(物体尺度)
数据集信息:
Pascal VOC格式数介绍
VOC数据格式的目标检测数据,是指每个图像文件对应一个同名的xml文件,xml文件中标记物体框的坐标和类别等信息。
Pascal VOC比赛对目标检测任务,对目标物体是否遮挡、是否被截断、是否是难检测物体进行了标注。对于用户自定义数据可根据实际情况对这些字段进行标注。
├── annotations
│ ├── road0.xml
│ ├── road100.xml
│ ...
├── images
│ ├── road0.png
│ ├── road100.png
│ ...
├── label_list.txt
├── train.txt
└── valid.txt
label_list.txt:
speedlimit
crosswalk
trafficlight
stop
train.txt/valid.txt:
./images/road839.png ./annotations/road839.xml
./images/road363.png ./annotations/road363.xml
./images/road148.png ./annotations/road148.xml
...
xml文件中包含以下字段:
-
filename,表示图像名称。
<filename>road650.png</filename>
-
size,表示图像尺寸。包括:图像宽度、图像高度、图像深度
<size> <width>300</width> <height>400</height> <depth>3</depth> </size>
-
object字段,表示每个物体。包括
name
: 目标物体类别名称pose
: 关于目标物体姿态描述(非必须字段)truncated
: 目标物体目标因为各种原因被截断(非必须字段)occluded
: 目标物体是否被遮挡(非必须字段)difficult
: 目标物体是否是很难识别(非必须字段)bndbox
: 物体位置坐标,用左上角坐标和右下角坐标表示:xmin
、ymin
、xmax
、ymax
将~/data/data49531/roadsign_voc.tar
解压到PaddleDetection/dataset/roadsign_voc
下.
代码解释:
-u : force the stdout and stderr streams to be unbuffered;
this option has no effect on stdin; also PYTHONUNBUFFERED=x
–eval Whether to perform evaluation in train
python -u tools/train.py -c configs/hw_configs/yolov3_mobilenet_v1_roadsign_voc_template.yml \
-o use_gpu=true \
--use_vdl=true \
--vdl_log_dir=vdl_dir/scalar \
--eval
# -o 覆盖yml配置
# -use_vdl 设置vdl, vdl在左侧可视化加载
# --eval 训练中添加eval