Vinh.Vu commited on
Commit
e609c58
·
1 Parent(s): ee1da4c

Edit fthe ile to deploy dDockerin Hugging Face

Browse files
Files changed (6) hide show
  1. .dockerignore +18 -0
  2. .gitattributes +2 -2
  3. App/app.py +11 -4
  4. Dockerfile +39 -0
  5. README.md +9 -0
  6. requirements.txt +2 -2
.dockerignore ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ __pycache__
2
+ *.pyc
3
+ .git
4
+ .gitignore
5
+ *.ipynb
6
+ train_sample_videos/
7
+ prepared_dataset/
8
+ split_dataset/
9
+ tmp_debug/
10
+ tmp_fake_faces/
11
+ tmp_checkpoint/best_model.h5
12
+ 00-*.py
13
+ 01-*.py
14
+ 02-*.py
15
+ 03-*.py
16
+ LICENSE
17
+ App/diag_log.txt
18
+ App/uploads/
.gitattributes CHANGED
@@ -1,6 +1,6 @@
 
 
1
  *.pt filter=lfs diff=lfs merge=lfs -text
2
  *.png filter=lfs diff=lfs merge=lfs -text
3
  *.tflite filter=lfs diff=lfs merge=lfs -text
4
- *.keras filter=lfs diff=lfs merge=lfs -text
5
- *.h5 filter=lfs diff=lfs merge=lfs -text
6
  *.ipynb filter=lfs diff=lfs merge=lfs -text
 
1
+ *.keras filter=lfs diff=lfs merge=lfs -text
2
+ *.h5 filter=lfs diff=lfs merge=lfs -text
3
  *.pt filter=lfs diff=lfs merge=lfs -text
4
  *.png filter=lfs diff=lfs merge=lfs -text
5
  *.tflite filter=lfs diff=lfs merge=lfs -text
 
 
6
  *.ipynb filter=lfs diff=lfs merge=lfs -text
App/app.py CHANGED
@@ -39,13 +39,19 @@ logger = logging.getLogger(__name__)
39
 
40
  app = Flask(__name__)
41
  app.config['UPLOAD_FOLDER'] = os.path.join(os.path.dirname(__file__), 'uploads')
42
- app.config['MAX_CONTENT_LENGTH'] = 200 * 1024 * 1024 # 200 MB limit
43
  ALLOWED_EXTENSIONS = {'mp4', 'avi', 'mov', 'mkv', 'wmv'}
44
 
45
  os.makedirs(app.config['UPLOAD_FOLDER'], exist_ok=True)
46
 
47
  # Load the trained model
48
- MODEL_PATH = os.path.join(os.path.dirname(__file__), '..', 'tmp_checkpoint', 'best_model.keras')
 
 
 
 
 
 
49
  logger.info('Loading model from %s', MODEL_PATH)
50
  model = load_model(MODEL_PATH)
51
  logger.info('Model loaded successfully')
@@ -309,5 +315,6 @@ app.register_blueprint(routes)
309
 
310
 
311
  if __name__ == '__main__':
312
- logger.info('Starting Flask server on http://0.0.0.0:5000')
313
- app.run(debug=False, host='0.0.0.0', port=5000)
 
 
39
 
40
  app = Flask(__name__)
41
  app.config['UPLOAD_FOLDER'] = os.path.join(os.path.dirname(__file__), 'uploads')
42
+ app.config['MAX_CONTENT_LENGTH'] = int(os.environ.get('MAX_UPLOAD_MB', 50)) * 1024 * 1024
43
  ALLOWED_EXTENSIONS = {'mp4', 'avi', 'mov', 'mkv', 'wmv'}
44
 
45
  os.makedirs(app.config['UPLOAD_FOLDER'], exist_ok=True)
46
 
47
  # Load the trained model
48
+ MODEL_PATH = os.environ.get(
49
+ 'MODEL_PATH',
50
+ os.path.join(os.path.dirname(__file__), 'models', 'best_model.keras')
51
+ )
52
+ if not os.path.exists(MODEL_PATH):
53
+ # Fallback for local development
54
+ MODEL_PATH = os.path.join(os.path.dirname(__file__), '..', 'tmp_checkpoint', 'best_model.keras')
55
  logger.info('Loading model from %s', MODEL_PATH)
56
  model = load_model(MODEL_PATH)
57
  logger.info('Model loaded successfully')
 
315
 
316
 
317
  if __name__ == '__main__':
318
+ port = int(os.environ.get('PORT', 7860))
319
+ logger.info('Starting Flask server on http://0.0.0.0:%d', port)
320
+ app.run(debug=False, host='0.0.0.0', port=port)
Dockerfile ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ FROM python:3.10-slim
2
+
3
+ # System dependencies for OpenCV, ffmpeg, and video processing
4
+ RUN apt-get update && apt-get install -y --no-install-recommends \
5
+ ffmpeg \
6
+ libgl1 \
7
+ libglib2.0-0 \
8
+ libsm6 \
9
+ libxext6 \
10
+ libxrender1 \
11
+ && rm -rf /var/lib/apt/lists/*
12
+
13
+ # Create non-root user (required by HF Spaces)
14
+ RUN useradd -m -u 1000 user
15
+ ENV HOME=/home/user \
16
+ PATH=/home/user/.local/bin:$PATH \
17
+ PYTHONUNBUFFERED=1 \
18
+ TF_CPP_MIN_LOG_LEVEL=2
19
+
20
+ WORKDIR /app
21
+
22
+ # Install Python dependencies
23
+ COPY requirements.txt .
24
+ RUN pip install --no-cache-dir -r requirements.txt
25
+
26
+ # Copy application code
27
+ COPY App/ .
28
+
29
+ # Copy model files
30
+ COPY tmp_checkpoint/best_model.keras models/best_model.keras
31
+
32
+ # Create uploads directory with proper permissions
33
+ RUN mkdir -p uploads && chown -R user:user /app
34
+
35
+ USER user
36
+
37
+ EXPOSE 7860
38
+
39
+ CMD ["python", "app.py"]
README.md CHANGED
@@ -1,2 +1,11 @@
 
 
 
 
 
 
 
 
 
1
  # DeepFake-Detect
2
  Free deepfake detection tool for videos. Upload a video and get per-face authenticity scores in seconds. AI-powered synthetic face detection.
 
1
+ ---
2
+ title: AI-Deepfake Video Detection
3
+ emoji: 🔍
4
+ colorFrom: blue
5
+ colorTo: purple
6
+ sdk: docker
7
+ app_port: 7860
8
+ ---
9
+
10
  # DeepFake-Detect
11
  Free deepfake detection tool for videos. Upload a video and get per-face authenticity scores in seconds. AI-powered synthetic face detection.
requirements.txt CHANGED
@@ -1,7 +1,7 @@
1
  numpy
2
  pandas
3
- tensorflow
4
- opencv-python>=4.1.0
5
  mtcnn>=0.1.0
6
  split_folders
7
  flask
 
1
  numpy
2
  pandas
3
+ tensorflow-cpu
4
+ opencv-python-headless>=4.1.0
5
  mtcnn>=0.1.0
6
  split_folders
7
  flask