22 #ifndef QUERY_TYPES_H_
23 #define QUERY_TYPES_H_
29 #include <cereal/types/array.hpp>
30 #include <cereal/types/set.hpp>
31 #include <cereal/types/variant.hpp>
51 for (
size_t i{ 0 }; i < 7; ++i) {
62 template <
class Archive>
79 template <
class Archive>
96 template <
class Archive>
124 do_assert(num_parts == 2,
"Must be 2 intervals.");
125 do_assert(num_total_frames >= 2,
"At least 2 frames to it.");
127 auto base_size{ num_total_frames / num_parts };
128 auto rem{ num_total_frames % num_parts };
134 template <
class Archive>
146 template <
class Archive>
181 template <
class Archive>
219 std::vector<std::uint8_t>&& _data)
247 {
"width_pixels",
static_cast<int>(
_width) },
248 {
"height_pixels",
static_cast<int>(
_height) } };
253 template <
class Archive>
262 os <<
"---------------------------------" << std::endl;
263 os <<
"CanvasSubqueryBitmap: " << std::endl;
264 os <<
"---" << std::endl;
270 <<
"._height = (" << x.
_height << std::endl;
272 <<
"._width = (" << x.
_width << std::endl;
294 template <
class Archive>
307 os <<
"---------------------------------" << std::endl;
308 os <<
"CanvasSubqueryText: " << std::endl;
309 os <<
"---" << std::endl;
315 <<
"._text_query = (" << x.
_text_query << std::endl;
334 uint8_t* bitmap_RGBA_data);
342 auto r = std::visit(
overloaded{ [](
auto q) {
return q.empty(); } }, q);
358 template <
class Archive>
363 nlohmann::json
to_JSON()
const;
369 static std::vector<CanvasQuery>
parse_json(
const std::string& filepath);
373 const std::filesystem::path parentPath);
376 if (b.
size() !=
size())
return false;
378 for (
size_t i = 0; i <
size(); ++i) {
382 if (std::holds_alternative<CanvasSubqueryText>(s1) && std::holds_alternative<CanvasSubqueryText>(s2)) {
383 auto&& s1t = std::get<CanvasSubqueryText>(s1);
384 auto&& s2t = std::get<CanvasSubqueryText>(s2);
385 if (s1t != s2t)
return false;
386 }
else if (std::holds_alternative<CanvasSubqueryBitmap>(s1) &&
387 std::holds_alternative<CanvasSubqueryBitmap>(s2)) {
388 auto&& s1b = std::get<CanvasSubqueryBitmap>(s1);
389 auto&& s2b = std::get<CanvasSubqueryBitmap>(s2);
390 if (s1b != s2b)
return false;
426 return std::holds_alternative<CanvasSubqueryBitmap>(sqs.front());
432 return std::holds_alternative<CanvasSubqueryText>(sqs.front());
435 template <
class Archive>
447 nlohmann::json o = nlohmann::json::object();
452 if (
relocation != ERR_VAL<RelocationQuery>()) {
455 o[
"relocation"] =
nullptr;
474 template <
typename QueryType>
476 for (
auto&& q : temp_queries) {
487 if (t.is_relocation())
return true;
496 q.score_secondary(new_value);
506 if (q.empty())
return true;
515 for (
auto&& t : ts) {
516 targets.emplace_back(t.frame_ID);
526 const auto& sqs{ tq.canvas.subqueries() };
527 std::string text{ tq.textual };
528 for (
size_t idx{ 0 }; idx < sqs.size(); ++idx) {
529 const auto& sq{ sqs[idx] };
531 if (!std::holds_alternative<CanvasSubqueryText>(sq)) {
536 text.append(
" [").append(s.query()).append(
"] ");
539 text2.append(text).append(
" >> ");
543 if (text2.length() > 0) {
555 std::cout <<
">>> DECAY TEMPORAL TEXT: " << std::endl;
559 std::cout <<
">>> DECAY TEXT CANVAS: " << std::endl;
563 const auto& sqs{ tq.canvas.subqueries() };
565 for (
size_t idx{ 0 }; idx < sqs.size(); ++idx) {
566 const auto& sq{ sqs[idx] };
569 text.append(s.query()).append(
" ");
575 std::cout <<
">>> DECAY BITMAP CANVAS: " << std::endl;
578 for (
size_t idx{ 0 }; idx < sqs.size(); ++idx) {
579 auto& sq{ sqs[idx] };
586 std::cout <<
">>> DECAY RELOCATION: " << std::endl;
588 tq.relocation = ERR_VAL<FrameId>();
594 nlohmann::json
to_JSON()
const;
596 template <
class Archive>
Type representing query related to the canvas (atm text & bitmap) rectangles.
Definition: query-types.h:325
static std::vector< CanvasQuery > parse_json(const std::string &filepath)
Parses JSON file created by to_JSON.
Definition: query-types.cpp:115
const CanvasSubquery & operator[](size_t idx) const
Definition: query-types.h:366
CanvasSubquery & operator[](size_t idx)
Definition: query-types.h:365
void emplace_back(const RelativeRect &rect, const std::string &text_query)
Emplace new subregion TEXT query.
Definition: query-types.cpp:123
std::vector< CanvasSubquery > _subqueries
Subregion queries.
Definition: query-types.h:401
const std::vector< CanvasSubquery > & subqueries() const
Definition: query-types.h:348
void serialize(Archive &archive)
This allows portable binary serialization of Collage instances to files.
Definition: query-types.h:359
bool empty() const
Definition: query-types.h:337
std::vector< CanvasSubquery > & subqueries()
Definition: query-types.h:349
size_t size() const
Definition: query-types.h:336
nlohmann::json to_JSON() const
Definition: query-types.cpp:67
bool operator==(const CanvasQuery &b) const
Definition: query-types.h:375
static std::vector< CanvasQuery > parse_json_contents(const std::string &contents, const std::filesystem::path parentPath)
Parses JSON string created by to_JSON.
Definition: query-types.cpp:79
Definition: query-types.h:191
CanvasSubqueryBase()=default
CanvasSubqueryBase(const RelativeRect &rect)
Definition: query-types.h:197
const RelativeRect & rect() const
Definition: query-types.h:202
RelativeRect _rect
Definition: query-types.h:193
void unposition()
Set canvas positioned query as if they were across the whole canvas.
Definition: query-types.h:200
Definition: query-types.h:205
size_t _width
Definition: query-types.h:207
const std::vector< uint8_t > & data() const
Definition: query-types.h:232
CanvasSubqueryBitmap()=default
CanvasSubqueryBitmap(const RelativeRect &rect, size_t bitmap_w, size_t bitmap_h, size_t num_channels, std::vector< std::uint8_t > &&_data)
Definition: query-types.h:218
friend std::ostream & operator<<(std::ofstream &os, CanvasSubqueryBitmap x)
Definition: query-types.h:261
nlohmann::json to_JSON() const
Definition: query-types.h:244
std::string jpeg_filename
Definition: query-types.h:212
std::vector< uint8_t > & data()
Definition: query-types.h:231
size_t height_pixels() const
Definition: query-types.h:230
bool empty() const
Definition: query-types.h:233
size_t width_pixels() const
Definition: query-types.h:229
std::vector< uint8_t > _data_int
Definition: query-types.h:209
size_t _height
Definition: query-types.h:208
std::vector< uint8_t > get_scaled_bitmap(size_t w, size_t h) const
Definition: query-types.cpp:63
size_t num_channels() const
Definition: query-types.h:228
bool operator==(const CanvasSubqueryBitmap &b) const
Definition: query-types.h:239
size_t _num_channels
Definition: query-types.h:206
bool operator!=(const CanvasSubqueryBitmap &b) const
Definition: query-types.h:237
void serialize(Archive &archive)
Definition: query-types.h:254
Definition: query-types.h:277
bool operator!=(const CanvasSubqueryText &b) const
Definition: query-types.h:299
const TextualQuery & query() const
Definition: query-types.h:285
friend std::ostream & operator<<(std::ofstream &os, CanvasSubqueryText x)
Definition: query-types.h:306
void serialize(Archive &archive)
Definition: query-types.h:295
CanvasSubqueryText(const RelativeRect &rect, const TextualQuery &query)
Definition: query-types.h:282
bool operator==(const CanvasSubqueryText &b) const
Definition: query-types.h:301
bool empty() const
Definition: query-types.h:286
TextualQuery _text_query
Definition: query-types.h:278
CanvasSubqueryText()=default
nlohmann::json to_JSON() const
Definition: query-types.h:288
Container for information about days filtering.
Definition: query-types.h:41
bool & operator[](size_t i)
Definition: query-types.h:58
WeekDaysFilter()
Default state is all dayes.
Definition: query-types.h:46
void serialize(Archive &archive)
Definition: query-types.h:63
bool operator==(const WeekDaysFilter &other) const
Definition: query-types.h:60
std::array< bool, 7 > _days
Definition: query-types.h:42
WeekDaysFilter(uint8_t mask)
Construct from the bit mask.
Definition: query-types.h:49
const bool & operator[](size_t i) const
Definition: query-types.h:56
std::string trim(const std::string &s)
Trim.
Definition: utils.hpp:350
T_ irand(T_ from, T_ to)
Returns a pseudorandom integral number sampled from the uniform distribution [from,...
Definition: utils.hpp:170
int64_t timestamp()
Returns the actual UNIX timestamp (ms).
Definition: utils.hpp:87
bool is_set(T_ mask, size_t i)
Tests whether the i-th lowest significant bit is set.
Definition: utils.hpp:221
Definition: common-types.h:33
std::variant< PlainTextBenchmarkQuery > BenchmarkQuery
Definition: query-types.h:628
std::ostream & operator<<(std::ofstream &os, CanvasSubqueryBitmap x)
Definition: query-types.h:261
uint8_t Hour
Definition: common-types.h:243
FrameId RelocationQuery
Definition: query-types.h:157
uint16_t Year
Definition: common-types.h:244
constexpr T_ ERR_VAL()
Value indicating error/invalid/"NULL" value for the given type.
Definition: common-types.h:98
std::set< FrameId > LikesCont
Definition: common-types.h:86
std::string TextualQuery
Definition: query-types.h:155
LikesCont RelevanceFeedbackQuery
Definition: query-types.h:153
std::variant< CanvasSubqueryBitmap, CanvasSubqueryText > CanvasSubquery
Definition: query-types.h:320
unsigned long FrameId
Definition: common-types.h:75
#define do_assert_debug(assertion, msg)
Assert execuded only if RUN_ASSERTS is true.
Definition: static-logger.hpp:225
#define do_assert(assertion, msg)
Assert execuded at all times.
Definition: static-logger.hpp:210
Definition: query-types.h:616
std::vector< FrameId > targets
Definition: query-types.h:617
Definition: query-types.h:624
std::vector< CanvasQuery > canvas_query
Definition: query-types.h:625
Container for all the available filters for the rescore.
Definition: query-types.h:103
std::pair< FrameId, FrameId > get_dataset_parts_valid_interval(std::size_t num_total_frames) const
Based on dataset_parts it returns the allowed frame IDs.
Definition: query-types.h:122
void serialize(Archive &archive)
Definition: query-types.h:135
WeekDaysFilter days
Definition: query-types.h:106
bool operator!=(const Filters &other) const
Definition: query-types.h:114
bool is_default() const
Definition: query-types.h:116
std::vector< bool > dataset_parts
Definition: query-types.h:107
YearFilter years
Definition: query-types.h:105
TimeFilter time
Definition: query-types.h:104
bool operator==(const Filters &other) const
Definition: query-types.h:109
Definition: query-types.h:620
std::vector< TextualQuery > text_query
Definition: query-types.h:621
The type representing the whole query.
Definition: query-types.h:470
nlohmann::json to_JSON() const
Definition: query-types.cpp:34
std::vector< FrameId > targets
Definition: query-types.h:610
void serialize(Archive &archive)
Definition: query-types.h:597
const std::vector< TemporalQuery > & queries() const
Definition: query-types.h:511
void set_targets(const std::vector< VideoFrame > &ts)
Definition: query-types.h:513
void score_secondary(bool new_value)
Definition: query-types.h:493
const bool is_temporal_text() const
Definition: query-types.h:502
RelevanceFeedbackQuery relevance_feeedback
Definition: query-types.h:608
Filters filters
Definition: query-types.h:607
void transform_to_no_pos_queries()
Definition: query-types.h:553
const bool is_canvas() const
Definition: query-types.h:499
bool is_save
Definition: query-types.h:612
const bool is_text_canvas() const
Definition: query-types.h:501
std::string get_plain_text_query() const
Definition: query-types.h:520
const bool empty() const
Definition: query-types.h:504
const bool is_bitmap_canvas() const
Definition: query-types.h:500
std::vector< TemporalQuery > temporal_queries
Definition: query-types.h:609
RescoreMetadata metadata
Definition: query-types.h:606
const bool is_text() const
Definition: query-types.h:503
const bool score_secondary() const
Definition: query-types.h:492
bool _score_secondary
Definition: query-types.h:613
Query(const std::vector< QueryType > &temp_queries)
Definition: query-types.h:475
const bool is_relocation() const
Definition: query-types.h:485
Definition: query-types.h:159
float left
Distances from the given edge (e.g.
Definition: query-types.h:161
bool operator==(const RelativeRect &b) const
Definition: query-types.h:186
float width_norm() const
Definition: query-types.h:171
float height_norm() const
Definition: query-types.h:176
void serialize(Archive &archive)
Definition: query-types.h:182
void to_full()
Set rectangle to cover everything.
Definition: query-types.h:164
float top
Definition: query-types.h:161
float bottom
Definition: query-types.h:161
float right
Definition: query-types.h:161
Definition: query-types.h:404
const bool is_text() const
Definition: query-types.h:418
TemporalQuery(TextualQuery tq, CanvasQuery cq, RelocationQuery rq)
Definition: query-types.h:411
RelocationQuery relocation
Definition: query-types.h:465
CanvasQuery canvas
Definition: query-types.h:464
const bool is_bitmap_canvas() const
Definition: query-types.h:422
void serialize(Archive &archive)
Definition: query-types.h:436
void score_secondary(bool new_value)
Definition: query-types.h:415
const bool is_text_canvas() const
Definition: query-types.h:428
bool _score_secondary
Definition: query-types.h:466
nlohmann::json to_JSON() const
Definition: query-types.h:446
const bool is_relocation() const
Definition: query-types.h:416
TextualQuery textual
Definition: query-types.h:463
TemporalQuery(CanvasQuery cq)
Definition: query-types.h:409
TemporalQuery(RelocationQuery rq)
Definition: query-types.h:410
const bool empty() const
Definition: query-types.h:419
bool operator==(const TemporalQuery &b) const
Definition: query-types.h:441
bool score_secondary() const
Definition: query-types.h:414
const bool is_canvas() const
Definition: query-types.h:417
TemporalQuery()
Definition: query-types.h:407
TemporalQuery(TextualQuery tq)
Definition: query-types.h:408
Container for information about time filtering.
Definition: query-types.h:69
Hour to
Definition: query-types.h:71
Hour from
Definition: query-types.h:70
TimeFilter(Hour from, Hour to)
Definition: query-types.h:75
void serialize(Archive &archive)
Definition: query-types.h:80
TimeFilter()
Default state is the whole day.
Definition: query-types.h:74
bool operator==(const TimeFilter &other) const
Definition: query-types.h:77
Container for information about time filtering.
Definition: query-types.h:86
YearFilter()
Default state is interval [2000, 2021].
Definition: query-types.h:91
bool operator==(const YearFilter &other) const
Definition: query-types.h:94
void serialize(Archive &archive)
Definition: query-types.h:97
Year from
Definition: query-types.h:87
Year to
Definition: query-types.h:88
YearFilter(Year from, Year to)
Definition: query-types.h:92