Closed 294978174 closed 5 months ago
我用trtexec转换onnx就能用了,不过速度也不快,https://github.com/NagatoYuki0943/anomalib-tensorrt-cpp
在10700+1080ti上使用efficient_ad small 模型测试MVTec的bottle数据集, 平均速度为 openvino: 151.4 ms onnxruntime-gpu(使用gpu): 26.7 ms tensorrt: 24.05 ms
在10700+1080ti上使用efficient_ad small 模型测试MVTec的bottle数据集, 平均速度为 openvino: 151.4 ms onnxruntime-gpu(使用gpu): 26.7 ms tensorrt: 24.05 ms
我在AMD 5900HX上测试patchcore resnet18,推理很慢
openvino是intel的,他们说不为AMD处理器提供技术支持,要不试试onnxruntime吧,没准快点 10700使用openvino测试 wide_resnet50_2 patchcore 的平均速度速度为65.35 ms,5900hx这么慢肯定有问题,试试https://github.com/NagatoYuki0943/anomalib-onnxruntime-cpp吧,如果还慢的话就没办法了,amd也没提供ai加速库
openvino是intel的,他们说不为AMD处理器提供技术支持,要不试试onnxruntime吧,没准快点 10700使用openvino测试 wide_resnet50_2 patchcore 的平均速度速度为65.35 ms,5900hx这么慢肯定有问题,试试https://github.com/NagatoYuki0943/anomalib-onnxruntime-cpp吧,如果还慢的话就没办法了,amd也没提供ai加速库
onnxruntime cpu和gpu运行不了patchcore导出的onnx模型,但可以运行padim导出的onnx模型,不知道为何。patchcore的onnx报如下错误。
在anomalib的`src/anomalib/models/patchcore/torch_model.py文件的subsample_embedding函数添加如下代码,然后重新训练,代码的目的是限制memory的size
def subsample_embedding(self, embedding: Tensor, sampling_ratio: float) -> None:
"""Subsample embedding based on coreset sampling and store to memory.
Args:
embedding (np.ndarray): Embedding tensor from the CNN
sampling_ratio (float): Coreset sampling ratio
"""
#------------------------------add this------------------------------#
# The maximum allowed embedding length to prevent onnxruntime errors, you can try adjusting the embedding_max_len depending on the image resolution
embedding_max_len = 15000
embedding_len = int(embedding.size(0))
if embedding_len * sampling_ratio > embedding_max_len:
sampling_ratio = embedding_max_len / embedding_len
print(f"embedding_max_len = {embedding_max_len}, use sampling_ratio = {sampling_ratio}, smaller than config")
#------------------------------add this------------------------------#
# Coreset Subsampling
sampler = KCenterGreedy(embedding=embedding, sampling_ratio=sampling_ratio)
coreset = sampler.sample_coreset()
self.memory_bank = coreset
可以调整embedding_max_len
的大小防止报错,这个错误是onnxruntime独有的,openvino和tensorrt都没问题
另外有一点要说明的是patchcore的推理速度和memory bank的大小有关,越大推理速度越慢,memory size的大小与图片的数量,图片训练分辨率有关,我的代码限制了memory size的最大值,也就是说推理速度也被限定在了一个最小值,如果速度不满意的话可以试试efficient ad模型,速度很快
另外有一点要说明的是patchcore的推理速度和memory bank的大小有关,越大推理速度越慢,memory size的大小与图片的数量,图片训练分辨率有关,我的代码限制了memory size的最大值,也就是说推理速度也被限定在了一个最小值,如果速度不满意的话可以试试efficient ad模型,速度很快
有没有可能出一个opencv dnn版本的,白嫖党深表感谢 :P
另外有一点要说明的是patchcore的推理速度和memory bank的大小有关,越大推理速度越慢,memory size的大小与图片的数量,图片训练分辨率有关,我的代码限制了memory size的最大值,也就是说推理速度也被限定在了一个最小值,如果速度不满意的话可以试试efficient ad模型,速度很快
有没有可能出一个opencv dnn版本的,白嫖党深表感谢 :P
其实写了一部分,不过dnn载入模型有问题,还有就是让dnn返回的结果不对,正在想办法
另外有一点要说明的是patchcore的推理速度和memory bank的大小有关,越大推理速度越慢,memory size的大小与图片的数量,图片训练分辨率有关,我的代码限制了memory size的最大值,也就是说推理速度也被限定在了一个最小值,如果速度不满意的话可以试试efficient ad模型,速度很快
有没有可能出一个opencv dnn版本的,白嫖党深表感谢 :P
其实写了一部分,不过dnn载入模型有问题,还有就是让dnn返回的结果不对,正在想办法
加油!!:)
另外有一点要说明的是patchcore的推理速度和memory bank的大小有关,越大推理速度越慢,memory size的大小与图片的数量,图片训练分辨率有关,我的代码限制了memory size的最大值,也就是说推理速度也被限定在了一个最小值,如果速度不满意的话可以试试efficient ad模型,速度很快
有没有可能出一个opencv dnn版本的,白嫖党深表感谢 :P
其实写了一部分,不过dnn载入模型有问题,还有就是让dnn返回的结果不对,正在想办法
加油!!:)
请问有考虑用tensorrt进行推理吗,其中的余弦相似度计算需要写plugin吗