li { list-style-type: initial; }

Xiuren - Photo

So what drives the creative vision of Xiuren Photo? According to the collective's founder, the driving force behind their art is a desire to explore the human condition. "We are fascinated by the complexities and contradictions of human nature," they explain. "Our photography is a reflection of the world we live in, with all its beauty and ugliness, its wonder and despair."

k = 5 D, I = index.search(X[:1], k) # query the first image against the whole set print("Query image:", paths[0]) print("Top‑5 similar images:") for rank, idx in enumerate(I[0]): print(f" rank+1. paths[idx] (score=D[0][rank]:.4f)") xiuren photo

# ---------------------------------------------------------------------- # 2️⃣ Feature extractor – wraps a pretrained backbone and returns a vector # ---------------------------------------------------------------------- class ResNetFeatureExtractor(nn.Module): """ ResNet‑50 up to the global average‑pooling layer. Output shape: (batch, 2048) """ def __init__(self, pretrained: bool = True): super().__init__() backbone = models.resnet50(weights=models.ResNet50_Weights.IMAGENET1K_V2 if pretrained else None) # Drop the classification head (fc) – keep everything up to avgpool self.features = nn.Sequential( backbone.conv1, backbone.bn1, backbone.relu, backbone.maxpool, backbone.layer1, backbone.layer2, backbone.layer3, backbone.layer4, backbone.avgpool, # shape (B, 2048, 1, 1) ) # Freeze parameters – we only need forward passes for p in self.features.parameters(): p.requires_grad = False So what drives the creative vision of Xiuren Photo

# ---------------------------------------------------------------------- # 1️⃣ Dataset helper – loads images lazily, applies ImageNet transforms # ---------------------------------------------------------------------- class ImageFolderDataset(Dataset): SUPPORTED_EXTS = ".jpg", ".jpeg", ".png", ".bmp", ".tiff", ".webp" "Our photography is a reflection of the world