21 #include "allheaders.h" 46 if (fp->
FWrite(&shape_,
sizeof(shape_), 1) != 1)
return false;
52 return fp->
FReadEndian(&shape_,
sizeof(shape_), 1) == 1;
65 cached_x_scale_ = factor;
81 tprintf(
"Input::Backward should not be called!!\n");
90 const Network* network,
int min_width,
91 TRand* randomizer,
float* image_scale) {
95 Pix* pix = image_data.
PreScale(target_height, kMaxInputHeight, image_scale,
96 &width, &height,
nullptr);
98 tprintf(
"Bad pix from ImageData!\n");
101 if (width <= min_width || height < min_width) {
102 tprintf(
"Image too small to scale!! (%dx%d vs min width of %d)\n", width,
119 bool color = shape.
depth() == 3;
120 Pix* var_pix =
const_cast<Pix*
>(pix);
121 int depth = pixGetDepth(var_pix);
122 Pix* normed_pix =
nullptr;
128 normed_pix = pixClone(var_pix);
130 normed_pix = pixConvertTo32(var_pix);
134 normed_pix = pixClone(var_pix);
136 normed_pix = pixConvertTo8(var_pix,
false);
138 int height = pixGetHeight(normed_pix);
139 int target_height = shape.
height();
140 if (target_height == 1) target_height = shape.
depth();
141 if (target_height == 0) target_height = height;
142 float im_factor =
static_cast<float>(target_height) / height;
143 if (im_factor != 1.0f) {
145 Pix* scaled_pix = pixScale(normed_pix, im_factor, im_factor);
146 pixDestroy(&normed_pix);
147 normed_pix = scaled_pix;
149 input->
FromPix(shape, normed_pix, randomizer);
150 pixDestroy(&normed_pix);
Pix * PreScale(int target_height, int max_height, float *scale_factor, int *scaled_width, int *scaled_height, GenericVector< TBOX > *boxes) const
virtual bool Backward(bool debug, const NetworkIO &fwd_deltas, NetworkScratch *scratch, NetworkIO *back_deltas)
const int kMaxInputHeight
void FromPix(const StaticShape &shape, const Pix *pix, TRand *randomizer)
static void PreparePixInput(const StaticShape &shape, const Pix *pix, TRand *randomizer, NetworkIO *input)
static Pix * PrepareLSTMInputs(const ImageData &image_data, const Network *network, int min_width, TRand *randomizer, float *image_scale)
virtual bool DeSerialize(TFile *fp)
int FReadEndian(void *buffer, int size, int count)
virtual int XScaleFactor() const
Input(const STRING &name, int ni, int no)
virtual void CacheXScaleFactor(int factor)
virtual bool Serialize(TFile *fp) const
int FWrite(const void *buffer, int size, int count)
const STRING & name() const
virtual void Forward(bool debug, const NetworkIO &input, const TransposedArray *input_transpose, NetworkScratch *scratch, NetworkIO *output)
virtual bool Serialize(TFile *fp) const