Spaces:
Running
on
Zero
Running
on
Zero
Update professional_photography.py
Browse files- professional_photography.py +75 -75
professional_photography.py
CHANGED
@@ -259,7 +259,7 @@ EXPERT_PHOTOGRAPHY_KNOWLEDGE = {
|
|
259 |
"use_carefully": "can be unflattering for portraits"
|
260 |
}
|
261 |
}
|
262 |
-
}
|
263 |
# =====================================================
|
264 |
# PARTE 2: REGLAS DE COMPOSICIÓN Y TÉCNICAS AVANZADAS
|
265 |
# =====================================================
|
@@ -497,7 +497,7 @@ EXPERT_PHOTOGRAPHY_KNOWLEDGE = {
|
|
497 |
"shutter_speed": "1/4s - 2s typically",
|
498 |
"applications": ["creative landscapes", "abstract art", "impressionistic effects"]
|
499 |
}
|
500 |
-
}
|
501 |
# =====================================================
|
502 |
# PARTE 3: CONFIGURACIONES ISO Y CONDICIONES DE LUZ
|
503 |
# =====================================================
|
@@ -796,81 +796,81 @@ class ProfessionalPhotoAnalyzer:
|
|
796 |
|
797 |
return ", ".join(context_parts)
|
798 |
def _generate_professional_insight(self, scene_type: str, lighting_conditions: Dict[str, Any]) -> str:
|
799 |
-
|
800 |
-
|
801 |
-
insights = []
|
802 |
-
|
803 |
-
# Scene-specific professional insights
|
804 |
-
if scene_type == "portrait_studio":
|
805 |
-
insights.append("Professional studio portraiture requires precise lighting control")
|
806 |
-
insights.append("3-point lighting setup ensures dimensional modeling of facial features")
|
807 |
-
elif scene_type == "portrait_exterior":
|
808 |
-
insights.append("Natural light portraiture benefits from soft, directional lighting")
|
809 |
-
insights.append("Golden hour provides optimal warmth and flattering illumination")
|
810 |
-
elif scene_type == "street_photography":
|
811 |
-
insights.append("Street photography requires anticipation and quick technical adaptation")
|
812 |
-
insights.append("Available light mastery is essential for authentic documentary capture")
|
813 |
-
elif scene_type == "landscape":
|
814 |
-
insights.append("Landscape photography demands patience for optimal natural lighting")
|
815 |
-
insights.append("Hyperfocal distance technique maximizes front-to-back sharpness")
|
816 |
-
elif scene_type == "architecture":
|
817 |
-
insights.append("Architectural photography emphasizes form, texture, and geometric precision")
|
818 |
-
insights.append("Side lighting reveals dimensional qualities and surface textures")
|
819 |
-
|
820 |
-
# Lighting-specific insights
|
821 |
-
if lighting_conditions["type"] == "studio":
|
822 |
-
insights.append("Controlled studio environment allows precise mood and contrast control")
|
823 |
-
elif lighting_conditions["type"] == "natural":
|
824 |
-
insights.append("Natural lighting varies continuously, requiring adaptive technical approach")
|
825 |
-
elif lighting_conditions["type"] == "low_light":
|
826 |
-
insights.append("Low light conditions demand technical precision and creative interpretation")
|
827 |
-
|
828 |
-
return ". ".join(insights)
|
829 |
|
830 |
-
|
831 |
-
"""
|
832 |
-
Main method: Generate professional photography context for BAGEL enhancement
|
833 |
-
NON-INVASIVE: Provides guidance without overriding BAGEL's creativity
|
834 |
-
"""
|
835 |
-
|
836 |
-
# Analyze the image description from BAGEL
|
837 |
-
scene_type = self.detect_scene_type(bagel_description)
|
838 |
-
lighting_conditions = self.analyze_lighting_conditions(bagel_description)
|
839 |
-
composition_guidance = self.get_composition_guidance(scene_type, bagel_description)
|
840 |
-
technical_context = self.get_technical_context(scene_type, lighting_conditions)
|
841 |
-
|
842 |
-
enhanced_context = {
|
843 |
-
"scene_type": scene_type,
|
844 |
-
"lighting_analysis": lighting_conditions,
|
845 |
-
"technical_context": technical_context,
|
846 |
-
"composition_guidance": composition_guidance,
|
847 |
-
"professional_insight": self._generate_professional_insight(scene_type, lighting_conditions),
|
848 |
-
"equipment_recommendation": self.get_camera_recommendations(scene_type, lighting_conditions)
|
849 |
-
}
|
850 |
-
|
851 |
-
return enhanced_context
|
852 |
|
853 |
-
|
854 |
-
|
855 |
-
|
856 |
-
""
|
857 |
-
|
858 |
-
|
859 |
-
|
860 |
-
|
861 |
-
|
862 |
-
|
863 |
-
|
864 |
-
|
865 |
-
|
866 |
-
|
867 |
-
|
868 |
-
|
869 |
-
|
870 |
-
|
871 |
-
|
872 |
-
|
873 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
874 |
|
875 |
|
876 |
# =====================================================
|
|
|
259 |
"use_carefully": "can be unflattering for portraits"
|
260 |
}
|
261 |
}
|
262 |
+
},
|
263 |
# =====================================================
|
264 |
# PARTE 2: REGLAS DE COMPOSICIÓN Y TÉCNICAS AVANZADAS
|
265 |
# =====================================================
|
|
|
497 |
"shutter_speed": "1/4s - 2s typically",
|
498 |
"applications": ["creative landscapes", "abstract art", "impressionistic effects"]
|
499 |
}
|
500 |
+
},
|
501 |
# =====================================================
|
502 |
# PARTE 3: CONFIGURACIONES ISO Y CONDICIONES DE LUZ
|
503 |
# =====================================================
|
|
|
796 |
|
797 |
return ", ".join(context_parts)
|
798 |
def _generate_professional_insight(self, scene_type: str, lighting_conditions: Dict[str, Any]) -> str:
|
799 |
+
"""Generate professional photography insight based on scene and lighting"""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
800 |
|
801 |
+
insights = []
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
802 |
|
803 |
+
# Scene-specific professional insights
|
804 |
+
if scene_type == "portrait_studio":
|
805 |
+
insights.append("Professional studio portraiture requires precise lighting control")
|
806 |
+
insights.append("3-point lighting setup ensures dimensional modeling of facial features")
|
807 |
+
elif scene_type == "portrait_exterior":
|
808 |
+
insights.append("Natural light portraiture benefits from soft, directional lighting")
|
809 |
+
insights.append("Golden hour provides optimal warmth and flattering illumination")
|
810 |
+
elif scene_type == "street_photography":
|
811 |
+
insights.append("Street photography requires anticipation and quick technical adaptation")
|
812 |
+
insights.append("Available light mastery is essential for authentic documentary capture")
|
813 |
+
elif scene_type == "landscape":
|
814 |
+
insights.append("Landscape photography demands patience for optimal natural lighting")
|
815 |
+
insights.append("Hyperfocal distance technique maximizes front-to-back sharpness")
|
816 |
+
elif scene_type == "architecture":
|
817 |
+
insights.append("Architectural photography emphasizes form, texture, and geometric precision")
|
818 |
+
insights.append("Side lighting reveals dimensional qualities and surface textures")
|
819 |
+
|
820 |
+
# Lighting-specific insights
|
821 |
+
if lighting_conditions["type"] == "studio":
|
822 |
+
insights.append("Controlled studio environment allows precise mood and contrast control")
|
823 |
+
elif lighting_conditions["type"] == "natural":
|
824 |
+
insights.append("Natural lighting varies continuously, requiring adaptive technical approach")
|
825 |
+
elif lighting_conditions["type"] == "low_light":
|
826 |
+
insights.append("Low light conditions demand technical precision and creative interpretation")
|
827 |
+
|
828 |
+
return ". ".join(insights)
|
829 |
+
|
830 |
+
def generate_enhanced_context(self, bagel_description: str) -> Dict[str, Any]:
|
831 |
+
"""
|
832 |
+
Main method: Generate professional photography context for BAGEL enhancement
|
833 |
+
NON-INVASIVE: Provides guidance without overriding BAGEL's creativity
|
834 |
+
"""
|
835 |
+
|
836 |
+
# Analyze the image description from BAGEL
|
837 |
+
scene_type = self.detect_scene_type(bagel_description)
|
838 |
+
lighting_conditions = self.analyze_lighting_conditions(bagel_description)
|
839 |
+
composition_guidance = self.get_composition_guidance(scene_type, bagel_description)
|
840 |
+
technical_context = self.get_technical_context(scene_type, lighting_conditions)
|
841 |
+
|
842 |
+
enhanced_context = {
|
843 |
+
"scene_type": scene_type,
|
844 |
+
"lighting_analysis": lighting_conditions,
|
845 |
+
"technical_context": technical_context,
|
846 |
+
"composition_guidance": composition_guidance,
|
847 |
+
"professional_insight": self._generate_professional_insight(scene_type, lighting_conditions),
|
848 |
+
"equipment_recommendation": self.get_camera_recommendations(scene_type, lighting_conditions)
|
849 |
+
}
|
850 |
+
|
851 |
+
return enhanced_context
|
852 |
+
|
853 |
+
def format_bagel_enhancement_prompt(self, base_prompt: str, enhanced_context: Dict[str, Any]) -> str:
|
854 |
+
"""
|
855 |
+
Format enhanced prompt for BAGEL while preserving its creative freedom
|
856 |
+
"""
|
857 |
+
|
858 |
+
context_guidance = f"""
|
859 |
+
|
860 |
+
PROFESSIONAL PHOTOGRAPHY CONTEXT:
|
861 |
+
Scene Type: {enhanced_context['scene_type'].replace('_', ' ').title()}
|
862 |
+
Technical Setup: {enhanced_context['technical_context']}
|
863 |
+
|
864 |
+
COMPOSITION CONSIDERATIONS:
|
865 |
+
{' • '.join(enhanced_context['composition_guidance'])}
|
866 |
+
|
867 |
+
PROFESSIONAL INSIGHT:
|
868 |
+
{enhanced_context['professional_insight']}
|
869 |
+
|
870 |
+
Apply these principles flexibly to enhance your creative analysis.
|
871 |
+
"""
|
872 |
+
|
873 |
+
return base_prompt + context_guidance
|
874 |
|
875 |
|
876 |
# =====================================================
|