Instructions to use Nekshay/Car_VS_Rest with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use Nekshay/Car_VS_Rest with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("image-classification", model="Nekshay/Car_VS_Rest") pipe("https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/hub/parrots.png")# Load model directly from transformers import AutoImageProcessor, AutoModelForImageClassification processor = AutoImageProcessor.from_pretrained("Nekshay/Car_VS_Rest") model = AutoModelForImageClassification.from_pretrained("Nekshay/Car_VS_Rest", device_map="auto") - Notebooks
- Google Colab
- Kaggle
| import torch | |
| from torch.utils.data import Dataset, DataLoader | |
| # Define a custom Dataset class | |
| class CarShadowDataset(Dataset): | |
| def __init__(self, root_dir, transform=None): | |
| self.root_dir = root_dir | |
| self.transform = transform | |
| self.image_paths = [] # List to store image paths | |
| # Loop through car and shadow folders to collect image paths | |
| for phase in ['train', 'val', 'test']: # Adjust based on your data structure | |
| car_folder = os.path.join(root_dir, phase, 'car') | |
| shadow_folder = os.path.join(root_dir, phase, 'shadow') | |
| for filename in os.listdir(car_folder): | |
| car_path = os.path.join(car_folder, filename) | |
| shadow_path = os.path.join(shadow_folder, filename.split('.')[0] + '_shadow.jpg') # Assuming consistent naming | |
| self.image_paths.append((car_path, shadow_path)) | |
| def __len__(self): | |
| return len(self.image_paths) | |
| def __getitem__(self, idx): | |
| car_path, shadow_path = self.image_paths[idx] | |
| car_image = load_image(car_path) # Replace with your image loading function | |
| shadow_image = load_image(shadow_path) # Replace with your image loading function | |
| if self.transform: | |
| car_image = self.transform(car_image) | |
| shadow_image = self.transform(shadow_image) | |
| return car_image, shadow_image | |
| # Function to load image (replace with your preferred method) | |
| def load_image(path): | |
| # Implement image loading using libraries like OpenCV or PIL | |
| # Ensure images are converted to tensors and normalized if needed | |
| # ... | |
| # Prepare data loaders | |
| train_data = DataLoader(CarShadowDataset(root_dir='dataset/train', transform=your_transform), batch_size=32, shuffle=True) | |
| val_data = DataLoader(CarShadowDataset(root_dir='dataset/val', transform=your_transform), batch_size=32) # Optional for validation | |
| # Example usage | |
| for car_image, shadow_image in train_data: | |
| # Access your data for training | |
| # ... | |
| # ... (Previous code for model definition and DataLoader) | |
| # Discriminator Training | |
| def train_discriminator(d_optimizer, real_images, fake_images, real_labels, fake_labels): | |
| # Clear gradients | |
| d_optimizer.zero_grad() | |
| # Forward pass through discriminator | |
| d_real_output = discriminator(real_images, real_images) # Real images with real shadows | |
| d_fake_output = discriminator(real_images, fake_images) # Real images with generated shadows | |
| # Calculate loss | |
| d_real_loss = criterion(d_real_output, torch.ones_like(d_real_output)) | |
| d_fake_loss = criterion(d_fake_output, torch.zeros_like(d_fake_output)) | |
| d_loss = (d_real_loss + d_fake_loss) / 2 | |
| # Backpropagate and update weights | |
| d_loss.backward() | |
| d_optimizer.step() | |
| # Return the discriminator loss | |
| return d_loss.item() | |
| # Generator Training | |
| def train_generator(g_optimizer, real_images, fake_images): | |
| # Clear gradients | |
| g_optimizer.zero_grad() | |
| # Forward pass through discriminator (using generated shadows) | |
| g_fake_output = discriminator(real_images, fake_images) | |
| # Calculate loss (try to fool the discriminator) | |
| g_loss = criterion(g_fake_output, torch.ones_like(g_fake_output)) | |
| # Backpropagate and update weights | |
| g_loss.backward() | |
| g_optimizer.step() | |
| # Return the generator loss | |
| return g_loss.item() | |
| # Training loop | |
| for epoch in range(epochs): | |
| for i, (real_images, real_shadows) in enumerate(train_data): | |
| # Generate fake shadows | |
| fake_shadows = generator(real_images) | |
| # Train discriminator | |
| d_loss = train_discriminator(d_optimizer, real_images, fake_shadows, torch.ones(real_images.size(0)), torch.zeros(real_images.size(0))) | |
| # Train generator | |
| g_loss = train_generator(g_optimizer, real_images, fake_shadows) | |
| # Print training progress | |
| if i % 100 == 0: | |
| print(f'Epoch [{epoch+1}/{epochs}], Step [{i+1}/{len(train_data)}], D_loss: {d_loss:.4f}, G_loss: {g_loss:.4f}') | |
| I'd like to commend my colleague, Debashish, for his outstanding performance and invaluable contributions to our team. Debashish's deep understanding and expertise in machine learning concepts have been instrumental in driving our projects forward. He is always enthusiastic about experimenting with new ideas and technologies, which has led to innovative solutions and advancements in our work. Notably, Debashish developed a highly efficient tiny image classifier tailored for mobile applications and successfully integrated this ML model into our mobile app. Additionally, his efforts were crucial in creating a proof of concept (POC) for an ML-integrated mobile app using React-Native. Debashish's dedication and technical prowess have significantly enhanced our capabilities and project outcomes. | |