私の職場では、2週間のコードの課題があり、いくつかの制約を前提として、100のサンプルボブロスの絵を可能な限り忠実に再現するアルゴリズムを作成する必要があります。
- 「ペイント」は、背景色と一連の「ブラシストローク」を含むJSONファイルとして送信されます。
- ブラシストロークには、始点、終点、半径、および色があります。
- 絵ごとに500ストロークの制限があります。
- 100枚すべての参考絵画は、サイズとアスペクト比がまったく同じです:450x337。
サーバーは各送信を「ペイント」してから、参照ペイントを使用してピクセルごとの差分を行います。提出された絵画の各ピクセルは、ソースピクセルの値との類似性に基づいてスカラー0〜1の範囲でスコア付けされ、絵画のスコアはすべてのピクセルスコアの平均です。コンテストを実行している人々は、MacOS / Linuxのコマンドラインで実行できる画像の描画とスコアリングの両方のためのライブラリをリリースしました。
アルゴリズムが試行する各試行のきめ細かいスコアリングのメカニズムがあるため、この問題はMLの影響を受けやすいはずです。絵画の生成と採点には、約200ミリ秒しかかかりません。残念ながら、私はほとんどがMLファンであり(多くのポッドキャストを聴いています)、問題をどのようにモデル化すればよいかわかりません。
アルゴリズムで500の完全にランダムなストロークを作成し、出力を段階的に調整すると、有用なものに収束するのに永久に時間がかかります。(ペイントを開始する前にヒストグラムを実行して)ストロークのカラースペースを各ペイントで最も頻繁に使用される64色のセットに制限し、アルゴリズムのブラシサイズの選択を制限することを検討しました。
参考までに、最も一般的な色のベタフィールドである画像を送信しただけで、65%のスコアが得られました。現在勝っているアルゴリズムは、ほとんどの場合、絵画をグリッドに変換し、それぞれの上に各セクターの平均色のドットを配置するだけです。