本文将引见界说成绩的方法,和我处理成绩的方法。
目次
为何选择“椅子成绩”?
成绩简略化:在清楚的图象中停止“椅子辨认”
进一步的挑衅:找到椅子的地位
一个先辈的“对象辨认”技巧——YOLO概述
将YOLO运用于“椅子辨认”
面对的挑衅和将来将采用的步调
为何选择“椅子成绩”?
起首我将论述我为何想要在一张照片中“数椅子”。
在Analytics Vidhya的办公室里,平日会有10到15小我。但到了炎天,练习生们就会“涌入”我们的办公室。所以,假如我们要在炎天开全员年夜会,我们就必需要从其他房间里拉出一切空的椅子。
我是一个特殊懒的人,所以我想,有无一种算法可以或许直接告知我们哪间房间有余暇的椅子。如许一来,我们就不消挨个房间找椅子了,省时又省力。
这看上去是个再简略不外的成绩,但我可以用它来测验考试我取得的新技巧。深度进修可以或许处理这个成绩吗?诚实说,我也不肯定深度进修毕竟能不克不及用来处理这一成绩,然则试一下总没有害处,不是吗?
成绩中需完成的义务
既然你曾经懂得了我们须要处理的成绩,那末接上去我会向你引见我处理成绩的进程。我会把这个成绩分化为四个分歧的义务——
假设我们有一个房间的视频资本,那末在视频中有无涌现一把椅子?
假如视频中涌现了椅子,那末这把椅子在房间的甚么地位呢?
这把椅子能否被占用了?假如有未被占用的椅子,那末未被占用的椅子数目是若干呢?
我们应当从哪间房间里搬空椅子?
我决议先处理一个绝对简略的成绩,然后再测验考试处理更庞杂的成绩。按部就班,一步步到达我的目的。这也是我将这个成绩分化为四个分歧的义务的缘由。在本文,我将具体引见前两个义务的完成进程;在后续文章中,我会持续引见后两个义务的完成进程。
成绩简略化:在清楚的图象中停止“椅子辨认”
处理“椅子成绩”的第一步,也是最简略的一步,就是断定图片中的房间内能否有椅子。如今,我将这个成绩进一步简化——我将收集对视频资本的需求疏忽,给收集输出了我拍摄的几张照片。
假定我给你两张照片,你能告知我哪一张照片中有椅子吗?
谜底是第一张,而你毕竟是怎样晓得的呢?
由于你见过椅子许多许多次了,所以对你来讲断定图片里有无椅子其实不难。换言之,你关于实际中的椅子长甚么样曾经有了懂得。异样的,我们可以练习一个神经收集,让收集帮我们完成这个辨认的任务。
趁便提一下,我们之所以应用神经收集而不消其他的算法,是由于神经收集是在图象处置成绩方面最壮大、最早进的技巧。
所以,我将一个经由ImageNet数据集预练习的神经收集运用到这些图象上。
然则当我让模子辨认图象中的对象时,涌现了一个成绩——它不克不及精确地分离图象中的对象。例如,下图是模子针对图象的输入成果。
[[('n03179701', 'desk', 0.56483036), ('n03337140', 'file', 0.14689149), ('n04550184', 'wardrobe', 0.03918023)]]
它将图片中的“椅子”毛病地断定成了“书桌”。如许的成果其实使人很掉望,由于书桌和椅子的类似度不高,按理来讲长短常轻易辨别的。
处理“椅子照样书桌”的成绩
正如我在之前的文章中提到的,每当我在树立神经收集时碰到成绩,我就会慢慢处理这个成绩。我会将每一个步调列成一个清单:
第一步:检讨收集架构
第二步:检讨神经收集的超参数
第三步:检讨收集的庞杂性
第四步:检讨输出数据的构造
第五步:检讨数据的散布
在一番检讨评价以后,我发明模子的图象输出是不准确的,由于我没有准确地处置图象的纵横比例。所以,为懂得决这个成绩,我添加了一个自界说代码,该自界说代码之前在GitHub上的一个keras成绩中涌现过。更新的图象以下图:
[[('n02791124', 'barber_chair', 0.77817303), ('n03179701', 'desk', 0.090379775), ('n03337140', 'file', 0.033129346)]]
处置完这个成绩今后,模子就可以开端正常地任务,输入准确的成果了。
进一步的挑衅:找到椅子的地位
如今,我们曾经断定出了图象中有一把椅子,那末接上去我们就要辨认这把椅子在甚么地位。除这把椅子,我们还要辨认出图象中的人。我们须要经由过程辨认这小我来断定这把椅子能否被占用了。这两个义务(义务二和义务三)将有助于我们处理和处置更年夜的义务,断定作这把椅子能否被占用了。
与后面的义务一样,我们将应用一个预练习的收集,这个收集将给我们供给一个可接收的分数。今朝,YOLO收集是“对象检测”的最好模子,它可以或许及时地展现相当不错的机能。在本文,我对YOLO收集做了简略的引见。上面,我们来看看若何应用YOLO处理这个成绩。
应用YOLO停止“椅子检测”
在体系中设置YOLO收集,我们可以依照以下简略的步调:
第一步:
git clone https://github.com/pjreddie/darknet
cd darknet
make
第二步:
wget https://pjreddie.com/media/files/yolo.weights
用YOLO来处理我们的成绩,你须要输出以下指令,而且供给你本身图象的地位
./darknet detect cfg/yolo.cfg yolo.weights //data/image.jpg
在我们的图象上运用了YOLO以后,我发明其成果异常不错。上面是一些例子:
面对的挑衅和将来将采用的步调
固然开始停顿得异常顺遂,然则依然有成绩会障碍这个项目标成长。以下是个中一些成绩:
成绩一:这个YOLO模子照样会涌现一些毛病,它其实不是一个100%准确的模子。好比,鄙人面的这张图片中,一个渣滓桶居然被毛病地辨认成了一小我!
成绩二:假如在一张图象中,一把椅子盖住了别的一把椅子,算法还能辨认出这把被盖住的椅子吗?这是个值得思虑的成绩。
除这些能够涌现的成绩以外,还有一些加倍现实的细节须要斟酌,好比说,算法推举一个处理计划须要多长时光?算法须要运转甚么类型的硬件?等等。这些都是在把算法作为商品出售之前须要斟酌息争决的成绩。
异样,像之前所说的,在这篇文章中只评论辩论后面两个义务,还没有触及到前面两个义务。那末,接上去的义务就是盘算出房间内的椅子数目,然后树立起一个“端到端”的产物。
尾注
本文内容涵盖了图象中的“物体检测和辨认”,个中的物体就是“椅子”。针对物体辨认,我们用了一个简略的预练习的模子来辨认图象中的物体。另外一方面,针对物体检测,我们应用了YOLO收集——一项异常先辈的对象及时检测技巧。