机器视觉:物体识别与跟踪(车辆检测,实战项目)第一部分:HOG+SVM

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中

1. 主要步骤

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

 

2. to do list

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进行测试。   

你可能感兴趣的:(Python,命令,实战项目)