quantrs2_ml/computer_vision/
functions.rs

1//! Auto-generated module
2//!
3//! 🤖 Generated with [SplitRS](https://github.com/cool-japan/splitrs)
4
5use super::*;
6use crate::error::{MLError, Result};
7use crate::optimization::OptimizationMethod;
8use crate::qcnn::PoolingType;
9use crate::qnn::{QNNLayerType, QuantumNeuralNetwork};
10use crate::quantum_transformer::{QuantumTransformer, QuantumTransformerConfig};
11use quantrs2_circuit::builder::{Circuit, Simulator};
12use quantrs2_core::gate::{multi::*, single::*, GateOp};
13use quantrs2_sim::statevector::StateVectorSimulator;
14use scirs2_core::ndarray::{s, Array1, Array2, Array3, Array4, Axis};
15use std::f64::consts::PI;
16/// Trait for vision models
17impl Clone for Box<dyn VisionModel> {
18    fn clone(&self) -> Self {
19        self.clone_box()
20    }
21}
22/// Trait for task-specific heads
23impl Clone for Box<dyn TaskHead> {
24    fn clone(&self) -> Self {
25        self.clone_box()
26    }
27}
28#[cfg(test)]
29mod tests {
30    use super::*;
31    #[test]
32    fn test_vision_config_creation() {
33        let config = QuantumVisionConfig::default();
34        assert_eq!(config.num_qubits, 12);
35        let detection_config = QuantumVisionConfig::object_detection(80);
36        assert_eq!(detection_config.num_qubits, 16);
37        let seg_config = QuantumVisionConfig::segmentation(21);
38        assert_eq!(seg_config.num_qubits, 14);
39    }
40    #[test]
41    fn test_image_encoder() {
42        let encoder = QuantumImageEncoder::new(ImageEncodingMethod::AmplitudeEncoding, 8).unwrap();
43        assert_eq!(encoder.num_qubits, 8);
44        assert!(!encoder.encoding_circuits.is_empty());
45    }
46    #[test]
47    fn test_preprocessing() {
48        let config = PreprocessingConfig::default();
49        let preprocessor = ImagePreprocessor::new(config);
50        let images = Array4::zeros((2, 3, 256, 256));
51        let processed = preprocessor.preprocess(&images).unwrap();
52        assert_eq!(processed.dim(), (2, 3, 224, 224));
53    }
54}