Spaces:
Sleeping
Sleeping
Create README.md
Browse files
README.md
CHANGED
|
@@ -1,14 +1,133 @@
|
|
| 1 |
-
|
| 2 |
-
|
| 3 |
-
|
| 4 |
-
|
| 5 |
-
|
| 6 |
-
|
| 7 |
-
|
| 8 |
-
|
| 9 |
-
|
| 10 |
-
|
| 11 |
-
|
| 12 |
-
|
| 13 |
-
|
| 14 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# π½οΈ Food Image Crowdsourcing App
|
| 2 |
+
|
| 3 |
+
A Streamlit application that allows users to upload food images for AI model training. These images will be used to fine-tune datasets for food image recognition to annotate uploaded food pictures with caloric and nutrient values.
|
| 4 |
+
|
| 5 |
+
## π Features
|
| 6 |
+
|
| 7 |
+
- User authentication via Firebase
|
| 8 |
+
- Image upload and processing
|
| 9 |
+
- Token reward system for contributors
|
| 10 |
+
- AWS S3 storage for images
|
| 11 |
+
- DynamoDB for metadata storage
|
| 12 |
+
|
| 13 |
+
## π Deployment to Hugging Face Spaces
|
| 14 |
+
|
| 15 |
+
### Prerequisites
|
| 16 |
+
|
| 17 |
+
1. [Hugging Face](https://huggingface.co/) account
|
| 18 |
+
2. AWS account with S3 and DynamoDB
|
| 19 |
+
3. Firebase project for authentication
|
| 20 |
+
|
| 21 |
+
### Step 1: Set up AWS Resources
|
| 22 |
+
|
| 23 |
+
1. Create an S3 bucket: `food-image-crowdsourcing`
|
| 24 |
+
2. Create a DynamoDB table: `image_metadata` with primary key `image_id`
|
| 25 |
+
3. Create an IAM user with permissions for S3 and DynamoDB
|
| 26 |
+
4. Note your AWS Access Key and Secret Key
|
| 27 |
+
|
| 28 |
+
### Step 2: Set up Firebase Authentication
|
| 29 |
+
|
| 30 |
+
1. Create a new Firebase project at [Firebase Console](https://console.firebase.google.com/)
|
| 31 |
+
2. Enable Email/Password authentication
|
| 32 |
+
3. Generate a new private key for your service account (Project settings > Service accounts > Generate new private key)
|
| 33 |
+
4. Save the JSON file
|
| 34 |
+
|
| 35 |
+
### Step 3: Create a New Hugging Face Space
|
| 36 |
+
|
| 37 |
+
1. Go to [Hugging Face Spaces](https://huggingface.co/spaces)
|
| 38 |
+
2. Click "Create new Space"
|
| 39 |
+
3. Choose a name for your Space
|
| 40 |
+
4. Select "Streamlit" as the SDK
|
| 41 |
+
5. Choose visibility (Public or Private)
|
| 42 |
+
6. Click "Create Space"
|
| 43 |
+
|
| 44 |
+
### Step 4: Upload Files to the Space
|
| 45 |
+
|
| 46 |
+
Upload the following files to your Space:
|
| 47 |
+
- `app.py`
|
| 48 |
+
- `requirements.txt`
|
| 49 |
+
- `PARTICIPATION_GUIDELINES.md`
|
| 50 |
+
- `TOKEN_REWARDS.md`
|
| 51 |
+
- `TERMS_OF_SERVICE.md`
|
| 52 |
+
|
| 53 |
+
You can do this via the Hugging Face web interface or using Git.
|
| 54 |
+
|
| 55 |
+
### Step 5: Configure Secrets
|
| 56 |
+
|
| 57 |
+
1. Go to your Space's Settings tab
|
| 58 |
+
2. Under "Repository secrets", add the following secrets:
|
| 59 |
+
- `AWS_ACCESS_KEY`: Your AWS access key
|
| 60 |
+
- `AWS_SECRET_KEY`: Your AWS secret key
|
| 61 |
+
- `AWS_REGION`: Your AWS region (e.g., `us-east-1`)
|
| 62 |
+
- `S3_BUCKET_NAME`: Your S3 bucket name (e.g., `food-image-crowdsourcing`)
|
| 63 |
+
- `DYNAMODB_TABLE`: Your DynamoDB table name (e.g., `image_metadata`)
|
| 64 |
+
- `FIREBASE_CONFIG`: Paste the entire content of your Firebase service account JSON file
|
| 65 |
+
|
| 66 |
+
### Step 6: Deploy and Run
|
| 67 |
+
|
| 68 |
+
1. Your Space should automatically build and deploy when you push your changes
|
| 69 |
+
2. If not, you can manually rebuild from the Settings tab
|
| 70 |
+
3. Once deployed, you can access your app at `https://huggingface.co/spaces/your-username/your-space-name`
|
| 71 |
+
|
| 72 |
+
## π Important Files
|
| 73 |
+
|
| 74 |
+
- `app.py`: The main Streamlit application
|
| 75 |
+
- `requirements.txt`: Python dependencies
|
| 76 |
+
- `PARTICIPATION_GUIDELINES.md`: Rules for user participation
|
| 77 |
+
- `TOKEN_REWARDS.md`: Explanation of the token reward system
|
| 78 |
+
- `TERMS_OF_SERVICE.md`: Legal terms and conditions
|
| 79 |
+
|
| 80 |
+
## π Local Development
|
| 81 |
+
|
| 82 |
+
To run this application locally:
|
| 83 |
+
|
| 84 |
+
1. Clone the repository
|
| 85 |
+
2. Install dependencies: `pip install -r requirements.txt`
|
| 86 |
+
3. Create a `.env` file with the required environment variables
|
| 87 |
+
4. Run the app: `streamlit run app.py`
|
| 88 |
+
|
| 89 |
+
## π¦ Required Environment Variables
|
| 90 |
+
|
| 91 |
+
```
|
| 92 |
+
AWS_ACCESS_KEY=your_aws_access_key
|
| 93 |
+
AWS_SECRET_KEY=your_aws_secret_key
|
| 94 |
+
AWS_REGION=your_aws_region
|
| 95 |
+
S3_BUCKET_NAME=your_s3_bucket_name
|
| 96 |
+
DYNAMODB_TABLE=your_dynamodb_table_name
|
| 97 |
+
FIREBASE_CONFIG=your_firebase_json_config
|
| 98 |
+
```
|
| 99 |
+
|
| 100 |
+
## π Data Model
|
| 101 |
+
|
| 102 |
+
### S3 Object Structure
|
| 103 |
+
|
| 104 |
+
Images are stored in S3 with the following path pattern:
|
| 105 |
+
```
|
| 106 |
+
{user_id}/{timestamp}_{image_id}.jpg
|
| 107 |
+
```
|
| 108 |
+
|
| 109 |
+
### DynamoDB Schema
|
| 110 |
+
|
| 111 |
+
Each image entry in DynamoDB contains:
|
| 112 |
+
- `image_id` (Primary Key): UUID for the image
|
| 113 |
+
- `user_id`: ID of the uploading user
|
| 114 |
+
- `upload_timestamp`: When the image was uploaded
|
| 115 |
+
- `food_name`: Name of the food
|
| 116 |
+
- `portion_size`: Size/weight of the portion
|
| 117 |
+
- `portion_unit`: Unit of measurement
|
| 118 |
+
- `cooking_method`: How the food was prepared
|
| 119 |
+
- `ingredients`: List of main ingredients
|
| 120 |
+
- `s3_path`: Path to the image in S3
|
| 121 |
+
- `tokens_awarded`: Number of tokens awarded for this upload
|
| 122 |
+
|
| 123 |
+
## π οΈ Future Enhancements
|
| 124 |
+
|
| 125 |
+
1. Image tagging with machine learning
|
| 126 |
+
2. Nutritional information estimation
|
| 127 |
+
3. Social sharing features
|
| 128 |
+
4. Mobile app integration
|
| 129 |
+
5. Enhanced analytics dashboard
|
| 130 |
+
|
| 131 |
+
## π License
|
| 132 |
+
|
| 133 |
+
This project is licensed under the MIT License - see the LICENSE file for details.
|