嗨,我使用这个答案并编写我自己的程序,但我有特定的问题.如果没有对象,matchTemplate不会给出错误,我不知道是否有任何方法来检查matchTemplate是否找到对象,任何人都可以给我建议,或者说我检查它的函数名称.
不幸的是我既是python又是openCV初学者,所以如果问题很愚蠢,请原谅我.
我正在尝试使用a cv2.HOGDescriptor来识别视频中的对象.我关注的是逐帧识别(即没有跟踪等).
这是我在做的事情:
我.mpg通过使用阅读视频(目前为a )
capture = cv.CreateFileCapture(video_path) #some path in which I have my video
#capturing frames
frame = cv.QueryFrame(capture) #returns cv2.cv.iplimage
Run Code Online (Sandbox Code Playgroud)为了最终在帧上使用探测器(我将使用它做
found, w = hog.detectMultiScale(frame, winStride, padding, scale)
Run Code Online (Sandbox Code Playgroud)
)我想,我需要转换frame从cv2.cv.iplimage到numpy.ndarray
我做到了通过
tmp = cv.CreateImage(cv.GetSize(frame),8,3)
cv.CvtColor(frame,tmp,cv.CV_BGR2RGB)
ararr = np.asarray(cv.GetMat(tmp)).
Run Code Online (Sandbox Code Playgroud)现在我有以下错误:
found, w = hog.detectMultiScale(ararr, winStride, padding, scale)
TypeError: a float is required
Run Code Online (Sandbox Code Playgroud)
哪里
winStride=(8,8)
padding=(32,32)
scale=1.05
Run Code Online (Sandbox Code Playgroud)
我真的不明白哪个元素是真正的问题.即哪个号码应该是浮点数?
任何帮助赞赏
我已经在一个项目上工作了一段时间,检测和跟踪(移动)从无人机捕获的视频中的车辆,目前我使用的SVM训练有从车辆和背景图像中提取的局部特征的特征包表示.然后我使用滑动窗口检测方法来尝试和定位图像中的车辆,然后我想跟踪.问题是这种方法很慢,我的探测器不如我想的那么可靠,所以我得到了很多误报.
所以我一直在考虑尝试从后台分割汽车以找到大致的位置,以便在应用我的分类器之前减少搜索空间,但我不知道如何去做,并希望有人可以提供帮助?
另外,我一直在阅读有关层的运动分割,使用光流通过流动模型对帧进行分割,是否有人对此方法有任何经验,如果可以,您可以提供一些输入,因为您是否认为此方法适用于我的问题.
以下是示例视频中的两帧
opencv tracking classification object-detection image-segmentation
我无法训练SVM识别我的物体.我正在尝试使用SURF + Bag Of Words + SVM.我的问题是分类器没有检测到任何东西.所有结果都是0.
这是我的代码:
Ptr<FeatureDetector> detector = FeatureDetector::create("SURF");
Ptr<DescriptorExtractor> descriptors = DescriptorExtractor::create("SURF");
string to_string(const int val) {
int i = val;
std::string s;
std::stringstream out;
out << i;
s = out.str();
return s;
}
Mat compute_features(Mat image) {
vector<KeyPoint> keypoints;
Mat features;
detector->detect(image, keypoints);
KeyPointsFilter::retainBest(keypoints, 1500);
descriptors->compute(image, keypoints, features);
return features;
}
BOWKMeansTrainer addFeaturesToBOWKMeansTrainer(String dir, BOWKMeansTrainer& bowTrainer) {
DIR *dp;
struct dirent *dirp;
struct stat filestat;
dp = opendir(dir.c_str());
Mat features;
Mat img;
string filepath;
#pragma …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个Android应用程序,可以识别图像中的对象,并给出其名称作为结果.我知道caffe-library可用于此但在运行./build.py时出错.
命令:
user_name@sysetm_name:~/caffe-android-lib$ ./build.py /bin/android-ndk-r10d/ndk-build
Run Code Online (Sandbox Code Playgroud)
错误:
Traceback (most recent call last):
File "./build.py", line 102, in <module>
main(sys.argv[1:])
File "./build.py", line 94, in main
setup()
File "./build.py", line 24, in setup
call(['curl', '-O', PROTOBUF_URL])
File "/usr/lib/python2.7/subprocess.py", line 522, in call
return Popen(*popenargs, **kwargs).wait()
File "/usr/lib/python2.7/subprocess.py", line 710, in __init__
errread, errwrite)
File "/usr/lib/python2.7/subprocess.py", line 1327, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory
Run Code Online (Sandbox Code Playgroud) 我正在尝试使Tensorflow的新对象检测API正常工作。我已经按照安装说明进行操作,但是在运行命令时
python object_detection/builders/model_builder_test.py
Run Code Online (Sandbox Code Playgroud)
我收到以下错误
from object_detection.protos import anchor_generator_pb2
ImportError: cannot import name anchor_generator_pb2
Run Code Online (Sandbox Code Playgroud)
我查看了object_detection.protos内部,似乎没有任何名为anchor_generator_pb2的东西。是否有其他人设法使该命令运行或解决了此问题?
我已经阅读了有关如何使用TensorFlow对象检测API训练新类的教程。但是我想做的是在预训练模型的已经训练好的课程中添加一个新的课程。
例如:MS-COCO预训练模型有90个班级。我想再添加一个类并检测91个类的对象。
我一直在尝试运行Object detection API,以测试安装是否有效:
python object_detection/builders/model_builder_test.py
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
File "object_detection/builders/model_builder_test.py", line 18, in <module>
from absl.testing import parameterized
ImportError: No module named absl.testing
Run Code Online (Sandbox Code Playgroud)
我无法在任何地方找到解决方案.已经尝试pip install absl-py和pip3 install absl-py,但没有成功.希望你能帮助我.
我最近一直在学习RetinaNet。我阅读了原始论文和一些相关文章,并写了一篇帖子分享我的经验教训:http : //blog.zenggyu.com/en/post/2018-12-05/retinanet-explained-and-demystified/。但是,我仍然有一些困惑,我也在帖子中指出。谁能启发我?
困惑1
如论文所示,如果锚框的IoU与任何地面真相均低于0.4,则将其分配给背景。在这种情况下,对应的分类目标标签应该是什么(假设有K个类别)?
我知道SSD具有背景类别(总共使K + 1个类别),而YOLO预测置信度得分,该置信度得分指示除K类概率之外,盒子中是否存在物体(不是背景)(不是背景) 。虽然我在论文中未找到任何表明RetinaNet包含背景类的陈述,但我确实看到了以下陈述:“ ...,我们仅将检测器的置信度阈值设为0.05后,才从...解码盒预测。”表明存在对置信度得分的预测。但是,此分数从何而来(由于分类子网仅输出表示K个类别的概率的K个数字)?
如果RetinaNet与SSD或YOLO定义目标标签的方式不同,我将假定目标是长度为K的矢量,所有条目均为0,没有1。但是,在这种情况下,如果它是假阴性,那么焦点损失(请参阅下面的定义)将如何惩罚锚点?
哪里
困惑2
与许多其他检测器不同,RetinaNet使用与类无关的包围盒回归器,而分类子网的最后一层的激活是S形激活。这是否意味着一个锚框可以同时预测不同类别的多个对象?
困惑#3
让我们用$ {(A ^ i,G ^ i)} _ {i = 1,... N} $来表示这些匹配的锚点框和地面真相框对,其中$ A $代表锚点,$ G $代表基本事实,$ N $是匹配数。
对于每个匹配的锚点,回归子网会预测四个数字,我们将其表示为$ P ^ i =(P ^ i_x,P ^ i_y,P ^ i_w,P ^ i_h)$。前两个数字指定锚点$ A ^ i $和地面真值$ G ^ i $的中心之间的偏移,而后两个数字指定锚点的宽度/高度与地面真点之间的偏移。相应地,对于这些预测中的每一个,都有一个回归目标$ T ^ i $计算为锚点与地面真相之间的偏移量:
以上方程式正确吗?
在此先感谢您,并随时在帖子中指出其他误解!
更新:
供将来参考,这是我在学习RetinaNet时遇到的另一种困惑(我发现此对话很轻松):
我已经使用自定义数据集(电池)训练了SSD Mobilenet模型。电池的示例图像在下面给出,并且还附带了我用来训练模型的配置文件。
当物体离摄像机更近(通过网络摄像头测试)时,它可以以0.95以上的概率准确地检测到物体,但是当我将物体移到更长的距离时,它不会被检测到。通过调试,发现该对象被检测到,但概率较低,为0.35。最小阈值设置为0.5。如果将阈值0.5更改为0.2,则将检测到对象,但是会有更多的错误检测。
参照此链接,SSD对于小物体的性能不佳,替代解决方案是使用FasterRCNN,但该模型的实时性非常慢。我也希望使用SSD从更长的距离检测电池。
请帮我以下
solid-state-drive object-detection tensorflow object-detection-api mobilenet
object-detection ×10
opencv ×5
tensorflow ×4
python ×2
android ×1
caffe ×1
importerror ×1
mobilenet ×1
surf ×1
svm ×1
tracking ×1