|
import torch |
|
import torchvision.transforms as transforms |
|
from PIL import Image |
|
from torchvision.models.detection import fasterrcnn_resnet50_fpn |
|
|
|
|
|
def has_person(image_path): |
|
|
|
model = fasterrcnn_resnet50_fpn(pretrained=True) |
|
model.eval() |
|
|
|
|
|
img = Image.open(image_path) |
|
transform = transforms.Compose([transforms.ToTensor()]) |
|
input_tensor = transform(img) |
|
input_batch = input_tensor.unsqueeze(0) |
|
|
|
|
|
with torch.no_grad(): |
|
output = model(input_batch) |
|
|
|
|
|
labels = output[0]['labels'].numpy() |
|
scores = output[0]['scores'].numpy() |
|
|
|
|
|
person_detected = any(label == 1 and score > |
|
0.5 for label, score in zip(labels, scores)) |
|
|
|
return person_detected |
|
|
|
|
|
if __name__ == "__main__": |
|
image_path = './images/test.jpg' |
|
if has_person(image_path): |
|
print("图片中检测到人体。") |
|
else: |
|
print("图片中没有检测到人体。") |
|
|