mahmoudalrefaey's picture
Upload app.py
8fccd1a verified
"""
Main application file for FoodViT
Entry point for the food classification application
"""
import os
import sys
import argparse
from pathlib import Path
# Add current directory to path for imports
sys.path.append(os.path.dirname(os.path.abspath(__file__)))
from config import APP_CONFIG
from interface.gradio_app import launch_interface
from utils.predictor import predictor
def check_dependencies():
"""Check if all required dependencies are available"""
required_packages = [
'torch',
'transformers',
'gradio',
'PIL',
'cv2',
'albumentations',
'numpy'
]
missing_packages = []
for package in required_packages:
try:
__import__(package)
except ImportError:
missing_packages.append(package)
if missing_packages:
print(f"Missing required packages: {', '.join(missing_packages)}")
print("Please install them using: pip install -r requirements.txt")
return False
return True
def main():
"""Main function to run the application"""
parser = argparse.ArgumentParser(description="FoodViT - Food Classification Application")
# Remove host, port, share arguments for Hugging Face Spaces
parser.add_argument(
"--debug",
action="store_true",
help="Enable debug mode"
)
args = parser.parse_args()
print("=" * 50)
print("FoodViT - Food Classification Application")
print("=" * 50)
print("Checking dependencies...")
if not check_dependencies():
sys.exit(1)
print("βœ“ All dependencies available")
print("Initializing model...")
if not predictor.initialize():
print("βœ— Failed to initialize model")
sys.exit(1)
print("βœ“ Model initialized successfully")
model_info = predictor.get_model_info()
if "error" not in model_info:
print(f"βœ“ Model loaded on {model_info['device']}")
print(f"βœ“ Total parameters: {model_info['total_parameters']:,}")
print("\nStarting Gradio interface...")
try:
# Launch the interface with default settings for Spaces
launch_interface()
except KeyboardInterrupt:
print("\nApplication stopped by user")
except Exception as e:
print(f"Error running application: {e}")
sys.exit(1)
if __name__ == "__main__":
main()