HOG + SVM
本文根据梳理Udacity项目vehicle tracking的完成过程,将关键过程描述出来,方便以后复习
HOG (Histogram of Gradient)参考资料:https://blog.csdn.net/abc2412151342/article/details/79904317
本文代码地址:https://github.com/Kidra521/CarND-Vehicle-Detection
本文内容在HOG+SVM.ipynb中
image spatial bin of color |
scale 放大缩小到合适尺寸 cv2.resize ravel()变成一维 |
Color Space |
RGB / HSV / LUV / HLS / YUV / YCrCb 绘制mpl_toolkits.mplot3d |
Color Histogram |
np.histogram np.concatenate |
Histogram of Gradient |
scikit-image hog 输入只能是单通道 多通道需要逐一输入 ravel() feature_vector = True block>cell>pixel |
Feature Combine |
Normalizing sklearn.StandardScalar() fit transform |
classifier分类 |
|
Sliding window |
先sliding再extract feature |
multi scale |
|
1)加载小汽车图片集,并随机选64张展示出来
2)完成get_hog_features函数。输入图片img、orient数量、cell大小、block大小、是否可视化vis、是否一维feature_vec
输出:两种情况 features 和 hog_image。
使用:输入两张图片,验证效果。
3)完成extract_features函数。输入(imgs, cspace, orient, pix_per_cell, cell_per_block, hog_channel)
输出:features = 相关层的hog结果。 功能:将图片集中所有的图片都变成features
使用:将图片集中所有的图片都变成features存在变量X中,label存在y中,shuffle。对比选择不同参数时的提取时间
4)训练一个classifier。LinearSVC。并验证其预测准确率。对比不同参数下的准确率训练时间。输入的图片只是一个slide window里面的图像
5)完成find_cars函数。该函数使用上文classifier来搜索汽车。
输入(img, ystart, ystop, scale, cspace, hog_channel, svc, X_scaler, orient, pix_per_cell, cell_per_block, spatial_size, hist_bins, show_all_rectangles)。此处输入img为相机原始图像
输出rectangles一个list用来存放汽车左上角和右下角的像素坐标。
过程包含ROI-->颜色空间转换-->图片的缩放-->以block为单位确定x,y方向的steps-->根据hog_channel得到整幅图hog_features-->for循环里每一个block得到小的hog_features,并用svc预测-->找到汽车后,按原图的比例反向缩放-->左上角右下角存在rectangle
使用:读取一张test_img输入进find_cars函数,将find结果展示出来
6)完成draw_boxes函数,用来将boxes绘制在图片中
7)完成add_heat函数。输入(heatmap, bbox_list)输出heatmap
8)完成apply_threshold函数。输入(heatmap,threshold)输出heatmap
9)完成draw_labeled_bboxes函数。输入(img, labels)输出img和rects
10)完成process_frame函数。输入img,输出:draw_img
过程包括:从1)---9)外加labels = label(heatmap_img)
使用:在6张test image中进行测试。在test_video中进行测试
11)写一个Vehicle_Detect类来存储检测到的汽车数据
12)完成process_frame_for_video函数。输入img,输出draw_img.与process-frame函数基本一致.
使用,对一个video进行测试。