{"id":50913207,"url":"https://github.com/mark0011astra/aesthetics-predictor-web","last_synced_at":"2026-06-16T12:02:28.179Z","repository":{"id":355433697,"uuid":"1228065897","full_name":"mark0011astra/aesthetics-predictor-web","owner":"mark0011astra","description":"Local web app for scoring and ranking image aesthetics with LAION and CLIP-based models","archived":false,"fork":false,"pushed_at":"2026-05-03T15:03:48.000Z","size":52,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-03T17:09:37.833Z","etag":null,"topics":["computer-vision","fastapi","machine-learning","open-clip","pytorch","react","typescript","vite"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mark0011astra.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-03T14:50:11.000Z","updated_at":"2026-05-03T15:03:52.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/mark0011astra/aesthetics-predictor-web","commit_stats":null,"previous_names":["mark0011astra/aesthetics-predictor-web"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/mark0011astra/aesthetics-predictor-web","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mark0011astra%2Faesthetics-predictor-web","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mark0011astra%2Faesthetics-predictor-web/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mark0011astra%2Faesthetics-predictor-web/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mark0011astra%2Faesthetics-predictor-web/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mark0011astra","download_url":"https://codeload.github.com/mark0011astra/aesthetics-predictor-web/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mark0011astra%2Faesthetics-predictor-web/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34404748,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-16T02:00:06.860Z","response_time":126,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["computer-vision","fastapi","machine-learning","open-clip","pytorch","react","typescript","vite"],"created_at":"2026-06-16T12:02:26.424Z","updated_at":"2026-06-16T12:02:28.172Z","avatar_url":"https://github.com/mark0011astra.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Aesthetics Predictor Web App\n\nローカルで画像の美的スコアを推定し、複数画像をスコア順に並び替えたり、色変更バリエーションを比較したりする実験用Webアプリです。\n\nThis is a local experimental web app for estimating image aesthetics, ranking multiple images by score, and comparing color-adjusted variants.\n\n## Aesthetics Predictor が返すもの / What the Predictor Returns\n\nこのアプリでは、Aesthetics Predictor を「画像から抽出した CLIP 埋め込みをもとに、人間評価に近い美的スコアを返すモデル」として扱います。値が高いほど、モデルが学習した平均的な嗜好に照らして美的と推定されます。\n\nIn this app, Aesthetics Predictor is treated as a model that returns a human-like aesthetic score based on CLIP embeddings extracted from the image. Higher values indicate a stronger match with the model's learned average preferences.\n\nLAION 系スコアは元モデルの `0-10` を `0-5` に換算して扱います。別 CLIP 系の `rsinema/aesthetic-scorer` が利用できる場合は、次の個別項目も `0-5` で返します。\n\nLAION-style scores are converted from the original `0-10` range to `0-5`. If the CLIP-based `rsinema/aesthetic-scorer` model is available, the app also returns these per-metric scores on the same `0-5` scale.\n\n- `overall`\n- `quality`\n- `composition`\n- `lighting`\n- `color`\n- `depthOfField`\n- `content`\n\nランキングは、LAION 換算点と各個別項目の平均である `total` を標準にしています。加えて、ばらつきが大きい画像を少し下げる `balanced`、低い項目を強く反映する調和平均 `harmonic` でも並び替えできます。UI の「並び替え」から、合計点、数学的指標、各個別項目を切り替えられます。\n\nThe default ranking uses `total`, which is the mean of the normalized LAION score and the individual metrics. You can also sort by `balanced`, which slightly penalizes uneven scores, and `harmonic`, which emphasizes weak metrics through the harmonic mean. The UI sort control lets you switch between total score, mathematical indices, and individual metrics.\n\nこれは絶対的な美しさの判定ではありません。文化、用途、個人の好み、画像ジャンルによって評価は変わるため、UIではスコアと順位を主役にし、しきい値以上の場合だけ補助的に「美しい」ラベルを出します。\n\nThis is not an absolute beauty judgment. Evaluations vary by culture, use case, personal taste, and image category, so the UI centers score and rank, and only shows a supplemental \"beautiful\" label above the threshold.\n\n### 三分割色探索 / Three-Band Color Search\n\n1000×1000 の正方形を縦に 3 分割した synthetic image を作り、RGB パレット 13 色の全組み合わせを exhaustive に評価します。合計 2197 通りの組み合わせをスコア順に並べ、進捗と特徴量を見ながら上位だけを表示します。\n\nThe app also generates a synthetic 1000×1000 square split vertically into 3 bands and exhaustively evaluates every combination from a 13-color RGB palette. That is 2197 total combinations, ranked by score, with progress and feature visualizations shown alongside the top results.\n\n## 構成 / Structure\n\n- `backend/`: FastAPI API。画像検証、スコアリング、ランキング、色変更探索を担当します。/ FastAPI API for image validation, scoring, ranking, and color exploration.\n- `frontend/`: Vite + React + TypeScript UI。アップロード、進捗、ランキング、しきい値、色探索グリッドを提供します。/ Vite + React + TypeScript UI for uploads, progress, ranking, threshold control, and color exploration grids.\n\n## セットアップ / Setup\n\n### Backend\n\nPython 3.12 を推奨します。Python 3.13 では PyTorch 系依存が不安定な場合があります。\n\nPython 3.12 is recommended. PyTorch-related dependencies can be unstable on Python 3.13.\n\n```bash\ncd backend\npython -m venv .venv\nsource .venv/bin/activate\npip install -r requirements.txt\nuvicorn app.main:app --reload --port 8000\n```\n\nWindows PowerShell:\n\n```powershell\ncd backend\npy -3.12 -m venv .venv\n.\\.venv\\Scripts\\Activate.ps1\npip install -r requirements.txt\nuvicorn app.main:app --reload --port 8000\n```\n\n初回推論時に CLIP / aesthetic predictor 関連のモデルファイルをローカルキャッシュへ取得します。モデルが取得できない場合、APIは偽スコアを返さず明示エラーを返します。\n\nOn the first inference run, the app downloads the CLIP / aesthetic predictor model files into a local cache. If the model cannot be fetched, the API returns an explicit error instead of a fake score.\n\n### Frontend\n\n```bash\ncd frontend\nnpm install\nnpm run dev\n```\n\nブラウザで `http://localhost:5173` を開きます。\n\nOpen `http://localhost:5173` in your browser.\n\n## テスト / Tests\n\n```bash\ncd backend\npytest\n```\n\n```bash\ncd frontend\nnpm test\nnpm run build\n```\n\n## License / ライセンス\n\nMIT License. See [LICENSE](./LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmark0011astra%2Faesthetics-predictor-web","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmark0011astra%2Faesthetics-predictor-web","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmark0011astra%2Faesthetics-predictor-web/lists"}