首先回答,如果针对特定需求,比如只是要从图片中识别常见类型的物体,对识别精度和速度也没有非常高的要求,可以。 但总体来说,机器学习/深度学习都是一个需要根据特定需求和场景进行数据处理、特征工程、算法选择、参数调整的,没有傻瓜式的工具。
就题主说的图片识别需求,因为CNN的特点是端到端的学习,无需人工提取特征。常见类型的物体检测和识别也有预训练好的模型。唯一的障碍是深度学习框架的学习成本。
如果你没有深度学习框架(如Tensorflow/Pytorch/Caffe)的使用经验,可以使用Yolo。简单的3步即可用来识别输入图片中的的常见20类(详细类别见VOC)物体。
Step 1: 下载源码编译
git clone https://github.com/pjreddie/darknet
cd darknet
make
在linux下运行上述命令安装好了,详细安装使用说明参考 Installing Darknet
Step 2: 下载训练好的模型
wget https://pjreddie.com/media/files/yolo.weights
Step 3: 运行
./darknet detect cfg/yolo.cfg yolo.weights data/dog.jpg
其中 `yolo.weights` 是Step 2中下载的模型, `data/dog.jpg`是待识别的图片。
识别结果会保存在 `predictions.jpg`中,结果如下图:
------ update 2017.09.24 23:54 ------
@牛亮 在评论里提到YOLO对于新安装的系统也可能没有那么顺利,Tensorflow可能更方便。个人觉得如果编译没有问题,YOLO更容易点。但TF Object Detection也是一个好的选择。使用TF Object Detection的一个额外好处是预训练的模型多,可以用不同的模型来比较效果。
@何之源 之前发了一篇对TF Object Detection的科普贴 ,5步可以在Jupyter Notebook里跑出结果,也引用在这供参考。如果需要独立批量运行,可将Notebook保存为.py文件,修改少量代码即可。