mmdetection予測


mmdetection2.0バージョンは以前に比べて変更されましたが、公式ドキュメントの詳細が更新されていないため、mmdetectionで予測する際にエラーが発生し、多くのブログが元のままです.xのバージョンなので、2.0は具体的にこの方法を参照してください.https://blog.csdn.net/ruiying413/article/details/106477509
また、予測については、ネット上では1枚の画像や数枚の画像のようなもので、フォルダ全体を読み取ることができないので、自分で書いてみました.下に予測シートと予測フォルダの中の画像のコードを貼って、参考にしてください.

予測シート:

from mmdet.apis import init_detector, inference_detector,show_result_pyplot
import numpy as np
import os
import cv2
import random
import mmcv


config_file = 'configs/ms_rcnn/ms_rcnn_r50_fpn_1x_coco.py'# 
checkpoint_file = 'work_dirs/ms_rcnn_r50_fpn_1x_coco/epoch_200.pth'# 

# build the model from a config file and a checkpoint file
model = init_detector(config_file, checkpoint_file, device='cuda:0')
test_img='demo/test.jpg'# 

# test a single image and show the results
#img = 'demo/test.jpg'  # or img = mmcv.imread(img), which will only load it once
img=test_img
result = inference_detector(model, img)
# visualize the results in a new window
model.show_result(img, result)
# or save the visualization results to image files
model.show_result(img, result, out_file='demo/result.jpg')
show_result_pyplot(model, img, result)

複数の予測:

from mmdet.apis import init_detector, inference_detector,show_result_pyplot
import numpy as np
import os
import cv2
import random
import mmcv


config_file = 'configs/ms_rcnn/ms_rcnn_r50_fpn_1x_coco.py'
checkpoint_file = 'work_dirs/ms_rcnn_r50_fpn_1x_coco/epoch_200.pth'

# build the model from a config file and a checkpoint file
model = init_detector(config_file, checkpoint_file, device='cuda:0')

in_folder='data/coco/test2017/'
out_folder='data/coco/test_out2017/'

if not os.path.exists(out_folder):
    os.makedirs(out_folder)
    
for file_name in os.listdir(in_folder):
    img_path=os.path.join(in_folder,file_name)
    img=cv2.imread(img_path)
    

    # test a single image and show the results
    #img = 'demo/test.jpg'  # or img = mmcv.imread(img), which will only load it once
#    img=test_img
    result = inference_detector(model, img)
    # visualize the results in a new window
    model.show_result(img, result)
    # or save the visualization results to image files
    save_path=os.path.join(out_folder,file_name)
    model.show_result(img, result, out_file=save_path)
    show_result_pyplot(model, img, result)